以äžã§è°è«ãããããšãæ確ã«ããããã«-å°ããªå©ãïŒ
- Quarta Technologiesã¯ãåºæ¬çãªITã€ã³ãã©ã¹ãã©ã¯ãã£ã®åéã«ããããœãªã¥ãŒã·ã§ã³ã®ãããã€ããŒã§ãããMicrosoft Windows Embeddedã«åºã¥ãçµã¿èŸŒã¿ã·ã¹ãã ã®ãã¯ãããžãŒã«é¢ããå®å šãªæ å ±ããã³æè¡ãµããŒãã®åéã§ãã·ã¢ã®ITåžå Žã®ãªãŒããŒã§ãã
- TechnoComã¯ã茞éãç£æ¥ã蟲æ¥ã®ããããäŒæ¥ãç£æ¥åãã«ã茞éã人å¡ãçæå¶åŸ¡ã»ã³ãµãŒããœãããŠã§ã¢ã®è¡æç£èŠçšã®GLONASS / GPSã·ã¹ãã ã®éçºãšçç£ã«åãçµãã§ããŸãã å瀟ã®æãæåãªè£œåã¯ãAvtoGRAFã·ãªãŒãºã®ããã²ãŒã·ã§ã³ç«¯æ«ã§ãã
- iQFrââeezeã¯ã貚ç©ãšèŒžéã®ç¶æ ã«é¢ããæ å ±ããªã¢ã«ã¿ã€ã ã§åéãåŠçãéä¿¡ããQuart Technologyã®ãœãªã¥ãŒã·ã§ã³ã§ãã
åºæ¬çãªã²ãŒããŠã§ã€ãããã¿ã€ãã®äœæ
AutoGRAFã·ã¹ãã ã¯ãããŒã¿ã¢ã¯ã»ã¹ããã³åææ©èœãåããå€å žçãªã¯ã©ã€ã¢ã³ããµãŒããŒã¢ããªã±ãŒã·ã§ã³ã§ãã çŸåšã®ã¢ãŒããã¯ãã£ã¯ãæ¡åŒµã«ã³ã¹ããããããŸãã ãã®ãããã³ã©ãã¬ãŒã·ã§ã³ã®éèŠãªã¢ã€ãã¢ã¯ãã¢ãŒããã¯ãã£ãåèããSaaSã¢ãã«ã«å°ããŠã¹ã±ãŒã©ããªãã£ã®åé¡ã解決ããåžå Žã«é©æ°çãªãªãã¡ãŒãäœæãããšããè©Šã¿ã§ããã
ãããžã§ã¯ãã®éå§åã¯ãã¢ãã®ã€ã³ã¿ãŒãããã®ãã©ãã€ã ã«ãããæè¡ççžäºäœçšã¯ãAzureãµãŒãã¹ãæ¢åã®ãœãããŠã§ã¢ã«çµ±åããããšã«å ããŠãè»äž¡ã«æèŒãããæ©åšããã®ããŒã¿åä¿¡ã«é¢é£ããåé¡-è¡æ端æ«ãå«ããããéåžžã«é£ããã¿ã¹ã¯ã«ãªãå¯èœæ§ãããããšã¯æããã§ãããã©ã³ã¹ããŒãAvtoGRAFã®ç£èŠïŒä»¥äžããSMT端æ«ããšåŒã³ãŸãïŒã ãããŠãé©åãªæºåã®ã¿ãã¿ã¹ã¯ãå€§å¹ ã«ç°¡çŽ åããŸãã ãã®ãããã€ãã³ãã®çŽ1ãæåã«æºåãå§ãŸããŸããã ãã®çµæãããã€ãã®éèŠãªè³ªåãè°è«ããããããã«å¯Ÿããåçãšãšãã«ä»¥äžã«ç€ºãããŸãã
ã·ã¹ãã ã¯çšŒåããŠããŸããïŒ ããã€ã¹ã®ç¶æ ã¯äœã§ãããããã€ã¹ã¯äœãããã®ããäœãç¥ããªãã®ã§ããïŒ
ä»æ¥ããã®ã·ã¹ãã ã¯æ°å¹Žéæ©èœããŠããŸãã ããŸããŸãªã¡ãŒã«ãŒ/ããŒãããŒã®è»äž¡ã§ã®äœ¿çšãç®çãšããŠãããããæ©åšã«éãããããŸãã ã»ãšãã©ãã¹ãŠã®ããã€ã¹ã¯1ã€ã®ç¹ã§é¡äŒŒããŠããŸããå°æ°ã®ããã€ã¹ã§ããã¡ãŒã ãŠã§ã¢ãå€æŽããããšã¯ãçç£çãªç°å¢ã§ã®äœæ¥ã®ããäžå¯èœã§ãã ãã®ããããã£ãŒã«ãã²ãŒããŠã§ã€ã¢ãã«ã䜿çšããïŒããã€ã¹ã®è¿ãã«ã²ãŒããŠã§ã€ãé 眮ãŸãã¯ã€ã³ã¹ããŒã«ããïŒããšã¯ã§ããŸããã
ãµãŒããŒåŽãšã®éä¿¡ã«ããã€ã¹ã䜿çšãããããã³ã«ã¯äœã§ããïŒ
ãã¯ãã³ã 瀟ã®èªç€Ÿéçºã®ãã€ããªãããã³ã«ã
é²è¡äžã®ããã»ã¹ãäžæããã«ãµãŒããŒåŽã®æ°ããããŒãžã§ã³ãäœæããå€ãããŒãžã§ã³ããããã«ãªãã€ã¬ã¯ãããããšã¯å¯èœã§ããïŒ
é£ããããæ¬ç©ã ãããããã®ãããªã¢ãããŒãã«ã¯æ·±å»ã§é·æçãªãã¹ããšéçºãå¿ èŠãªããããã®å埩ããé€å€ããããšã決å®ãããŸããã
ããã€ã¹ããªã¢ãŒãã§ç®¡çããå¿ èŠããããŸããïŒ
ããããå°æ¥ã§ã¯ãããŸãããçŸåšã§ã¯ãããŸããã
èšç»ããã»ã¹äžã«ãåéãããããŒã¿ãåŠçããããã®ã³ã³ããŒãã³ãã·ã¹ãã ãžã®è¿œå ã«é¢é£ããŠãã¿ã¹ã¯ã®ãªã¹ããæ¡åŒµããããšã決å®ãããŸããã ãããã£ãŠãçŸåšã®ã¢ããªã·ãã¯ã¢ãŒããã¯ãã£ã¯ã¢ãžã¥ãŒã«ã«åå²ãããŠããŸããã AvtoGRAFããã®çä¿¡ããŒã¿ã¹ããªãŒã ãç·šæããããããããã€ã¹ãšãã¥ã¬ãŒã·ã§ã³ã«é¢ãã質åã¯çµäºããŸããã
TCPããŒãããªãã¹ã³ããããŒã¿åŠçãµãã·ã¹ãã ã«ããŒã¿ã転éããã²ãŒããŠã§ã€ããã¹ãããããã«ã Microsoft Azureã¯ã©ãŠããµãŒãã¹ãéžæãããŸããã
ãããã¿ã€ããå®è£ ããããã«ãããŒã ã«ã¯6ã€ã®ã¿ã¹ã¯ã«5æéãš3人ã®éçºè ãããŸããã
- çŸåšã®ã¢ãŒããã¯ãã£ãè©äŸ¡ããPaaSã䜿çšããŠåèããŸãã
- ãã¹ãã²ãŒããŠã§ã€ïŒã³ã³ãœãŒã«ã¢ããªã±ãŒã·ã§ã³ïŒãå®è£ ããŠãåäœã確èªããŸãã
- ã¯ã©ãŠãã²ãŒããŠã§ã€ïŒAzure IoTã²ãŒããŠã§ã€ãã¯ã©ãŠããµãŒãã¹ãªã©ïŒãäœæããããã®æ¢åã®ãªãã·ã§ã³ãè©äŸ¡ããŸãã
- ã²ãŒããŠã§ã€ãã¯ã©ãŠãã«ç§»è¡ããŸãã
- ã²ãŒããŠã§ã€ãããŒã¿åŠçãµãã·ã¹ãã ã«æ¥ç¶ããŸãïŒã€ãŸãããã®ããã®ã³ãŒããèšè¿°ããŸãïŒã
- Application Insightsã®ç£èŠæ©èœããããã¿ã€ãã«è¿œå ããŸãã
æåã«ãã¢ããªã·ãã¯ã¢ããªã±ãŒã·ã§ã³ãã³ã³ããŒãã³ãã«åå²ããæ¹æ³ã®åé¡ã«éäžããããšã«ããŸããã
åã®ã¢ãŒããã¯ãã£
å€ãã¢ãŒããã¯ãã£ã¯ãC ++ã§èšè¿°ãããWindows Serverç°å¢ã§å®è¡ãããã¢ããªã·ãã¯ã¢ããªã±ãŒã·ã§ã³ã§ãããåŸæ¥ã®2å±€ã¢ãŒããã¯ãã£ãã¯ã©ã€ã¢ã³ã-ãµãŒããŒãã§ããã 圌ã®ä»äºã¯ãããã€ã¹ã«ã€ã³ã¹ããŒã«ãããç£èŠã·ã¹ãã ããããŒã¿ãã±ãããåä¿¡ãããããã®ãã±ãããããŒã«ã«ã¹ãã¬ãŒãžã«ä¿åããå€éšãŠãŒã¶ãŒã®ããŒã¿ã«ã¢ã¯ã»ã¹ããããã®ããã³ããšã³ãã«ãªãããšã§ããã ã¢ããªã±ãŒã·ã§ã³å ã«ã¯ããããã¯ãŒã¯ãããŒã¿ã¹ãã¬ãŒãžãããŒã¿åŸ©å·åãããã³ããŒã¿ããŒã¹ã®æäœãšããããã€ãã®ã¢ãžã¥ãŒã«ããããŸããã
ãµãŒããŒãšããã€ã¹éã®ããŒã¿ã¯ãç¬èªã®ãã€ããªTCPãããã³ã«ã䜿çšããŠéä¿¡ãããŸããã æ¥ç¶ã確ç«ããããã«ãã¯ã©ã€ã¢ã³ãã¯ãã³ãã·ã§ã€ã¯ãã±ãããéä¿¡ãããµãŒããŒã¯ããã«ç¢ºèªãã±ããã§å¿çããå¿ èŠããããŸããã
ãã®äœæ¥ã§ã¯ãã¢ããªã±ãŒã·ã§ã³ã¯äžé£ã®Win32APIã·ã¹ãã ã³ãŒã«ã䜿çšããŸããã ããŒã¿ã¯ãã¡ã€ã«ãšããŠãã€ããªåœ¢åŒã§ä¿åãããŸãã
ãã®ãããªã¹ã±ãŒãªã³ã°ã®åé¡ã¯ããµãŒããŒãªãœãŒã¹ã®å¢å /æ°ãããªãœãŒã¹ã®è¿œå ãšããŒããã©ã³ãµãŒã®ã»ããã¢ãããšä»ã®ã¿ã¹ã¯ã®å®è¡ãšãããéãããå®è£ æ¹æ³ã«ãããŸãã
建ç¯åŸ
æ°ããã¢ãŒããã¯ãã£ãé©çšããåŸãã¢ããªã±ãŒã·ã§ã³ã¯å®éã«ã¯ã²ãŒããŠã§ã€ã§ãããããã€ãã®ãµãŒãã¹ã¿ã¹ã¯ïŒããšãã°ãããŒã¿ãå€æŽããã«ä¿åããïŒãå®è¡ãããããé¢é£æ§ã倱ãããŸããã æ°ããã¢ãŒããã¯ãã£ã§ã¯ãããããã¹ãŠãAzureãµãŒãã¹ã«çœ®ãæããããŸããïŒéçºè ã¯ãAzure IoTã²ãŒããŠã§ã€ãŸãã¯ææžãã²ãŒããŠã§ã€ã®ã©ã¡ããéžæããã»ããããããè©äŸ¡ããAzure Cloud Servicesã§ãã¹ãã£ã³ã°ãã2çªç®ã®ãªãã·ã§ã³ãéžæããŸããïŒã
æ°ããã·ã¹ãã ã®æ©èœã®ååã¯ãå€ãã·ã¹ãã ã®ååãšäŒŒãŠããŸãããã¹ã±ãŒãªã³ã°ïŒèªåãå«ãïŒã®è¿œå ã®æ©äŒãæäŸããããšãã°ããŒããã©ã³ãµãŒãæ§æããããã®ã€ã³ãã©ã¹ãã©ã¯ãã£ã¿ã¹ã¯ãåé€ããŸãã ã²ãŒããŠã§ã€ãåããããã€ãã®Cloud Serviceã€ã³ã¹ã¿ã³ã¹ïŒã€ã³ã¹ã¿ã³ã¹ïŒã¯ãç¹å¥ãªããŒãã§ãªãã¹ã³ããããã€ã¹ãæ¥ç¶ããåŠçãµãã·ã¹ãã ã«ããŒã¿ã転éããŸãã
Software as a ServiceïŒSaaSïŒã¢ãã«ã䜿çšããŠããããã¿ã€ããMicrosoft Azureã¯ã©ãŠããã©ãããã©ãŒã ã«ç§»æ€ãã
å°ããªã¹ãããããå§ããŠãã¯ã©ãŠãã«ãã¹ãŠãäžåºŠã«å®è£ ããªãããšãéèŠã§ãã ã¯ã©ãŠãã«ã¯ããããã¿ã€ãã³ã°ãè€éã«ããç¬èªã®å©ç¹ãšæ©èœããããŸãïŒããšãã°ãããŒãã®ãªãŒãã³ããªã¢ãŒããããžã§ã¯ãã®ãããã°ããããã€ãªã©ïŒã ãããã£ãŠããã®å Žåãéçºã®æåã®æ®µéã¯ãã²ãŒããŠã§ã€ã®ããŒã«ã«ããŒãžã§ã³ãäœæããããšã§ããã
- ã²ãŒããŠã§ã€ã¯ãTCPããŒãã§ãªãã¹ã³ããããã€ã¹ãããã³ãã·ã§ã€ã¯ãã±ãããåä¿¡ãããšæ¥ç¶ãéå§ããŸãã
- ã²ãŒããŠã§ã€ã¯ACKãã±ããã§å¿çããæ¥ç¶ã確ç«ããŸãã ããŒã¿ãã±ãããåä¿¡ãããšãä»æ§ã«åŸã£ãŠããããã®ãã±ããã¯æ¢è£œã®ã³ã³ãã³ãã«å解ãããŸãã
- ã²ãŒããŠã§ã€ã¯ããŒã¿ãããã«è»¢éããŸãã
ãããã¿ã€ããäœæããéçšã§åé¡ãçºçããŸãããéçºè ã¯ãã€ã¯ããœãããªãã£ã¹ã§åããŠããŸãããããã§ã¯ããããã¯ãŒã¯ã»ãã¥ãªãã£å¢çã«ã¯ç¹å®ã®æ°ã®ç°ãªãçš®é¡ã®ããªã·ãŒããããããŒã«ã«ã²ãŒããŠã§ã€ã®ãããã¿ã€ãã³ã°ãè€éã«ãªãå¯èœæ§ããããŸãã ããªã·ãŒãå€æŽããæ©äŒããªãã£ããããããŒã ã¯ngrokã䜿çšããŸãã ãããã«ãããlocalhostã§å®å šãªãã³ãã«ãäœæã§ããŸãã
éçºäžã«ãããã«æ·±ãåãçµãããšã決å®ãããããã€ãã®åé¡ããããŸãã-ããŒã«ã«ã¹ãã¬ãŒãžãžã®æžã蟌ã¿ãã²ãŒããŠã§ã€ãåäœããã€ã³ã¹ã¿ã³ã¹ã®ã¢ãã¬ã¹ãšããŒãã®ååŸã ã¯ã©ãŠãã§ã¯å€ãã®å€æ°ãåçã«å€åããããããããã®åé¡ã¯æ¬¡ã®ã¹ãããã«é²ãåã«è§£æ±ºããããšãéèŠã§ããã
Cloud Serviceãªã³ãã¬ãã¹ã¹ãã¬ãŒãžãžã®èšé²
ãã¡ãããã€ã³ã¹ã¿ã³ã¹äžã®ããŒã¿ã®ããŒã«ã«ã¹ãã¬ãŒãžãšæ¯èŒããŠã Azureã«ã¯æ å ±ãä¿åããããè¯ãæ¹æ³ããããŸãããå€ãã¢ãŒããã¯ãã£ã¯ããŒã«ã«ã¹ãã¬ãŒãžãæ瀺ããŠãããããã·ã¹ãã ããã®ã¢ãŒãã§åäœã§ãããã©ããã確èªããå¿ èŠããããŸããã ããã©ã«ãã§ã¯ãã¯ã©ãŠããµãŒãã¹ã§æ©èœãããã¹ãŠã®ãã®ã¯ãã¡ã€ã«ã·ã¹ãã ã«ã¢ã¯ã»ã¹ã§ããŸãããã€ãŸããããŸãæ©èœãããcïŒ/ tempã«æ å ±ãæžã蟌ã¿ãŸããã ããã¯PaaSã§ãããããã¯ã©ãŠããµãŒãã¹æ§æã§ããŒã«ã«ã¹ãã¬ãŒãžãšåŒã°ããç¹å¥ãªã¹ããŒã¹ãæ§æããcleanOnRoleRecycleãã©ã°ãèšå®ããå¿ èŠããããŸããããã«ãããããçšåºŠã®ç¢ºå®æ§ã§ãããŒã«ã®åèµ·åæã«ããŒã«ã«ã¹ãã¬ãŒãžããã®æ å ±ãåé€ãããŸããã 以äžã¯ããã®åé¡ã解決ããããã«äœ¿çšãããã³ãŒãã§ãã
const string azureLocalResourceNameFromServiceDefinition = "LocalStorage1"; var azureLocalResource = RoleEnvironment.GetLocalResource(azureLocalResourceNameFromServiceDefinition); var filepath = azureLocalResource.RootPath + "telemetry.txt"; Byte[] bytes = new Byte[514]; String data = null; while (true) { TcpClient client = server.AcceptTcpClient(); data = null; int i; NetworkStream stream = client.GetStream(); while ((i = stream.Read(bytes, 0, bytes.Length)) != 0) { ⊠System.IO.File.AppendAllText(filepath, BitConverter.ToString(bytes)); ⊠} client.Close(); }
ãã¹ãåŸãããŒã¿ãã¹ãã¬ãŒãžã«æ®ã£ãŠããããšãå€æãããããããã¯äžæããŒã¿ãä¿åããã®ã«é©ããæ¹æ³ã§ãã
ã€ã³ã¹ã¿ã³ã¹ã®ã¢ãã¬ã¹ãšããŒãã®ååŸ
å®è¡æã«ããŒã¿ãååŸããã«ã¯ãã¯ã©ãŠããµãŒãã¹ã®æ§æå ã§ãšã³ããã€ã³ããå®çŸ©ããã³ãŒãã§ã¢ã¯ã»ã¹ããå¿ èŠããããŸãã
IPEndPoint instEndpoint = RoleEnvironment.CurrentRoleInstance.InstanceEndpoints\["TCPEndpoint"\].IPEndpoint; IPAddress localAddr = IPAddress.Parse(instEndpoint.Address.ToString()); TcpListener server = new TcpListener(localAddr, instEndpoint.Port);
ããã§ãèªåæ§æãããããŒããã©ã³ãµãŒã¯ã€ã³ã¹ã¿ã³ã¹éã®ãªã¯ãšã¹ãã管çããéçºè ã¯ãããã®ã€ã³ã¹ã¿ã³ã¹ã®æ°ãã¹ã±ãŒãªã³ã°ã§ããåã€ã³ã¹ã¿ã³ã¹ã¯å®è¡æã«å¿ èŠãªããŒã¿ãåãåããŸãã
ãã®ãããããŒã«ã«ã²ãŒããŠã§ã€ãèµ·åãããã¯ã©ãŠããµãŒãã¹ïŒããŒã«ã«ã§ãšãã¥ã¬ãŒãå¯èœïŒã§ãã¹ããããŸãããä»åºŠã¯ããããžã§ã¯ããã¯ã©ãŠãã«ãããã€ããçªã§ãã Visual StudioããŒã«ãããã䜿çšãããšãæ°åã¯ãªãã¯ããã ãã§ãããå®è¡ã§ããŸãã
ã²ãŒããŠã§ã€ã€ã³ã¹ã¿ã³ã¹ããã®ãããªãããŒã¿è»¢éã®åé¡ã¯ãå ¬åŒã³ãŒããµã³ãã«ã䜿çšããŠæ£åžžã«çµäºããŸããã
çµè«
èšç»æã«ãããŒã ã¯ãç¹ã«ããŸããŸãªç°å¢ãããã€ã¹ãããã³èŠä»¶ïŒå»æ¢ãããããã€ã¹ããããã³ã«ãã¢ããªã·ãã¯C ++ã¢ããªã±ãŒã·ã§ã³ïŒãååšããå Žåãã·ã¹ãã ã®å®çšçãªãããã¿ã€ããéçºããã®ã«ååã§ã¯ãªãããšãå¿é ããŠããŸããã äœãããæéããªãã£ãã®ã§ãããåºæ¬çãªãããã¿ã€ããäœæãããŠæ©èœããŸããã
ãã®çš®ã®ã¿ã¹ã¯ã«PaaSã¢ãã«ã䜿çšããã®ã¯çŽ æŽãããæ¹æ³ã§ãã
- ã©ããããããã¿ã€ãã³ã°ãœãªã¥ãŒã·ã§ã³ã
- ãµãŒãã¹ãšèšå®ã䜿çšããŠããœãªã¥ãŒã·ã§ã³ãæåããã¹ã±ãŒã©ãã«ã§æè»ã«ããŸãã
æ°æéã§ãå®éã®ããŒã¿ã䜿çšããŠIoTãã©ãã€ã ã§ãšã³ãããŒãšã³ããœãªã¥ãŒã·ã§ã³ãéçºããããã®åºç€ãäœæããããšãã§ããŸããã å°æ¥ã®èšç»ã«ã¯ãæ©æ¢°åŠç¿ã䜿çšããŠããŒã¿ãæ倧éã«æŽ»çšããæ°ãããããã³ã«ã«ç§»è¡ããAzure Service Fabricãã©ãããã©ãŒã ã§ãœãªã¥ãŒã·ã§ã³ããã¹ãããããšãå«ãŸããŸãã
Alexander BelotserkovskyãšQuart Technologyã®ããŒã ã«ããè³æã®äœæã«ãåå ããã ãããããšãããããŸãã