ããã§ã¯ãã¢ããªã±ãŒã·ã§ã³ãµãŒããŒãšã¯æ£ç¢ºã«ã¯äœã§ããïŒ
ç§ã¯èªåã®èšèã§ãããå®åŒåããããšããŸãã
-ãã¢ããªã±ãŒã·ã§ã³ãµãŒããŒãã¯ãåæ£Nå±€ã·ã¹ãã ã®ã¢ãŒããã¯ãã£ã«é¢é£ããçšèªã®1ã€ã§ãããäžå€®ã®å Žæãå ããããŒã¿ã®åŠçãšåä¿¡ã®èŠæ±ãæºããããã®ããŒã¿ãä¿åããã¯ã©ã€ã¢ã³ãéã«é 眮ãããŸãã
-ã¢ããªã±ãŒã·ã§ã³ãµãŒããŒã¯ããµãŒããŒåŽã§åäœããç¹å¥ãªã¢ãŒããã¯ãã£ãšãã¯ãããžãŒã«åºã¥ããœãããŠã§ã¢ã§ãã ç¹ç°æ§ã¯ããã®æ°ãšã¿ã€ãã®å€æ§æ§ã®äž¡æ¹ã®ç¹ã§å€ãã®é¡§å®¢ã«ãµãŒãã¹ãæäŸããããšã«ãããŸãã
-ã¢ããªã±ãŒã·ã§ã³ãµãŒããŒã¯ãã¯ã©ã€ã¢ã³ãããã®åä¿¡ãšã¯ã©ã€ã¢ã³ããžã®éä¿¡ã®äž¡æ¹ã§ãç¹å®ã®åœ¢åŒã®ããŒã¿ã®å¿ èŠãªåŠçãšå€æãå®è¡ããŸãã
-ã¢ããªã±ãŒã·ã§ã³ãµãŒããŒã¯ã¢ããªã±ãŒã·ã§ã³ã¬ãã«ã®APIãæäŸãããã®ã¡ãœããã䜿çšããŠç¹å®ã®ã¯ã©ã€ã¢ã³ãã¢ããªã±ãŒã·ã§ã³ãå®è£ ã§ããŸãã
ãã®ãããžã§ã¯ãã®èæ¯ã¯ããã§ããã
Windowsçšã®ã·ãã¯.NETã¯ã©ã€ã¢ã³ãã«å ããŠãæ°ããMicrosoft Windows Communication Faundationãã¯ãããžãŒïŒä»¥äžãåã«WCFãšåŒã³ãŸãïŒã«åºã¥ã次ã®ã¢ããªã±ãŒã·ã§ã³ãäœããã®åœ¢ã§éçºãããã®ãµãŒãã¹çšã®Webã€ã³ã¿ãŒãã§ã€ã¹ãäœæããããšããèŠæããããŸããã ExtJsã¯ãã¹ã¿ãªã³ã°çšã«éžæãããŸããã ãAjaxã¯ã©ã€ã¢ã³ããWCFãµãŒãã¹ã«æ¥ç¶ããæ¹æ³ããšãããããã¯ã«é¢ããå°ããªè³æãã°ãŒã°ã«ã§èª¿ã¹ãæåã®ãã©ãããäœæãããŸããã ã¬ã€ã¢ãŠãã¯æ©èœããŸããããããã§ãäžèŠåºæ¬çãªããšãéæããæ¹æ³ã«äžæºãçãå§ããŸããã äžèŠãããšãããããŸãã«ãå€ãã®ãäžå¿ èŠãªããšããè¡ãå¿ èŠããããŸããããå®éã«ã¯åã«å¿ èŠã§ããã
ããå°ãæŽå²ã
WCFã§ã®å®åçµéšãšããã€ãã®æåãããããžã§ã¯ãããããŸããã O'Reillyã®ããã¹ããŒãããã¯ã§ã¯ããµãŒãã¹ã€ã³ã¿ãŒãã§ãŒã¹ã§å€ãã®ã¡ãœãããäœæããªãããšãæšå¥šããŸããïŒ12ãè¶ ããªã+-ïŒã ãã®ããšããããããŠãµãŒãã¹ã®ããã®å€ãã®ç°ãªãã¡ãœãããæã£ãŠãããšããæ¬åœã®å¿ èŠæ§ããé²ãã§ã1ã€ã®ã¡ã€ã³ã®å®è¡å¯èœãªã¡ãœãããšå¿ èŠã«å¿ããŠããã€ãã®è¿œå ã®ã¡ãœãããäœããšãã決å®ã¯é²åããŸããã ãªããªã åœæã¯ãµãŒãã¹ã®.NETã¯ã©ã€ã¢ã³ãã®ã¿ã§ããããã®ã¡ã€ã³ã¡ãœããã¯ãåŒã³åºãããã¡ãœããã®ååãšãBinaryFormatterã«ãã£ãŠã·ãªã¢ã«åããããã©ã¡ãŒã¿ãŒãããã³ã¡ãœãããå€éšã¢ã»ã³ããªã«ããå Žåã¯AssemblyQualifiedNameãåãå ¥ããŸããã
ãããããã®ãããªãœãªã¥ãŒã·ã§ã³ã¯Webã¯ã©ã€ã¢ã³ããšå®å šã«äºææ§ããªãããµãŒãã¹ã€ã³ã¿ãŒãã§ã€ã¹ã«å®è£ ãããããã©ãããªãã¡ãœããã«æ»ãå¿ èŠããããŸããã
MTOMã®ãµããŒãã«ãããããããã¹ããªãŒã ã®æäœæã«åé¡ãçºçããŸããã WCFã«ãããã·ãµãŒããŒãä»ããŠéåžžã¹ããªãŒã ãæž¡ãããšãã§ããŸããã§ããã
WCF + Ajaxãã³ãã«ã®ãã1ã€ã®åé¡ã¯ãJsonã·ãªã¢ã«åã§ãã ãŸããããã¯ãšãŠãç°¡åã«èŠããŸããããããããããŠããã§ã¯ãã®ãã¥ã¢ã³ã¹ã®å€ãã圢æãããŸããã
ããã«ãWCFããŒã¹ã®ãœãªã¥ãŒã·ã§ã³ãå®è£ ããã¯ã©ã€ã¢ã³ãã¯ãå€ãã®å ŽåããµãŒããŒã«.NET 3.5 SP1ãã€ã³ã¹ããŒã«ããéã«åé¡ãçºçããããšãæ £äŸã«ãã瀺ãããŠããŸãã ãã¬ãŒã ã¯ãŒã¯èªäœãã€ã³ã¹ããŒã«ãããŠããªãå Žåã.svcãç»é²ãããŠããªãå Žåãã»ãšãã©ã§ãã
å°ããã€ãéãã«ãWCFã¯æ°ã«å ¥ããªããªããŸããã
ãããŠãã®éãããç¥ãããŠãããœãŒã·ã£ã«ãããã¯ãŒã¯ãWebãããžã§ã¯ããããŸããŸãªApp Storeã®ãµãŒãã¹ãã€ã³ã¿ãŒãããäžã§ã©ã®ããã«æ©èœãããã«ã€ããŠãèãã¯ããŸã ã«å¿ããããŸããã§ããã çµå±ã®ãšãããåäžã®phpã§ã¯ãããŸããã ãããWindowsã§ã¯ãªãããšã¯æããã§ãããããããã€ã³ãã§ã¯ãããŸããã çµè«ãšããŠããããã®ãµãŒãã¹ã¯ããŸããŸãªã¿ã€ãã®é¡§å®¢ã«ããŒã¿ãæäŸããŸãã 1ã€ã®ãµãŒãã¹-å€ãã®ç°ãªãã¯ã©ã€ã¢ã³ããããã¯çŸä»£ã§ã¯ãã¯ãŒã«ãã§ãéèŠãã§ããã.NETã§ãããè¡ãæ¹æ³ã¯ïŒ
.NET 2.0ã®.asmx WebServiceã䜿çšããŠã¿ãããšã«ããŸãããããã«ã.NET 3.5ã§ã¯ãAjaxã®äžçãšããåãã§ããæ¡åŒµæ©èœãå°å ¥ããŸããã ããã«èšããŸãããäœããèµ·ãã£ãããããã§ã¯ãªãã£ãããããã§ããããã®XML WebãµãŒãã¹ã®æ¡åŒµæ©èœãšè¿œå æ©èœã¯ãã¹ãŠããã€ãã£ããã§ã¯ãªããæã«è² ããªããæããããã
WCFãšWebServiceãã¯ãããžãŒã¯Web 2.0ã®å®è£ ã«ãŸã£ããé©ããŠããªããšã¯èšããããããŸããããç¹°ãè¿ããŸã-çŽæçã«è¡ãããããã«æãããããšããããŸã«ãããããããªã誀解ããåŒãèµ·ãããŸããã åçŽãªãã®ã®å®è£ ã¯äœããã®åœ¢ã§è€éã«æãããããã€ãã®ããšã¯å®å šã«äžå¯èœã§ããã
ããã§ã¯ãéçºããã»ã¹äžã«çºçããäžå¿«ãªç¬éã®ãªã¹ããäžããããšãã§ããŸãããæ£çŽã«èšããšãä»ã§ã¯ããã¹ãŠããšã¬ã¬ã³ãã§ã·ã³ãã«ã«ãªã£ãåŸãç§ãèŠããŠããŸããã
ã§ã¯ãç®æšãéæããã®ã«é©ãã.NETã®ãããªãã®ãããã¹ãã§ããããïŒ ç§ãã¡ã®æãã¯System.NetãšSystem.Webã§ãã
ãããŠãIHttpHandlerãéžæããŸãã
HttpRequestãšHttpResponseã§HttpContextãèŠãŠãã ããã 圌ãã¯Webengineããã®Httpãããã³ã«ã®äœã¬ãã«ã®è©³çŽ°ãã»ãŒå®å šã«å®è£ ãããããéã®å€§ç¿ã«èŒããŸããã ãéãå¢çç·ãããæãããšãã§ããŸããã
/// <summary> /// Enables processing of HTTP Web requests by a custom HttpHandler. /// </summary> /// <param name="httpContext"> Http .</param> void IHttpHandler.ProcessRequest(HttpContext httpContext)
ã¯ã©ã€ã¢ã³ããããªã¯ãšã¹ããåãåããŸããã
ãããŠãããã§äœãããŸããïŒ çãã¯ããªãã®å¿ãæããã¹ãŠã§ãã ã¯ããã¯ããæ£ç¢ºã«ã
ããäžåºŠãå¿ èŠãªãã®ãå®åŒåããŸãã
1. 1ã€ã®ã¢ããªã±ãŒã·ã§ã³ãµãŒããŒ-å€ãã®çš®é¡ã®ã¯ã©ã€ã¢ã³ãïŒ.NETãJavaãWeb + AjaxãSilverlightãiPhoneãAndroidãªã©ïŒã
2.ä»»æã®ã¯ã©ã€ã¢ã³ãããã¢ããªã±ãŒã·ã§ã³ãµãŒããŒã®å¿ èŠãªã¢ããªã±ãŒã·ã§ã³ã¡ãœãããåŒã³åºããŸãã
3.ãGETãããã³ãPOSTããªã¯ãšã¹ãã®ãµããŒããããªãã¡ UrlãŸãã¯ãªã¯ãšã¹ãããã£ãä»ããŠãã©ã¡ãŒã¿ãŒãæž¡ãã
4.ã¯ã©ã€ã¢ã³ãã«è¿ãããã¡ãœããã®ãã©ã¡ãŒã¿ãŒãšçµæã®å§çž®ã®ãµããŒãã
5.åŽåããããã«äž¡æ¹åã®ãããŒãåŠçããŸãã
6.ãœãªã¥ãŒã·ã§ã³ã®ã¹ããŒãã䜿ãããããéåææ§ãéææ§ãæå¿«ãã
æåã®æ®µèœãå®è£ ãããšãã«ãã»ãšãã©ãã¹ãŠã®èšèªãšãã©ãããã©ãŒã ã«ååšããçžäºã«äºææ§ããããç°å¢ã®å¢çãè¶ããŠãããã転éããã®ã«é©ããããŒã¿åãååšãããšããçµè«ã«éããŸããïŒç§ãçºèŠãããã¢ã¡ãªã«ïŒã ãäºæããšããèšèã匷調ããŸã ãããåºæ¬çãªãã€ã³ãã§ãã
æåãæååïŒãšã³ã³ãŒããèæ ®ïŒãåçŽãªããŒã¿åïŒããŸããŸãªçš®é¡ã®æ°å€ãããŒã«å€ïŒããã€ãé åãããã³ã¹ããªãŒã ã éåžžãæ¥ä»ã«ã¯ç¹å®ã®æååè¡šçŸããããŸãã ããã«ã¯ãäžèšã®ããŒã¿åã®ã³ã³ãããšããŠãé åããªã¹ããããã³èŸæžãå«ãŸããŸãã
åœç¶ã®éžæã¯ã亀æ圢åŒãšããŠã®Jsonã§ããã ãŸãã¯ãNewtonsoftã®Json.NETã©ã€ãã©ãªãéžæãããŸããã
ãã®ãããã¯ã©ã€ã¢ã³ãã¯ãµãŒããŒã«ç¹å®ã®ã¢ããªã±ãŒã·ã§ã³ã¡ãœããïŒRPCïŒãåŒã³åºãããµãŒããŒããæ確ãªåçãååŸã§ããå¿ èŠããããŸãã åŒã³åºãããã¡ãœããã¯ãååä»ãã®æååã§æå®ãããŸãã ã¡ãœããã«ã¯ãã©ã¡ãŒã¿ãŒãå¿ èŠã§ãã 圌ã¯ããããæ£ããèªèããŠåŠçããªããã°ãªããŸããã æè»æ§ãé«ããããã«ãã¡ãœããã¯ãµãŒããŒèªäœã«å±ããã ãã§ãªãããµãŒããŒã§äœ¿çšå¯èœãªä»»æã®ã¢ã»ã³ããªã«ãå±ããããšãã§ããŸãããã»ãã¥ãªãã£äžã®å¶éããããŸãã
RESTã¹ã¿ã€ã«ã¯äžè¬çã§ãããå®å šã«æè»ã§ã¯ãããŸããã ããã¯ããã³ãã¬ãŒããã¹ã¿ã€ã«ã§ãã å·Šå³ã«ã¹ããããããšãæ±çšæ§ã倱ãããŸãã äžå¯æ¬ ãªQueryStringãæ®ã£ãŠããŸãã
ãµãŒããŒã¯ãã¯ã©ã€ã¢ã³ããã次ã®åœ¢åŒã®èŠæ±ãåãåããŸãã
/service.ashxïŒ method = GetImageïŒâ DSCN2099.JPGâïŒ
ããŒãã©ã¡ãŒã¿ã®ååã¯å€ªåã§åŒ·èª¿è¡šç€ºãããŠããŸãã
ã¡ãœããããµãŒãã¹èªäœã«å±ããŠããããšã¯æããã§ãã ãããæ¢ãå Žæã瀺ãä»ã®æ瀺ã¯ãªãããªã¯ãšã¹ããããç»åã®ååããã©ã¡ãŒã¿ãšããŠåãåããŸãã åçã®ããå Žæã¯ããµãŒãã¹ã®éçºè ãšããŠã®ã¿ç¥ãããŠããŸãã éžæããã«ã¯ïŒãã¡ã€ã«ã·ã¹ãã ã®ãã£ã¬ã¯ããªã ä»»æã®ã¢ã»ã³ããªã®ãªãœãŒã¹ã DB ã©ã³ã¿ã€ã æç»; å€éšãªãœãŒã¹ãªã© ããã¯é©çšãããããžãã¯ã§ãã
å®å šãªã¯ãšãªæåå圢åŒïŒ
/service.ashxïŒ ã»ãã·ã§ã³= xxxxxxxxxxxxxxxxxïŒ-ã»ãã·ã§ã³ID class = Full AssemblyTypeNameïŒ-ãFullTypeNameãAssemblyNameã method = MethodNameïŒãã©ã¡ãŒã¿ãŒïŒïŒ-ïŒå€§æåãšå°æåãåºå¥ããã¡ãœããåïŒ format = Json / DotNetBinaryïŒ-ããŒã¿åœ¢åŒïŒæ¡åŒµå¯èœïŒ zip = on / off-ã¡ãœããã®å ¥åãã©ã¡ãŒã¿ãŒãå§çž®ãããŠãããã©ãã
ãã©ã¡ãŒã¿ã®ãããããæ¬ èœããŠããå Žåãããã©ã«ãå€ã䜿çšãããŸãã 瀺ãããªããã°ãªããªãå¯äžã®ãã®ã¯ãåŒã³åºãããã¡ãœããã®ååã§ãã
ã客æ§ã«äœãè¿åããŸããïŒ ã¯ã©ã€ã¢ã³ãã¢ããªã±ãŒã·ã§ã³èªäœã«äŸåããŸãã ç»åããµã ãã€ã«ã®å Žåããã€ãã®é åãè¿ãããŸãã ããã倧ããªç»åã§ããå Žåã¯ãã¹ããªãŒã ãè¿ãããšããå§ãããŸãã
ãã®ãããã¢ããªã±ãŒã·ã§ã³ãµãŒããŒã¯èŠæ±ãåä¿¡ãããããåŠçïŒè§£æïŒããæå®ãããã¡ãœããã®å®è¡ã³ã³ããã¹ããäœæããå®è¡ã®ããã«ã¡ãœãããåŒã³åºããŸãã ã¡ãœããã¯é©çšãããããžãã¯ãå®è£ ããæçµçã«æ»ãçµæãè¿ããŸãã ãããŠããã®çµæã¯ããã«ã©ããžè¡ãã®ã§ããããïŒ ç©ºäžã§ã¯ãããŸããã ãããŠãçµæã¯ã¡ãœãããããŠãããŒãµã«ãªããžã§ã¯ããšããŠã¢ããªã±ãŒã·ã§ã³ãµãŒããŒã³ã¢ã«è¿ãããŸãã 次ã«ãæ»ãå€ã®ã¿ã€ããåæãããŸãã typeofïŒvoidïŒã®å Žåããã以å€ã®åŠçã¯è¡ãããŸãã; Streamã®å ŽåãHttpResponseã®åºåã¹ããªãŒã ã«ãªãã€ã¬ã¯ããããŸãã ãã以å€ã®å Žåãçµæã¯æååãžã®å€æã®ããã«Jsonã«ã·ãªã¢ã©ã€ã¶ãŒã«è¿ããããã®æååã¯HttpResponse-> WriteïŒïŒã§æžã蟌ãŸããŸãã
ãããã£ãŠãHttpèŠæ±ã³ã³ããã¹ãã«ã¢ã¯ã»ã¹ã§ããã®ã§ãã¢ããªã±ãŒã·ã§ã³ãµãŒããŒã€ã³ãã©ã¹ãã©ã¯ãã£ã³ã¢ã®å®è£ ãèªç±ã«éžæã§ããŸããã
SOAP .asmx WebServiceã€ã³ãã©ã¹ãã©ã¯ãã£ã¯ãã»ãŒåãæ¹æ³ã§å®è£ ãããŸãã éããéé£æ§ã®XMLã ãããããããã«è»œããŠé«éãªJsonããããŸãã .aspxãšWCFããã³ãã©ãŒã§ãã
ããã§ã¯ã誰ã®ããã«ããããã¹ãŠå§ãŸã£ãã®ã§ããããïŒ
.NETã§ã¯ããã¹ãŠãç°¡åã§ãã
ããã§ã¯ããã€ãã£ããã€ããªåœ¢åŒãšJsonãéžæã§ããŸããHttpWebResponse-> GetResponseStreamïŒïŒã¯ãã¢ããªã±ãŒã·ã§ã³ãµãŒããŒã®ã¢ããªã±ãŒã·ã§ã³ã¡ãœãã "GetImageïŒïŒ"ãè¿ããã®ãšåãã¹ããªãŒã ã§ããéãã¯ããã®ã¹ããªãŒã ã®ã¿ã€ãã®ã¿ã§ãã .NET Frameworkã®å éšã¯ã©ã¹ã®1ã€ã ã¯ããç§ãã¡ã«ã¯é¢ä¿ãããŸããã ãããèªã¿åã£ãŠãäŸãã°Image.FromStreamïŒïŒãªã©ã«ããããåã«ãã¡ã€ã«ã«ä¿åããããšãéèŠã§ãã ã¢ããªã±ãŒã·ã§ã³ãµãŒããŒããã€ããªããŒã¿ã®é åïŒãã€ã[]ïŒãè¿ããå Žåãããã¯åºæ¬çã«åãã§ãã GetResponseStreamïŒïŒä»¥å€ã®æ¹æ³ã¯ãããŸããã ããããã®åãé åã«å€æããã ãã§ãã ãã®ã¹ããªãŒã ãã©ã®ããã«åŠçãããã¯ãã¢ããªã±ãŒã·ã§ã³ãµãŒããŒãæäŸããã¢ããªã±ãŒã·ã§ã³APIã«åºã¥ããŠãã¯ã©ã€ã¢ã³ãã¢ããªã±ãŒã·ã§ã³ã®éçºè ã決å®ããŸãã
éçºè ã¯ãã¯ã©ã€ã¢ã³ãã¡ãœãããšãµãŒããŒã¡ãœããã®äž¡æ¹ãšãäžè¬çãªããŒã¿æ§é ãååšã§ããã¢ã»ã³ããªãäœæããŸãã 次ã«ããã®ã¢ã»ã³ããªã¯ãµãŒããŒåŽãããžã§ã¯ãã«é 眮ããããã®ã¢ã»ã³ããªã®ååãã¯ã©ã€ã¢ã³ãã®ãªã¯ãšã¹ãã«ç€ºãããŸãã ã€ãŸã ãµãŒãã¹èªäœãåã³ã³ãã€ã«ããã«ããžãã¹ããžãã¯ãè¿œå ã§ããããšãããããŸããã èšèšãçµã¿ç«ãŠãé 眮ããããŠåºæ¥äžãã-æ°ããæ©èœã¯ããã«å©çšå¯èœã«ãªããŸãã
ã¢ã€ãã¯ã¹
æ瀺ãããã¢ããªã±ãŒã·ã§ã³ãµãŒããŒã®ã€ããªãã®ãŒã¯ãAjaxãã¬ãŒã ã¯ãŒã¯ã«åºã¥ãã¯ã©ã€ã¢ã³ãã®å®è£ ã«éåžžã«é©ããŠããŸãã çµå±ã®ãšãããJsonã¯XMLããã圌ãã«ãšã£ãŠããã«å€§åã§ãã
Ext.Ajax.request({ method: 'GET', url: '/service.ashx?method=GetImageInfo(âDSCN2099.JPGâ)', success: function(response, options) { var result = Ext.decode(response.responseText); }, failure: function(response, options) { ... } });
ãµãŒããŒæ¹åŒïŒ
public ImageInfo GetImageInfo(Json json) { string fileName = json.AsString; string filePath = Path.Combine(IMAGES_DIR, fileName); return new ImageInfo(filePath); }
GetImageInfoïŒïŒã¡ãœããã«ãã£ãŠè¿ãããImageInfoæ§é ã¯ãJsonã·ãªã¢ã©ã€ã¶ãŒã«ãã£ãŠæ¬¡ã®è¡ã®ãããªãã®ã«å€æãããŸãã
{ ãååãïŒãDSCN2099.JPGãã ãé«ããïŒ1536ã ãå¹ ãïŒ2048ã ãPixelFormatãïŒ137224ã ãRawFormatãïŒãJpegãã ãHorizoâântalResolutionãïŒ300.0ã ãåçŽè§£å床ãïŒ300.0ã "ThumbImage"ïŒ "/ 9j / 4AAQSkZJRgABAQ ..."ã ãFileInfoãïŒ{ ãFileSizeãïŒ1849625ã ãCreationTimeãïŒã\ /æ¥ä»ïŒ1246514398257 + 0400ïŒ\ /ãã ãFileAttributesãïŒ32 } }
ãããŠãã¢ããªã±ãŒã·ã§ã³ãµãŒããŒã¯ãããã¯ã©ã€ã¢ã³ãã«éä¿¡ããããã§ã¯ã©ã€ã¢ã³ãã¯javascriptãªããžã§ã¯ãã«ãã³ãŒããããŸãã
æ¥ä»ã¯æ¬¡ã®åŒã³åºãã§ååŸã§ããŸãã
var date = Date.parseDate(result.FileInfo.CreationTime, 'M$').format('dmY h:i'),
ããã³ãµã ãã€ã«ïŒ
var image = { xtype: 'box', autoEl: { tag: 'div', children: [{ tag: 'img', src: String.format('data:image/jpg;base64,{0}', result.ThumbImage) }] }, listeners: { render: function(comp) { comp.getEl().on({ dblclick: function() { var url = '/service.ashx?method=GetImage(result.Name)'; window.open(url, 'imageWindow', 'menubar=no, location=no, resizable=yes, scrollbars=yes, status=no, width=640, height=480'); }, scope: comp }); } } };
base64 ThumbImageã¯é©åãªãµã€ãºã®ç»åã«æ£åžžã«å€æããããããããã«ã¯ãªãã¯ãããšæ°ãããã©ãŠã¶ãŠã£ã³ããŠãéããæ¬æ Œçãªç»åã衚瀺ãããŸãã
ããšãã°ããã®ãããªããªãã¯ã ã¹ã¿ã€ã«ã·ãŒãã®è¡ã ãªãœãŒã¹ã¢ã»ã³ããªã«ã¯ã¢ã€ã³ã³ããããŸãã
.loading { background-image: url(/service.ashx?method=LoadIcon%28%22loading.gif%22%29) !important; }
ãŸããããã¯ãããŸã§ã®ãšãããšãŠãè¯ãããã§ãã ãã§ã«2ã€ã®ã¯ã©ã€ã¢ã³ãããããŸãã
Silverlightãè©ŠããŠã¿ãŸãããïŒ
ãåãã.NETã¯ã©ã€ã¢ã³ããšã®éãã¯ãHttpWebRequestããã³HttpWebResponseã«åæã¡ããå®å šã«ååšããªãããšã§ãã Jsonãšé£æºããããã«ãSilverlightçšã®Json.NETã®å®è£ ããããŸãã æ®ãã¯ãã¹ã¯ããã.NââETã¢ããªã±ãŒã·ã§ã³ã®å Žåãšã»ãŒåãã§ãã
ã¢ããªã±ãŒã·ã§ã³ãµãŒããŒãšã®å¯Ÿè©±ãç°¡çŽ åããããã«ãã¯ãšãªæååã圢æããŠå®è¡ããç¹å¥ãªRequestã¯ã©ã¹ãéçºãããŸããã HttpWebRequestãšHttpWebResponseã®åŠçãã«ãã»ã«åããŸãã
RequestParams requestParams = new RequestParams(); requestParams.Method.Name = "GetImage(fileName)"; requestParams.Method.Params.Add("fileName", "DSCN2099"); Request request = new Request("http://localhost/AppService"); request.Execute(requestParams, Action<RequestCompletedEventArgs> onRequestCompleted);
ã€ãŸã èŠæ±ãã©ã¡ãŒã¿ãŒãæºåãããããµãŒããŒã¡ãœãããåŒã³åºããŠãã³ãŒã«ããã¯ã¡ãœããã§çµæãåŠçããŸãã ç°¡åã«ãªãããšã¯ãããŸããïŒ
次ã®è¡ã¯Javaã§ãã
ã¡ã€ã³ã¯ã©ã¹ã¯HttpURLConnectionã§ãgetInputStreamïŒïŒã¡ãœããããããŸãã åŒã³åºã-.NETãšã®2ã€ã®éããèŠã€ããŸãïŒååã¯ã«ãŠã³ãããŸããïŒã èãæ¹ã¯åãã§ã-ãã«ããŒã¯ã©ã¹RequestParamsãšRequestãäœæãããŸãã RequestParamsã¯ã©ã¹ã¯ãåŒã³åºãããã¡ãœãããšãã®ãã©ã¡ãŒã¿ãŒã®ååã§ãããRequestã¯HttpURLConnectionãæäœããããã®ããžãã¯ãã«ãã»ã«åããŸãã Jsonã®ã·ãªã¢ã«åã«ã¯ãGoogleã®ã©ã€ãã©ãª-Gsonã䜿çšãããŸããGsonã¯ãAndroidéçºã«ã䜿çšã§ããŸãã Javaã«å¯ŸããŠæ®æçãªãã©ãããã©ãŒã ã«å®è£ ãããã¢ããªã±ãŒã·ã§ã³ãµãŒããŒããJson圢åŒã§æäŸããããã®ã¯ãã¹ãŠãåé¡ãªããæ¶åããããŸãã Javaãããã©ã«ãã§ç解ããªãå¯äžã®ãã®ã¯ãMSããã®æ¥ä»åœ¢åŒã§ãã ããããGsonã¯æ¡åŒµå¯èœãªã©ã€ãã©ãªã§ãããåââé¡ã¯ç°¡åã«è§£æ±ºãããŸãã
public class MSDateJsonSerializer implements JsonSerializer<Date> { public JsonElement serialize(Date date, Type typeOfT, JsonSerializationContext context) { return new JsonPrimitive("/Date(" + date.getTime() + ")/"); } } public class MSDateJsonDeserializer implements JsonDeserializer<Date> { public Date deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { String jsonDateToMilliseconds = "\\/(Date\\((.*?)(\\+.*)?\\))\\/"; Pattern pattern = Pattern.compile(jsonDateToMilliseconds); Matcher matcher = pattern.matcher(json.getAsJsonPrimitive().getAsString()); String result = matcher.replaceAll("$2"); return new Date(new Long(result)); } }
.NETããã®ã¹ããªãŒã ãJavaãšäºææ§ããããŸãïŒã¢ããªã«ã§ãåæ§ã§ãïŒã
ImageIcon icon = new ImageIcon(âhttp://localhost/AppService/service.ashx? method=GetImage('DSCN2099.JPG')â);
ãã®ããããã§ã«4ã€ã®ã¯ã©ã€ã¢ã³ãããããAndroidã¢ããªã±ãŒã·ã§ã³ã¯Javaã§äœæãããŠãããšããäºå®ãèæ ®ããŠã5ã€ãã¹ãŠã䜿çšããŠããŸãã
ã¯ã©ã€ã¢ã³ãã®çš®é¡ã«å®è³ªçã«å¶éããªããHttpãšJsonã§åäœãããã¹ãŠã®ãã©ãããã©ãŒã ãã¢ããªã±ãŒã·ã§ã³ãµãŒããŒãšããåãã§ããããšãæããã«ãªã£ããšæããŸãã