Note
ãã®ããŒãžã«ã¢ã¯ã»ã¹ããã«ã¯ãæ¿èªãå¿ èŠã§ãã ãµã€ã³ã€ã³ãŸãã¯ãã£ã¬ã¯ããªã®å€æŽã詊ãããšãã§ããŸãã
ãã®ããŒãžã«ã¢ã¯ã»ã¹ããã«ã¯ãæ¿èªãå¿ èŠã§ãã ãã£ã¬ã¯ããªã®å€æŽã詊ãããšãã§ããŸãã
ãã®ããã¥ã¡ã³ãã§ã¯ãWindows Communication Foundation (WCF) ã¢ãŒããã¯ãã£ã®æŠèŠã説æããŸãã ããã¯ãäž»èŠãªæŠå¿µãšãã®çµã¿åããã«ã€ããŠèª¬æããããšãç®çãšããŠããŸãã WCF ãµãŒãã¹ãšã¯ã©ã€ã¢ã³ãã®æãåçŽãªããŒãžã§ã³ã®äœæã«é¢ãããã¥ãŒããªã¢ã«ã«ã€ããŠã¯ãã å ¥éãã¥ãŒããªã¢ã«ããåç §ããŠãã ããã WCF ããã°ã©ãã³ã°ã®è©³çްã«ã€ããŠã¯ãã åºæ¬ç㪠WCF ããã°ã©ãã³ã°ããåç §ããŠãã ããã
WCF ã®åºç€
WCF ã¯ããµãŒãã¹ãšã¯ã©ã€ã¢ã³ãã®éã§ã¡ãã»ãŒãžãéä¿¡ããã·ã¹ãã ãäœæããããã®ã©ã³ã¿ã€ã ããã³ API ã®ã»ããã§ãã åãã€ã³ãã©ã¹ãã©ã¯ãã£ãš API ã䜿çšããŠãåãã³ã³ãã¥ãŒã¿ãŒ ã·ã¹ãã ãŸãã¯å¥ã®äŒç€Ÿã«ååšããã€ã³ã¿ãŒãããçµç±ã§ã¢ã¯ã»ã¹ãããã·ã¹ãã äžã®ä»ã®ã¢ããªã±ãŒã·ã§ã³ãšéä¿¡ããã¢ããªã±ãŒã·ã§ã³ãäœæããŸãã
ã¡ãã»ãŒãžã³ã°ãšãšã³ããã€ã³ã
WCF ã¯ã¡ãã»ãŒãž ããŒã¹ã®éä¿¡ã®æŠå¿µã«åºã¥ããŠãããã¡ãã»ãŒãžãšããŠã¢ãã«åã§ãããã® (HTTP èŠæ±ãã¡ãã»ãŒãž ãã¥ãŒ (MSMQ) ã¡ãã»ãŒãžãªã©) ã¯ãããã°ã©ãã³ã° ã¢ãã«ã§çµ±äžãããæ¹æ³ã§è¡šãããšãã§ããŸãã ããã«ãããããŸããŸãªãã©ã³ã¹ããŒã ã¡ã«ããºã ã«ããã£ãŠçµ±å API ãå¯èœã«ãªããŸãã
ãã®ã¢ãã«ã¯ãéä¿¡ãéå§ããã¢ããªã±ãŒã·ã§ã³ã§ããã¯ã©ã€ã¢ã³ããšãã¯ã©ã€ã¢ã³ããéä¿¡ããŠãã®éä¿¡ã«å¿çããã®ãåŸ æ©ããã¢ããªã±ãŒã·ã§ã³ãåºå¥ããŸãã 1 ã€ã®ã¢ããªã±ãŒã·ã§ã³ã¯ãã¯ã©ã€ã¢ã³ããšãµãŒãã¹ã®äž¡æ¹ãšããŠæ©èœã§ããŸãã äŸã«ã€ããŠã¯ãã åæ¹åãµãŒãã¹ ããš ããã¢ããŒã㢠ãããã¯ãŒã¯ããåç §ããŠãã ããã
ã¡ãã»ãŒãžã¯ãšã³ããã€ã³ãéã§éä¿¡ãããŸãã ãšã³ããã€ã³ã ã¯ãã¡ãã»ãŒãžãéåä¿¡ãããå Žæ (ãŸãã¯ãã®äž¡æ¹) ã§ãããã¡ãã»ãŒãžäº€æã«å¿ èŠãªãã¹ãŠã®æ å ±ãå®çŸ©ããŸãã ãµãŒãã¹ã¯ 1 ã€ä»¥äžã®ã¢ããªã±ãŒã·ã§ã³ ãšã³ããã€ã³ã (ããã³ 0 å以äžã®ã€ã³ãã©ã¹ãã©ã¯ã㣠ãšã³ããã€ã³ã) ãå ¬éããã¯ã©ã€ã¢ã³ãã¯ãµãŒãã¹ã®ãšã³ããã€ã³ãã® 1 ã€ãšäºææ§ã®ãããšã³ããã€ã³ããçæããŸãã
ãšã³ããã€ã³ãã¯ãã¡ãã»ãŒãžãéä¿¡ããå¿ èŠãããæšæºããŒã¹ã®æ¹æ³ãã¡ãã»ãŒãžã®éä¿¡æ¹æ³ãããã³ã¡ãã»ãŒãžã®å€èгãèšè¿°ããŸãã ãµãŒãã¹ã¯ãã¯ã©ã€ã¢ã³ããé©å㪠WCF ã¯ã©ã€ã¢ã³ããšéä¿¡ã¹ã¿ãã¯ãçæããããã«åŠçã§ããã¡ã¿ããŒã¿ãšããŠãã®æ å ± ãå ¬éã§ããŸãã
éä¿¡ãããã³ã«
éä¿¡ã¹ã¿ãã¯ã®å¿ é èŠçŽ ã® 1 ã€ã¯ ããã©ã³ã¹ããŒã ãããã³ã«ã§ãã ã¡ãã»ãŒãžã¯ãHTTP ã TCP ãªã©ã®äžè¬çãªãã©ã³ã¹ããŒãã䜿çšããŠãã€ã³ãã©ããããšã€ã³ã¿ãŒãããçµç±ã§éä¿¡ã§ããŸãã ã㢠ãããã¯ãŒã¯ ã¡ãã·ã¥äžã®ã¡ãã»ãŒãž ãã¥ãŒ ã¢ããªã±ãŒã·ã§ã³ããã³ããŒããšã®éä¿¡ããµããŒãããä»ã®ãã©ã³ã¹ããŒããå«ãŸããŠããŸãã WCF ã®çµã¿èŸŒã¿ã®æ¡åŒµãã€ã³ãã䜿çšããŠãããå€ãã®ãã©ã³ã¹ããŒã ã¡ã«ããºã ã远å ã§ããŸãã
éä¿¡ã¹ã¿ãã¯ã«å¿ èŠãªãã 1 ã€ã®èŠçŽ ã¯ãæå®ãããã¡ãã»ãŒãžã®æžåŒèšå®æ¹æ³ãæå®ãããšã³ã³ãŒãã§ãã WCF ã«ã¯ã次ã®ãšã³ã³ãŒããçšæãããŠããŸãã
ããã¹ã ãšã³ã³ãŒããçžäºéçšå¯èœãªãšã³ã³ãŒãã
ã¡ãã»ãŒãžéä¿¡æé©åã¡ã«ããºã (MTOM) ãšã³ã³ãŒããããã¯ããµãŒãã¹ãšã®éã§éæ§é åãã€ã㪠ããŒã¿ãå¹ççã«éä¿¡ããããã®çžäºéçšå¯èœãªæ¹æ³ã§ãã
å¹ççãªè»¢éã®ããã®ãã€ã㪠ãšã³ã³ãŒãã
WCF ã®çµã¿èŸŒã¿ã®æ¡åŒµãã€ã³ãã䜿çšããŠãããå€ãã®ãšã³ã³ãŒã ã¡ã«ããºã (å§çž®ãšã³ã³ãŒããªã©) ã远å ã§ããŸãã
ã¡ãã»ãŒãž ãã¿ãŒã³
WCF ã§ã¯ãèŠæ±/å¿çãäžæ¹åãåæ¹åã®éä¿¡ãªã©ãããã€ãã®ã¡ãã»ãŒãžã³ã° ãã¿ãŒã³ããµããŒããããŠããŸãã ãã©ã³ã¹ããŒãã«ãã£ãŠãµããŒããããã¡ãã»ãŒãžã³ã° ãã¿ãŒã³ãç°ãªãã®ã§ããµããŒãããã察話ã®çš®é¡ã«åœ±é¿ããŸãã WCF API ãšã©ã³ã¿ã€ã ã¯ãã¡ãã»ãŒãžãå®å šãã€ç¢ºå®ã«éä¿¡ããã®ã«ã圹ç«ã¡ãŸãã
WCF ã®çšèª
WCF ããã¥ã¡ã³ãã§äœ¿çšããããã®ä»ã®æŠå¿µãšçšèªã¯æ¬¡ã®ãšããã§ãã
ã¡ãã»ãŒãž æ¬æãããããŒãªã©ãè€æ°ã®éšåã§æ§æã§ããèªå·±å®çµåã®ããŒã¿åäœã
ãµãŒãã¹ 1 ã€ä»¥äžã®ãšã³ããã€ã³ããå ¬éããåãšã³ããã€ã³ãã 1 ã€ä»¥äžã®ãµãŒãã¹æäœãå ¬éããã³ã³ã¹ãã©ã¯ãã
ãšã³ããã€ã³ã ã¡ãã»ãŒãžãéåä¿¡ãããã³ã³ã¹ãã©ã¯ã (ãŸãã¯ãã®äž¡æ¹)ã ã¡ãã»ãŒãžãéä¿¡ã§ããå Žæãå®çŸ©ããå Žæ (ã¢ãã¬ã¹)ãã¡ãã»ãŒãžã®éä¿¡æ¹æ³ãèšè¿°ããéä¿¡ã¡ã«ããºã (ãã€ã³ãã£ã³ã°) ã®ä»æ§ãããã³ãã®å Žæã§éåä¿¡ã§ããã¡ãã»ãŒãžã®ã»ãã (ãŸãã¯ãã®äž¡æ¹) ã®å®çŸ© (ãµãŒãã¹ ã³ã³ãã©ã¯ã) ã§æ§æãããéä¿¡ã§ããã¡ãã»ãŒãžãèšè¿°ããŸãã
WCF ãµãŒãã¹ã¯ããšã³ããã€ã³ãã®ã³ã¬ã¯ã·ã§ã³ãšããŠäžçã«å ¬éãããŸãã
ã¢ããªã±ãŒã·ã§ã³ ãšã³ããã€ã³ã ã¢ããªã±ãŒã·ã§ã³ã«ãã£ãŠå ¬éãããã¢ããªã±ãŒã·ã§ã³ã«ãã£ãŠå®è£ ããããµãŒãã¹ ã³ã³ãã©ã¯ãã«å¯Ÿå¿ãããšã³ããã€ã³ãã
ã€ã³ãã©ã¹ãã©ã¯ã㣠ãšã³ããã€ã³ã ãµãŒãã¹ ã³ã³ãã©ã¯ãã«é¢é£ããªããµãŒãã¹ã§å¿ èŠãŸãã¯æäŸãããæ©èœã容æã«ããããã«ã€ã³ãã©ã¹ãã©ã¯ãã£ã«ãã£ãŠå ¬éããããšã³ããã€ã³ãã ããšãã°ããµãŒãã¹ã«ã¡ã¿ããŒã¿æ å ±ãæäŸããã€ã³ãã©ã¹ãã©ã¯ã㣠ãšã³ããã€ã³ãããããšããŸãã
äœæ ã¡ãã»ãŒãžãåä¿¡ããå Žæãæå®ããŸãã URI (Uniform Resource Identifier) ãšããŠæå®ãããŸãã URI ã¹ããŒãéšåã§ã¯ãHTTP ã TCP ãªã©ãã¢ãã¬ã¹ã«å°éããããã«äœ¿çšãããã©ã³ã¹ããŒã ã¡ã«ããºã ã®ååãä»ããããŸãã URI ã®éå±€éšåã«ã¯ã圢åŒããã©ã³ã¹ããŒã ã¡ã«ããºã ã«äŸåããäžæã®å Žæãå«ãŸããŠããŸãã
ãšã³ããã€ã³ã ã¢ãã¬ã¹ã䜿çšãããšããµãŒãã¹å ã®ãšã³ããã€ã³ãããšã«äžæã®ãšã³ããã€ã³ã ã¢ãã¬ã¹ãäœæããããç¹å®ã®æ¡ä»¶äžã§ãšã³ããã€ã³ãéã§ã¢ãã¬ã¹ãå ±æãããã§ããŸãã æ¬¡ã®äŸã¯ãæ¢å®ä»¥å€ã®ããŒãã§ HTTPS ãããã³ã«ã䜿çšããã¢ãã¬ã¹ã瀺ããŠããŸãã
HTTPS://cohowinery:8005/ServiceModelSamples/CalculatorService
ãã€ã³ãã£ã³ã° ãšã³ããã€ã³ããäžçãšéä¿¡ããæ¹æ³ãå®çŸ©ããŸãã ããã¯ãéä¿¡ã€ã³ãã©ã¹ãã©ã¯ãã£ãäœæããããã«ãäžæ¹ã仿¹ã®äžã« "ã¹ã¿ãã¯" ãããã€ã³ãã£ã³ã°èŠçŽ ãšåŒã°ããäžé£ã®ã³ã³ããŒãã³ãã§æ§æãããŸãã å°ãªããšãããã€ã³ãã£ã³ã°ã¯ãã©ã³ã¹ããŒã (HTTP ã TCP ãªã©) ãšäœ¿çšããããšã³ã³ãŒã (ããã¹ãããã€ããªãªã©) ãå®çŸ©ããŸãã ãã€ã³ãã£ã³ã°ã«ã¯ãã¡ãã»ãŒãžãã»ãã¥ãªãã£ã§ä¿è·ããããã«äœ¿çšãããã»ãã¥ãªã㣠ã¡ã«ããºã ããšã³ããã€ã³ãã§äœ¿çšãããã¡ãã»ãŒãž ãã¿ãŒã³ãªã©ã®è©³çްãæå®ãããã€ã³ãã£ã³ã°èŠçŽ ãå«ããããšãã§ããŸãã 詳现ã«ã€ããŠã¯ãããµãŒãã¹ã® æ§æããåç §ããŠãã ããã
Binding èŠçŽ ãã©ã³ã¹ããŒãããšã³ã³ãŒããã€ã³ãã©ã¹ãã©ã¯ã㣠ã¬ãã«ãããã³ã« (WS-ReliableMessagingãªã©) ã®å®è£ ããŸãã¯éä¿¡ã¹ã¿ãã¯ã®ãã®ä»ã®ã³ã³ããŒãã³ããªã©ããã€ã³ãã£ã³ã°ã®ç¹å®ã®éšåã衚ããŸãã
åäœ ãµãŒãã¹ããšã³ããã€ã³ããç¹å®ã®æäœããŸãã¯ã¯ã©ã€ã¢ã³ãã®ããŸããŸãªã©ã³ã¿ã€ã åŽé¢ãå¶åŸ¡ããã³ã³ããŒãã³ãã åäœã¯ã¹ã³ãŒãã«åŸã£ãŠã°ã«ãŒãåãããŸããäžè¬çãªåäœã¯ãã¹ãŠã®ãšã³ããã€ã³ãã«ã°ããŒãã«ã«åœ±é¿ãããµãŒãã¹ã®åäœã¯ãµãŒãã¹é¢é£ã®åŽé¢ã«ã®ã¿åœ±é¿ãããšã³ããã€ã³ãã®åäœã¯ãšã³ããã€ã³ãé¢é£ã®ããããã£ã«ã®ã¿åœ±é¿ããæäœã¬ãã«ã®åäœã¯ç¹å®ã®æäœã«åœ±é¿ããŸãã ããšãã°ã1 ã€ã®ãµãŒãã¹åäœã¯èª¿æŽã§ããããã¯ãéå°ãªã¡ãã»ãŒãžãåŠçæ©èœãå§åããæããããå Žåã«ãµãŒãã¹ãã©ã®ããã«åå¿ããããæå®ããŸãã äžæ¹ããšã³ããã€ã³ãã®åäœã§ã¯ãã»ãã¥ãªãã£è³æ Œæ å ±ãæ€çŽ¢ããæ¹æ³ãå Žæãªã©ããšã³ããã€ã³ãã«é¢é£ããåŽé¢ã®ã¿ãå¶åŸ¡ããŸãã
ã·ã¹ãã æäŸã®ãã€ã³ã WCF ã«ã¯ãã·ã¹ãã æå®ã®ãã€ã³ãã倿°å«ãŸããŠããŸãã ãããã¯ãç¹å®ã®ã·ããªãªçšã«æé©åããããã€ã³ãèŠçŽ ã®ã³ã¬ã¯ã·ã§ã³ã§ãã ããšãã°ã WSHttpBinding ã¯ãããŸããŸãª WS-* 仿§ãå®è£ ãããµãŒãã¹ãšã®çžäºéçšæ§ã®ããã«èšèšãããŠããŸãã ãããã®å®çŸ©æžã¿ã®ãã€ã³ãã¯ãç¹å®ã®ã·ããªãªã«æ£ããé©çšã§ãããªãã·ã§ã³ã®ã¿ãæç€ºããããšã§ãæéãç¯çŽããŸãã å®çŸ©æžã¿ã®ãã€ã³ããèŠä»¶ãæºãããŠããªãå Žåã¯ãç¬èªã®ã«ã¹ã¿ã ãã€ã³ããäœæã§ããŸãã
æ§æãšã³ãŒãã£ã³ã° ã¢ããªã±ãŒã·ã§ã³ã®å¶åŸ¡ã¯ãã³ãŒãã£ã³ã°ãæ§æããŸãã¯äž¡æ¹ã®çµã¿åããã«ãã£ãŠè¡ãããšãã§ããŸãã æ§æã«ã¯ãã³ãŒãã®èšè¿°åŸã«åã³ã³ãã€ã«ããªããŠããéçºè 以å€ã®ãŠãŒã¶ãŒ (ãããã¯ãŒã¯ç®¡çè ãªã©) ãã¯ã©ã€ã¢ã³ããšãµãŒãã¹ã®ãã©ã¡ãŒã¿ãŒãèšå®ã§ãããšããå©ç¹ããããŸãã æ§æã§ã¯ããšã³ããã€ã³ã ã¢ãã¬ã¹ãªã©ã®å€ãèšå®ã§ããã ãã§ãªãããšã³ããã€ã³ãããã€ã³ããåäœã远å ã§ããããã«ããããšã§ãããã«å¶åŸ¡ããããšãã§ããŸãã ã³ãŒãã£ã³ã°ã䜿çšãããšãéçºè ã¯ãµãŒãã¹ãŸãã¯ã¯ã©ã€ã¢ã³ãã®ãã¹ãŠã®ã³ã³ããŒãã³ããå³å¯ã«å¶åŸ¡ã§ããæ§æãéããŠè¡ããããã¹ãŠã®èšå®ãæ€æ»ããå¿ èŠã«å¿ããŠã³ãŒãã«ãã£ãŠãªãŒããŒã©ã€ãããããšãã§ããŸãã
ãµãŒãã¹æäœ æäœã®æ©èœãå®è£ ãããµãŒãã¹ã®ã³ãŒãã§å®çŸ©ãããŠããããã·ãŒãžã£ã ãã®æäœã¯ãWCF ã¯ã©ã€ã¢ã³ãã®ã¡ãœãããšããŠã¯ã©ã€ã¢ã³ãã«å ¬éãããŸãã ã¡ãœããã¯å€ãè¿ãããšãã§ããçç¥å¯èœãªæ°ã®åŒæ°ãåãåã£ããããŸã£ããåŒæ°ãåãåããªãã£ãããå¿çãè¿ããªãã£ããããããšãã§ããŸãã ããšãã°ãåçŽãª "Hello" ãšããŠæ©èœããæäœããã¯ã©ã€ã¢ã³ãã®ãã¬ãŒã³ã¹ã®éç¥ãšããŠäœ¿çšããäžé£ã®æäœãéå§ã§ããŸãã
ãµãŒãã¹ ã³ã³ãã©ã¯ã è€æ°ã®é¢é£ããæäœã 1 ã€ã®æ©èœåäœã«çµã³ä»ããŸãã ã³ã³ãã©ã¯ãã§ã¯ããµãŒãã¹ã®åå空éã察å¿ããã³ãŒã«ãã㯠ã³ã³ãã©ã¯ãããã®ä»ã®èšå®ãªã©ããµãŒãã¹ ã¬ãã«ã®èšå®ãå®çŸ©ã§ããŸãã ã»ãšãã©ã®å Žåãã³ã³ãã©ã¯ãã¯ãéžæããããã°ã©ãã³ã°èšèªã§ã€ã³ã¿ãŒãã§ã€ã¹ãäœæãã ServiceContractAttribute 屿§ãã€ã³ã¿ãŒãã§ã€ã¹ã«é©çšããããšã«ãã£ãŠå®çŸ©ãããŸãã å®éã®ãµãŒãã¹ ã³ãŒãã¯ãã€ã³ã¿ãŒãã§ã€ã¹ãå®è£ ããããšã«ãã£ãŠåŸãããŸãã
æäœã³ã³ãã©ã¯ã æäœã³ã³ãã©ã¯ãã¯ãæäœã®ãã©ã¡ãŒã¿ãŒãšæ»ãå€ã®åãå®çŸ©ããŸãã ãµãŒãã¹ ã³ã³ãã©ã¯ããå®çŸ©ããã€ã³ã¿ãŒãã§ã€ã¹ãäœæãããšãã¯ãã³ã³ãã©ã¯ãã®äžéšã§ããåã¡ãœããå®çŸ©ã« OperationContractAttribute 屿§ãé©çšããããšã§ãæäœã³ã³ãã©ã¯ãã瀺ããŸãã æäœã¯ã1 ã€ã®ã¡ãã»ãŒãžãååŸã㊠1 ã€ã®ã¡ãã»ãŒãžãè¿ãããäžé£ã®åãåãåã£ãŠåãè¿ãããã«ã¢ãã«åã§ããŸãã åŸè ã®å Žåãã·ã¹ãã ã¯ããã®æäœã«äº€æããå¿ èŠãããã¡ãã»ãŒãžã®åœ¢åŒã決å®ããŸãã
ã¡ãã»ãŒãž ã³ã³ãã©ã¯ã ã¡ãã»ãŒãžã®åœ¢åŒã«ã€ããŠèª¬æããŸãã ããšãã°ãã¡ãã»ãŒãžèŠçŽ ãããããŒã𿬿ã®ã©ã¡ãã§äœ¿çšããããã¡ãã»ãŒãžã®èŠçŽ ã«ã©ã®ã¬ãã«ã®ã»ãã¥ãªãã£ãé©çšããå¿ èŠãããããªã©ã宣èšããŸãã
é害ã³ã³ãã©ã¯ã åŒã³åºãå ã«è¿ãããšãã§ãããšã©ãŒã瀺ãããã«ããµãŒãã¹æäœã«é¢é£ä»ããããšãã§ããŸãã æäœã«ã¯ã0 å以äžã®ãšã©ãŒãé¢é£ä»ããããšãã§ããŸãã ãããã®ãšã©ãŒã¯ãããã°ã©ãã³ã° ã¢ãã«ã®äŸå€ãšããŠã¢ãã«åããã SOAP ãšã©ãŒã§ãã
ããŒã¿ ã³ã³ãã©ã¯ã ãµãŒãã¹ã䜿çšããããŒã¿åã®ã¡ã¿ããŒã¿ã®èª¬æã ããã«ãããä»ã®ãŠãŒã¶ãŒããµãŒãã¹ãšçžäºéçšã§ããããã«ãªããŸãã ããŒã¿åã¯ããã©ã¡ãŒã¿ãŒãæ»ãå€ã®åãªã©ãã¡ãã»ãŒãžã®ä»»æã®éšåã§äœ¿çšã§ããŸãã ãµãŒãã¹ã§åçŽåã®ã¿ã䜿çšããŠããå ŽåãããŒã¿ ã³ã³ãã©ã¯ããæç€ºçã«äœ¿çšããå¿ èŠã¯ãããŸããã
ãã¹ãã£ã³ã° ãµãŒãã¹ã¯ãäœããã®ããã»ã¹ã§ãã¹ããããŠããå¿ èŠããããŸãã ãã¹ãã¯ããµãŒãã¹ã®æå¹æéãå¶åŸ¡ããã¢ããªã±ãŒã·ã§ã³ã§ãã ãµãŒãã¹ã¯ãæ¢åã®ãã¹ãã£ã³ã° ããã»ã¹ã«ãã£ãŠã»ã«ããã¹ããããŸãã¯ç®¡çã§ããŸãã
ã»ã«ããã¹ããã ãµãŒãã¹ éçºè ãäœæããããã»ã¹ ã¢ããªã±ãŒã·ã§ã³å ã§å®è¡ããããµãŒãã¹ã éçºè ã¯ããã®æå¹æéãå¶åŸ¡ãããµãŒãã¹ã®ããããã£ãèšå®ãããµãŒãã¹ãéã (ãªãã¹ã³ ã¢ãŒãã«èšå®ããŸã)ããµãŒãã¹ãéããŸãã
ãã¹ãã£ã³ã° ããã»ã¹ ãµãŒãã¹ããã¹ãããããã«èšèšãããã¢ããªã±ãŒã·ã§ã³ã ããã«ã¯ãã€ã³ã¿ãŒããã ã€ã³ãã©ã¡ãŒã·ã§ã³ ãµãŒãã¹ (IIS)ãWindows ã©ã€ã»ã³ã¹èªèšŒãµãŒãã¹ (WAS)ãããã³ Windows ãµãŒãã¹ãå«ãŸããŸãã ãããã®ãã¹ããããã·ããªãªã§ã¯ããã¹ãã¯ãµãŒãã¹ã®æå¹æéãå¶åŸ¡ããŸãã ããšãã°ãIIS ã䜿çšããŠããµãŒãã¹ ã¢ã»ã³ããªãšæ§æãã¡ã€ã«ãå«ãä»®æ³ãã£ã¬ã¯ããªãèšå®ã§ããŸãã ã¡ãã»ãŒãžãåä¿¡ãããšãIIS ã¯ãµãŒãã¹ãéå§ãããã®æå¹æéãå¶åŸ¡ããŸãã
ã€ã³ã¹ã¿ã³ã¹ ãµãŒãã¹ã«ã¯ã€ã³ã¹ã¿ã³ã¹åã¢ãã«ããããŸãã 3 ã€ã®ã€ã³ã¹ã¿ã³ã¹åã¢ãã«ããããŸãã"åäž" ã§ã¯ã1 ã€ã® CLR ãªããžã§ã¯ãããã¹ãŠã®ã¯ã©ã€ã¢ã³ãã«ãµãŒãã¹ãæäŸããŸããåã¯ã©ã€ã¢ã³ãåŒã³åºããåŠçããæ°ãã CLR ãªããžã§ã¯ããäœæãããŸãããš "ã»ãã·ã§ã³ããš"ãCLR ãªããžã§ã¯ãã®ã»ãããäœæãããŸããããã¯ãåå¥ã®ã»ãã·ã§ã³ããšã« 1 ã€ãã€ã§ãã ã€ã³ã¹ã¿ã³ã¹åã¢ãã«ã®éžæã¯ãã¢ããªã±ãŒã·ã§ã³ã®èŠä»¶ãšãµãŒãã¹ã®äºæ³ããã䜿çšãã¿ãŒã³ã«ãã£ãŠç°ãªããŸãã
ã¯ã©ã€ã¢ã³ã ã¢ããªã±ãŒã·ã§ã³ 1 ã€ä»¥äžã®ãšã³ããã€ã³ããšã¡ãã»ãŒãžã亀æããããã°ã©ã ã ã¯ã©ã€ã¢ã³ã ã¢ããªã±ãŒã·ã§ã³ã¯ããŸã WCF ã¯ã©ã€ã¢ã³ãã®ã€ã³ã¹ã¿ã³ã¹ãäœæããWCF ã¯ã©ã€ã¢ã³ãã®ã¡ãœãããåŒã³åºããŸãã 1 ã€ã®ã¢ããªã±ãŒã·ã§ã³ãã¯ã©ã€ã¢ã³ããšãµãŒãã¹ã®äž¡æ¹ã«ãªãããšã«æ³šæããããšãéèŠã§ãã
ãã£ã³ãã« ãã€ã³ãèŠçŽ ã®å ·è±¡å®è£ ã ãã€ã³ãã£ã³ã°ã¯æ§æã衚ãããã£ãã«ã¯ãã®æ§æã«é¢é£ä»ããããŠããå®è£ ã§ãã ãã®ãããåãã€ã³ãèŠçŽ ã«é¢é£ä»ãããããã£ãã«ããããŸãã ãã£ãã«ã¯äºãã«éãªã£ãŠããã€ã³ãã£ã³ã°ã®å ·è±¡å®è£ ã§ãããã£ãã« ã¹ã¿ãã¯ãäœæããŸãã
WCF ã¯ã©ã€ã¢ã³ã ãµãŒãã¹æäœãã¡ãœãããšããŠå ¬éããã¯ã©ã€ã¢ã³ã ã¢ããªã±ãŒã·ã§ã³ã³ã³ã¹ãã©ã¯ã (Visual Basic ã Visual C# ãªã©ãéžæãã .NET Framework ããã°ã©ãã³ã°èšèª)ã ãµãŒãã¹ããã¹ãããã¢ããªã±ãŒã·ã§ã³ãå«ããä»»æã®ã¢ããªã±ãŒã·ã§ã³ã§ WCF ã¯ã©ã€ã¢ã³ãããã¹ãã§ããŸãã ãã®ãããä»ã®ãµãŒãã¹ã® WCF ã¯ã©ã€ã¢ã³ããå«ããµãŒãã¹ãäœæã§ããŸãã
WCF ã¯ã©ã€ã¢ã³ãã¯ã ServiceModel ã¡ã¿ããŒã¿ ãŠãŒãã£ãªã㣠ããŒã« (Svcutil.exe) ã䜿çšããŠãã¡ã¿ããŒã¿ãçºè¡ããå®è¡äžã®ãµãŒãã¹ããã€ã³ãããããšã«ãã£ãŠèªåçã«çæã§ããŸãã
ã¡ã¿ããŒã¿ ãµãŒãã¹ã§ã¯ãå€éšãšã³ãã£ãã£ããµãŒãã¹ãšéä¿¡ããããã«çè§£ããå¿ èŠããããµãŒãã¹ã®ç¹æ§ã«ã€ããŠèª¬æããŸãã ã¡ã¿ããŒã¿ã¯ ServiceModel ã¡ã¿ããŒã¿ ãŠãŒãã£ãªã㣠ããŒã« (Svcutil.exe) ã«ãã£ãŠäœ¿çšãããWCF ã¯ã©ã€ã¢ã³ããšãã¯ã©ã€ã¢ã³ã ã¢ããªã±ãŒã·ã§ã³ããµãŒãã¹ãšã®å¯Ÿè©±ã«äœ¿çšã§ããä»éããæ§æãçæã§ããŸãã
ãµãŒãã¹ã«ãã£ãŠå ¬éãããã¡ã¿ããŒã¿ã«ã¯ããµãŒãã¹ã®ããŒã¿ ã³ã³ãã©ã¯ããå®çŸ©ãã XML ã¹ããŒã ããã¥ã¡ã³ããšããµãŒãã¹ã®ã¡ãœãããèšè¿°ãã WSDL ããã¥ã¡ã³ããå«ãŸããŸãã
æå¹ã«ãããšããµãŒãã¹ãšãã®ãšã³ããã€ã³ãã調ã¹ãããšã§ãWCF ã«ãã£ãŠãµãŒãã¹ã®ã¡ã¿ããŒã¿ãèªåçã«çæãããŸãã ãµãŒãã¹ããã¡ã¿ããŒã¿ãçºè¡ããã«ã¯ãã¡ã¿ããŒã¿ã®åäœãæç€ºçã«æå¹ã«ããå¿ èŠããããŸãã
å®å š WCF ã§ã¯ãæ©å¯æ§ (ååãé²ãããã®ã¡ãã»ãŒãžã®æå·å)ãæŽåæ§ (ã¡ãã»ãŒãžã®æ¹ãããæ€åºããææ®µ)ãèªèšŒ (ãµãŒããŒãšã¯ã©ã€ã¢ã³ãã®æ€èšŒææ®µ)ãæ¿èª (ãªãœãŒã¹ãžã®ã¢ã¯ã»ã¹å¶åŸ¡) ãå«ãŸããŸãã ãããã®æ©èœã¯ãTLS over HTTP (HTTPS ãšãåŒã°ããŸã) ãªã©ã®æ¢åã®ã»ãã¥ãªã㣠ã¡ã«ããºã ãå©çšããããããŸããŸãª WS-* ã»ãã¥ãªãã£ä»æ§ã® 1 ã€ä»¥äžãå®è£ ããããšã«ãã£ãŠæäŸãããŸãã
ãã©ã³ã¹ããŒã ã»ãã¥ãªã㣠ã¢ãŒã æ©å¯æ§ãæŽåæ§ãããã³èªèšŒããã©ã³ã¹ããŒãå±€ã¡ã«ããºã (HTTPS ãªã©) ã«ãã£ãŠæäŸãããããšãæå®ããŸãã HTTPS ã®ãããªãã©ã³ã¹ããŒãã䜿çšããå Žåããã®ã¢ãŒãã¯ããã©ãŒãã³ã¹ãå¹ççã§ãããšããå©ç¹ããããã€ã³ã¿ãŒãããäžã§ã®æ®åã®ããã«ååã«çè§£ãããŠããŸãã æ¬ ç¹ã¯ããã®çš®ã®ã»ãã¥ãªãã£ãéä¿¡ãã¹ã®åãããã«åå¥ã«é©çšãããéä¿¡ã "äžéè " æ»æã®åœ±é¿ãåãããããªããŸãã
ã¡ãã»ãŒãž ã»ãã¥ãªã㣠ã¢ãŒãWeb Services Security: SOAP Message Security ãšããååã®ä»æ§ãªã©ã1 ã€ä»¥äžã®ã»ãã¥ãªãã£ä»æ§ãå®è£ ããããšã«ãã£ãŠã»ãã¥ãªãã£ãæäŸããããšãæå®ããŸãã åã¡ãã»ãŒãžã«ã¯ã転éäžã«ã»ãã¥ãªãã£ãæäŸããåä¿¡è ãæ¹ãããæ€åºããŠã¡ãã»ãŒãžã埩å·åã§ããããã«ããããã«å¿ èŠãªã¡ã«ããºã ãå«ãŸããŠããŸãã ãã®æå³ã§ãã»ãã¥ãªãã£ã¯ãã¹ãŠã®ã¡ãã»ãŒãžå ã«ã«ãã»ã«åãããè€æ°ã®ãããã«ããã£ãŠãšã³ãããŒãšã³ãã®ã»ãã¥ãªãã£ãæäŸãããŸãã ã»ãã¥ãªãã£æ å ±ã¯ã¡ãã»ãŒãžã®äžéšã«ãªããããã¡ãã»ãŒãžã«è€æ°ã®çš®é¡ã®è³æ Œæ å ±ãå«ããããšãã§ããŸã (ããã㯠ã¯ã¬ãŒã ãšåŒã°ããŸã)ã ãã®æ¹æ³ã«ã¯ãã¡ãã»ãŒãžãé ä¿¡å ãšéä¿¡å ã®éã®è€æ°ã®ãã©ã³ã¹ããŒããå«ãããã¹ãŠã®ãã©ã³ã¹ããŒããå®å šã«ç§»åã§ãããšããå©ç¹ããããŸãã ãã®æ¹æ³ã®æ¬ ç¹ã¯ã䜿çšãããæå·åã¡ã«ããºã ã®è€éãã«ãã£ãŠãããã©ãŒãã³ã¹ã«åœ±é¿ãçããããšã§ãã
ã¡ãã»ãŒãžè³æ Œæ å ±ã»ãã¥ãªã㣠ã¢ãŒãã§ã®ãã©ã³ã¹ããŒã ãã©ã³ã¹ããŒãå±€ã䜿çšããŠã¡ãã»ãŒãžã®æ©å¯æ§ãèªèšŒãæŽåæ§ãæäŸããŸãããåã¡ãã»ãŒãžã«ã¯ã¡ãã»ãŒãžã®åä¿¡è ãå¿ èŠãšããè€æ°ã®è³æ Œæ å ± (èŠæ±) ãå«ããããšãã§ããŸãã
WS-* WS-SecurityãWS-ReliableMessaging ãªã©ãWCF ã§å®è£ ããã Web ãµãŒãã¹ (WS) 仿§ã®ã»ããã®ç瞮圢ã