
ããã«ã¡ã¯ ãã®èšäºã§ã¯ãã¢ãã€ã«ã¢ããªã±ãŒã·ã§ã³ã®äœæãåŠãã§ãããããã®åéã§ãŸã ããŸã鲿©ããŠããªãåå¿è
ããããããŒãšç§ã®çµéšãå
±æããããšæããŸãã å
·äœçã«ã¯ãããã€ãã£ãã.NETãã©ãããã©ãŒã ïŒWindows Phone 7ããã³Windowsãã¹ã¯ãããã¢ããªã±ãŒã·ã§ã³ïŒãšã¢ãã€ã«ãã©ãããã©ãŒã çšã®.NETã®ç§»æ€ããŒãžã§ã³ã®äž¡æ¹ã§åäœããããŒã¿ãã«ã³ãŒãã®äœææ¹æ³ãšã¢ããªã±ãŒã·ã§ã³ã®èšè𿹿³ãæããŠãã ããã MonotouchãMonodroidãªã©ã
Monoããã³Portable Class Libraryã«ã€ããŠå°ã
ç§»æ€å¯èœãªã³ãŒããæ£ããèšè¿°ããæ¹æ³ã詳现ã«çè§£ããã«ã¯ãæåã«.NETãiOSããã³Androidã§ã©ã®ããã«æ©èœããããçè§£ããå¿
èŠããããŸãã ãã®ãããã¯ã¯éåžžã«å€§ããã®ã§ããŠã©ãžããŒã«ãŠã©ãžãããŽã£ãããèšãããã«ãç°¡åã«èª¬æããŸãã
ã¢ãã¿ãã
iOSã®Monoã¯æ¬¡ã®ããã«æ©èœããŸããJITã³ã³ãã€ã©ãiOSèªäœã®.NETããããŸããã .NETå®è£
å
šäœãå«ããã¹ãŠã®ã³ãŒãã¯ãå®å
šã«ãã¹ãŠããã€ãã£ããã€ãã³ãŒãã«ã³ã³ãã€ã«ãããã¢ããªã±ãŒã·ã§ã³é
åžããã±ãŒãžãšãæ¥è§ŠãããŸãã
ãããããæ¬¡ã®ãé·æãçæãæ°Žäžã¬ãŒãããç¶ããŸãã ããã«ãããã©ãŒãã³ã¹ïŒãã€ãã£ãã³ãŒãã¯å®çŸ©ã«ããé«éã§ãïŒã ãã€ãã¹çªå·1ïŒã¢ããªã±ãŒã·ã§ã³é
åžããã±ãŒãžã®ããªã¥ãŒã ã¯å°ãªããšã6 MBã§ãã ãã€ãã¹2ïŒæ®å¿µãªãããSilverlight 4ãããã¡ã€ã«ã®ã¿ãç§»æ€ãããŠãããããã§ãå®å
šã§ã¯ãããŸããã
äž»ãªé©ãïŒãžã§ããªãã¯ãåå°ããããŸããã ãã®ãããã³ã¬ã¯ã·ã§ã³ãWCFã®ã«ã¹ã¿ã ãããã·ã¯ã©ã¹ãWPFã®ããŒã¿ãã€ã³ãã£ã³ã°ã䜿çšããã²ãŒã ã¯ãããŸããã
ã¢ãããã€ã
Androidã®.NETã«ã€ããŠã¯ã次ã®ããšãèšãå¿
èŠããããŸããäžèŠããã ãã§ã¯ããã¹ãŠããããªã«æ²ããããã§ã¯ãããŸãããJITãšãžã§ããªãã¯ããããŸãã ãã ã...ãžã§ããªãã¯ã¯å£ã£ãŠããŸãïŒãã©ã¡ãŒã¿ãŒã¯ã©ã¹ã¯Java.Lang.Objectããç¶æ¿ããå¿
èŠããããŸãïŒãJITã¯æ£ç¢ºã«ã¯JITã§ã¯ãããŸããã Habrasocietyããã®ãããã¯ã«èå³ãããå Žåã¯ãããã§å¥ã®èšäºã®ãããã¯ã匷調衚瀺ããããšãã§ããŸãã
ããŒã¿ãã«ã¯ã©ã¹ã©ã€ãã©ãªãšWindows Phone 7
CïŒã䜿çšããæãåºãå¯èœæ§ã¯ããã¡ããããã€ã¯ããœããã®ã¢ãã€ã«ãã©ãããã©ãŒã ã§ãã ç¹ã«åœŒå¥³ã®ããã«ãSilverlightã®ããŒãžã§ã³ãéçºãããŸããã ãã ããWindows Phoneçšã«ã³ã³ãã€ã«ãããã¢ã»ã³ããªã¯ããã¹ã¯ãããã¢ããªã±ãŒã·ã§ã³ã§ã¯æ©èœããŸããã ããã¯çè§£ã§ããŸãããéåžžã«äžäŸ¿ã§ãããã¿ãŒã²ãããã©ãããã©ãŒã ã¯ãŸã ç°ãªããŸãã
Windows Phoneãšå®å
šãª.NETéã®ã³ãŒãããŒã¿ããªãã£ãé©åã«ãµããŒãããããã«ãPortable Class LibraryïŒPCLïŒãããã¡ã€ã«ãå®è£
ãããŸãããããã¯ã.NETã®å
¬åŒããŒãžã§ã³ããµããŒããããã¹ãŠã®ãã©ãããã©ãŒã ã«ååšããåºæ¬ã¯ã©ã¹ã®ã»ããã§ã-WindowsãMetroãWindows PhoneãSilverlightãXboxã
ãã¥ã¢ã³ã¹
Mono *çšã«éçºããå Žåã3.5ãŸã§ã®å®å
šãª.NETããŒãžã§ã³çšã«ã³ã³ãã€ã«ãããã¢ã»ã³ããªãçŽæ¥åç
§ã§ããŸãã ãŸããã¢ã»ã³ããªããµããŒããããŠããåå空éã®ã¯ã©ã¹ã®ã¿ã䜿çšããå Žåããã¹ãŠãæ£åžžã«æ©èœããŸãã æªå®çŸã®ã¯ã©ã¹ã«ã¢ã¯ã»ã¹ããããšãããšãNotImplementedExceptionãçºçããŸãã ããã¯ãMonotouchã³ã³ãã€ã©ã®ãã¯ã€ãããžãã¯ã§ãã
ãã ããWindows Phone 7ã®ãããžã§ã¯ãã§ã¯ãåæ§ã®ã³ã¬ã¯ã·ã§ã³ãžã®ãªã³ã¯ã远å ããããšã¯ã§ããŸããïŒããã¯éåžžã«è«ççã§ãïŒã ãããããPortable Class Libraryã¯ã©ãã§ããïŒ..ã-ããªãã¯å°ããŸãã ããããã©ãã¯ããžãã¯ã®å§ãŸãã§ããMono*ãããžã§ã¯ãã§PCLãŸãã¯WP7çšã«ã³ã³ãã€ã«ãããã¢ã»ã³ããªã䜿çšããããšãããšããšã©ãŒã¡ãã»ãŒãžã衚瀺ãããŸããWP7ãŸãã¯PCLã®ã©ã€ãã©ãªãåç
§ããã¢ã»ã³ããªãããŒãããããšã¯ã§ããŸããã
ããããªããã®ããã«å®è£
ãããŠããã®ããç§ã«ã¯ãŸã ããããŸããã ãã®ãã¯ãã«ã«ãµããŒãã«é¢ãããã¹ãŠã®è³ªåãžã®åçïŒãè¿æ¥å
¬éãã å¯äžã®è¯ããã¥ãŒã¹ã¯ãå°ãåã«MonoDevelopïŒMacäžã®Monotouchã®éçºç°å¢ïŒã®æ°ããããŒãžã§ã³ããªãªãŒã¹ãããããšã§ããããã®èª¬æã¯éšåçãªPCLãµããŒããæäŸãããŠããããšãæç¢ºã«ç€ºããŠããŸããããã©ãã§æ£ç¢ºã«çè§£ã§ããŸããã§ããã
å®è£
ãã®ãããé¢å¿ã®ãããã¹ãŠã®ãã©ãããã©ãŒã ã§å¿
èŠãªã©ã€ãã©ãªãå®è£
ããŠãããããå¿
èŠãªã¯ã©ã¹ã䜿çšãããã¹ãŠã®ãã©ãããã©ãŒã ã«å¯ŸããŠ1ã€ã®ã¢ã»ã³ããªãäœæããããšã¯ã§ããŸããã Windowsãã©ãããã©ãŒã çšãšMonoãã©ãããã©ãŒã çšã®2ã€ã®ã¢ã»ã³ããªãã³ã³ãã€ã«ããå¿
èŠããããŸãã
ããããããã§ãå°ããªåé¡ã«çŽé¢ããŠããŸãã WebãµãŒãã¹ã®ã¯ã©ã€ã¢ã³ããå®è£
ãããšãã«æã䟿å©ãªã¯ã©ã¹ã¯WebClientã§ãã ããããããã€ãã®äžå¯è§£ãªçç±ã«ãããWindows Phone 7ããã³ãã¹ã¯ãããã¢ããªã±ãŒã·ã§ã³ã«å®è£
ãããŠããŸãããPCLã®ç¬¬2çããåé€ãããŸããã éçºè
ã¯ãWebClientãMetroã¢ããªã±ãŒã·ã§ã³ã§ãµããŒããããŠããªããšããäºå®ã§ããã䞻匵ããŠããŸãã ãããã£ãŠãMetroãå«ãã¢ããªã±ãŒã·ã§ã³ãéçºããå Žåã¯ãäžäœã¬ãã«ã®ã¯ã©ã¹WebHttpRequestããã³WebHttpResponseã䜿çšããå¿
èŠããããŸãã ç°¡åã«ããããã«ãWebClientãæäœããããã®ãããã·ã¯ã©ã¹ãå®è£
ããäŸã瀺ããŸãã
å¿
èŠãªãã®ïŒ
- Visual Studio 2010 SP 1;
- Visual Studio 2010çšã®Windows Phone SDKã
- Visual Studio 2010ã®Monodroidã
- Macäžã®MonoDevelop 3.0.2ã
- Newtonsoft.Jsonã
ä»äºã«åãæããã
1. Windows Phone SDKãšMonodroidãã€ã³ã¹ããŒã«ããŸãã 2ã€ã®ãããžã§ã¯ããäœæããŸããæåã®ãããžã§ã¯ãã¯Windows Phoneã©ã€ãã©ãªã§ã2çªç®ã®ãããžã§ã¯ãã¯Androidã¯ã©ã¹ã©ã€ãã©ãªã§ãã ãŠãããŒãµã«Windowsã©ã€ãã©ãªãéçºããå Žåã¯ãWindows Phoneã¯ã©ã¹ã©ã€ãã©ãªã®ä»£ããã«ããŒã¿ãã«ã¯ã©ã¹ã©ã€ãã©ãªãäœæããŸãã ãã ãããã®å ŽåãWebãµãŒãã¹ãæäœããã«ã¯ãåãããŸã䟿å©ã§ã¯ãªãHttpWebRequestãšHttpWebResponseã䜿çšããå¿
èŠããããŸãã
2.次ã«ãAndroidã¯ã©ã¹ã©ã€ãã©ãªã䜿çšããŠäž»ãªäœæ¥ãè¡ããŸãã ãã®ã¢ã»ã³ããªãšMonotouchãããžã§ã¯ããšã®äºææ§ã確ä¿ããã«ã¯ããã®ã¢ã»ã³ããªã«Monodroidåºæã®è¿œå ãªã³ã¯ããªãããšã確èªããå¿
èŠããããŸãã ãããžã§ã¯ãã§ã¯ã次ã®ãªã³ã¯ãæ®ããŸãã
- ã·ã¹ãã
- System.Net;
- Newtonsoft.JsonïŒJSONãã·ãªã¢ã©ã€ãŒãŒã·ã§ã³çšã®ã©ã€ãã©ãªïŒã
3.
httpïŒ// webserviceïŒ47154 / rest / vendorã«ããããœãããŠã§ã¢ã¡ãŒã«ãŒã®ãªã¹ããè¿ããããçš®ã®çç¶ã®RESTãµãŒãã¹ãç空å
ã«ãããšããŸãã

ãã®ãµãŒãã¹ã䜿çšããã«ã¯ã次ã®ã³ãŒããèšè¿°ããã ãã§ååã§ãïŒWebãµãŒãã¹ã®å¿çãéã·ãªã¢ã«åãããã¯ã©ã¹ãšããµãŒãã¹ãèŠæ±ãããããã·ã¯ã©ã¹èªäœãäœæããŸãïŒã
4.ããã§ãWPã©ã€ãã©ãªãããžã§ã¯ãã«ããã¡ã€ã«èªäœã§ã¯ãªããAndroidã¯ã©ã¹ã©ã€ãã©ãªãããžã§ã¯ãã®ãã¡ã€ã«ãžã®ãªã³ã¯ã远å ããã ãã§ååã§ãã

å®éãããããã¹ãŠã§ãã ãœãªã¥ãŒã·ã§ã³ãå®å
šã«ã¢ã»ã³ãã«ãããšãåºåã¯2ã€ã®ã¢ã»ã³ããªã«ãªããWindows PhoneãšiOSããã³AndroidãæèŒããããã€ã¹ã®äž¡æ¹ã§åçã«æ©èœããŸãã æ¬¡ã®ããã«ãä»»æã®ãã©ãããã©ãŒã ã§WebãµãŒãã¹ã䜿çšã§ããŸãã
var proxy = new VendorsProxy("http://mywebservice:8080/"); proxy.GetVendorsCompleted += (vendors) => { BindVedorsToVoewModel(vendors.Vendors); }; proxy.GetVendors();
çã
ãã¡ããããã®ãããªæ®éæ§ãéæããããã«ããã®ãããªãã¿ã³ããªã³ãšã®ãã³ã¹ãã®å¿
èŠæ§ã«ã€ããŠè°è«ããããšãã§ããŸãã確ãã«ãåãã©ãããã©ãŒã ã«ã¯ç¬èªã®ä»æ§ãšç¬èªã®æé©ãªäœæ¥æ¹æ³ããããŸãã ãã ããèªä¿¡ãæã£ãŠ.NETããã°ã©ããŒã§ãããWebãµãŒãã¹ã§åäœããã·ã³ãã«ãªã¢ãã€ã«ã¢ããªã±ãŒã·ã§ã³ããã°ããäœæããå¿
èŠãããå Žåããã®ãœãªã¥ãŒã·ã§ã³ã¯åœ¹ç«ã¡ãŸãã
Habrasocietyããã®ãããã¯ã«èå³ãããå Žåã¯ã次ã®èšäºã§ãã¯ãã¹ãã©ãããã©ãŒã ã¢ããªã±ãŒã·ã§ã³ã§æ¥ç¶ãä¿è·ããæ¹æ³ã«ã€ããŠèª¬æããŸãã
Positive Technologiesãã·ãã¢ããã°ã©ããŒãSergey Shulikã«ããæçš¿ã