Note
ãã®ããŒãžã«ã¢ã¯ã»ã¹ããã«ã¯ãæ¿èªãå¿ èŠã§ãã ãµã€ã³ã€ã³ãŸãã¯ãã£ã¬ã¯ããªã®å€æŽã詊ãããšãã§ããŸãã
ãã®ããŒãžã«ã¢ã¯ã»ã¹ããã«ã¯ãæ¿èªãå¿ èŠã§ãã ãã£ã¬ã¯ããªã®å€æŽã詊ãããšãã§ããŸãã
Microsoft ã¯ããšã³ã ãŠãŒã¶ãŒã®ãã©ã€ãã·ãŒä¿è·ã«åãçµãã§ããŸãã Windows Communication Foundation (WCF) ããŒãžã§ã³ 3.0 ã䜿çšããŠã¢ããªã±ãŒã·ã§ã³ããã«ããããšãã¢ããªã±ãŒã·ã§ã³ããšã³ã ãŠãŒã¶ãŒã®ãã©ã€ãã·ãŒã«åœ±é¿ãäžããå¯èœæ§ããããŸãã ããšãã°ãã¢ããªã±ãŒã·ã§ã³ããŠãŒã¶ãŒã®é£çµ¡å æ å ±ãæç€ºçã«åéããããã€ã³ã¿ãŒãããçµç±ã§ Web ãµã€ãã«æ å ±ãèŠæ±ãŸãã¯éä¿¡ãããããå ŽåããããŸãã ã¢ããªã±ãŒã·ã§ã³ã« Microsoft ãã¯ãããžãåã蟌ãå Žåããã®ãã¯ãããžã«ã¯ããã©ã€ãã·ãŒã«åœ±é¿ããå¯èœæ§ã®ããç¬èªã®åäœãååšããå¯èœæ§ããããŸãã WCF ã¯ãã客æ§ãŸãã¯ãšã³ã ãŠãŒã¶ãŒã Microsoft ã«éä¿¡ããããšãéžæããªãéããã¢ããªã±ãŒã·ã§ã³ãã Microsoft ã«æ å ±ãéä¿¡ããŸããã
WCF ã®æŠèŠ
WCF ã¯ãéçºè ã忣ã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ã§ããããã«ãã Microsoft .NET Framework ã䜿çšãã忣ã¡ãã»ãŒãžã³ã° ãã¬ãŒã ã¯ãŒã¯ã§ãã 2 ã€ã®ã¢ããªã±ãŒã·ã§ã³éã§éä¿¡ãããã¡ãã»ãŒãžã«ã¯ãããããŒãšæ¬æã®æ å ±ãå«ãŸããŸãã
ããããŒã«ã¯ãã¢ããªã±ãŒã·ã§ã³ã§äœ¿çšããããµãŒãã¹ã«å¿ããŠãã¡ãã»ãŒãž ã«ãŒãã£ã³ã°ãã»ãã¥ãªãã£æ
å ±ããã©ã³ã¶ã¯ã·ã§ã³ãªã©ãå«ãŸããå ŽåããããŸãã éåžžãã¡ãã»ãŒãžã¯æ¢å®ã§æå·åãããŸãã 1 ã€ã®äŸå€ã¯ãã»ãã¥ãªãã£ã§ä¿è·ãããŠããªãã¬ã¬ã· Web ãµãŒãã¹ã§äœ¿çšããããã«èšèšããã BasicHttpBindingã䜿çšããå Žåã§ãã ã¢ããªã±ãŒã·ã§ã³ ãã¶ã€ããŒã¯ãæçµçãªèšèšãæ
åœããŸãã SOAP æ¬æå
ã®ã¡ãã»ãŒãžã«ã¯ãã¢ããªã±ãŒã·ã§ã³åºæã®ããŒã¿ãå«ãŸããŠããŸãããã ãããã®ããŒã¿ (ã¢ããªã±ãŒã·ã§ã³å®çŸ©ã®å人æ
å ±ãªã©) ã¯ãWCF æå·åãŸãã¯æ©å¯æ§ã®æ©èœã䜿çšããŠä¿è·ã§ããŸãã æ¬¡ã®ã»ã¯ã·ã§ã³ã§ã¯ããã©ã€ãã·ãŒã«åœ±é¿ããå¯èœæ§ãããæ©èœã«ã€ããŠèª¬æããŸãã
Messaging
å WCF ã¡ãã»ãŒãžã«ã¯ãã¡ãã»ãŒãžã®éä¿¡å ãšå¿çã®éä¿¡å ãæå®ããã¢ãã¬ã¹ ããããŒããããŸãã
ãšã³ããã€ã³ã ã¢ãã¬ã¹ã®ã¢ãã¬ã¹ ã³ã³ããŒãã³ãã¯ããšã³ããã€ã³ããèå¥ãã URI (Uniform Resource Identifier) ã§ãã ã¢ãã¬ã¹ã«ã¯ããããã¯ãŒã¯ ã¢ãã¬ã¹ãŸãã¯è«çã¢ãã¬ã¹ãæå®ã§ããŸãã ã¢ãã¬ã¹ã«ã¯ãã³ã³ãã¥ãŒã¿ãŒå (ãã¹ãåãå®å šä¿®é£Ÿãã¡ã€ã³å) ãš IP ã¢ãã¬ã¹ãå«ããããšãã§ããŸãã ãšã³ããã€ã³ã ã¢ãã¬ã¹ã«ã¯ãã°ããŒãã«äžæèå¥å (GUID) ããåã¢ãã¬ã¹ãèå¥ããããã«äœ¿çšãããäžæçãªã¢ãã¬ã¹æå®çšã® GUID ã®ã³ã¬ã¯ã·ã§ã³ãå«ããããšãã§ããŸãã åã¡ãã»ãŒãžã«ã¯ãGUID 圢åŒã®ã¡ãã»ãŒãž ID ããããŸãã ãã®æ©èœã¯ãWS-Addressing ãªãã¡ã¬ã³ã¹æšæºã«åŸããŸãã
WCF ã¡ãã»ãŒãžã³ã° å±€ã¯ãããŒã«ã« ã³ã³ãã¥ãŒã¿ãŒã«å人æ å ±ãæžã蟌ãããšã¯ãããŸããã ãã ãããµãŒãã¹éçºè ããã®ãããªæ å ±ãå ¬éãããµãŒãã¹ãäœæããå Žå (ããšãã°ããšã³ããã€ã³ãåã§ãŠãŒã¶ãŒã®ååã䜿çšãããããšã³ããã€ã³ãã® Web ãµãŒãã¹èšè¿°èšèªã«å人æ å ±ãå«ãããããŠãã¯ã©ã€ã¢ã³ãã WSDL ã«ã¢ã¯ã»ã¹ããããã« https ã䜿çšããå¿ èŠããªãå Žåãªã©) ã¯ããããã¯ãŒã¯ ã¬ãã«ã§å人æ å ±ãäŒéãããå¯èœæ§ããããŸãã ãŸããéçºè ããå人æ å ±ãå ¬éãããšã³ããã€ã³ãã«å¯Ÿã㊠ServiceModel ã¡ã¿ããŒã¿ ãŠãŒãã£ãªã㣠ããŒã« (Svcutil.exe) ããŒã«ãå®è¡ãããšãããŒã«ã®åºåã«ãã®æ å ±ãå«ãŸããå¯èœæ§ããããåºåãã¡ã€ã«ã¯ããŒã«ã« ããŒã ãã£ã¹ã¯ã«æžã蟌ãŸããŸãã
Hosting
WCF ã®ãã¹ãã£ã³ã°æ©èœã䜿çšãããšãã¢ããªã±ãŒã·ã§ã³ããªã³ããã³ãã§éå§ããããè€æ°ã®ã¢ããªã±ãŒã·ã§ã³éã§ããŒãå ±æãæå¹ã«ãããã§ããŸãã WCF ã¢ããªã±ãŒã·ã§ã³ã¯ãASP.NET ãšåæ§ã«ãã€ã³ã¿ãŒããã ã€ã³ãã©ã¡ãŒã·ã§ã³ ãµãŒãã¹ (IIS) ã§ãã¹ãã§ããŸãã
ãã¹ãã£ã³ã°ã§ã¯ããããã¯ãŒã¯äžã®ç¹å®ã®æ å ±ã¯å ¬éãããããã·ã³äžã®ããŒã¿ã¯ä¿æãããŸããã
ã¡ãã»ãŒãžã®ã»ãã¥ãªãã£
WCF ã»ãã¥ãªãã£ã¯ãã¡ãã»ãŒãžã³ã° ã¢ããªã±ãŒã·ã§ã³ã®ã»ãã¥ãªãã£æ©èœãæäŸããŸãã æäŸãããã»ãã¥ãªãã£æ©èœã«ã¯ãèªèšŒãšæ¿èªãå«ãŸããŸãã
èªèšŒã¯ãã¯ã©ã€ã¢ã³ããšãµãŒãã¹ã®éã§è³æ Œæ å ±ãæž¡ãããšã«ãã£ãŠå®è¡ãããŸãã èªèšŒã¯ããã©ã³ã¹ããŒã ã¬ãã«ã®ã»ãã¥ãªãã£ã䜿çšããããæ¬¡ã®ããã« SOAP ã¡ãã»ãŒãž ã¬ãã«ã®ã»ãã¥ãªãã£ã䜿çšããŠè¡ãããšãã§ããŸãã
SOAP ã¡ãã»ãŒãž ã»ãã¥ãªãã£ã§ã¯ãèªèšŒã¯ããŠãŒã¶ãŒå/ãã¹ã¯ãŒããX.509 èšŒææžãKerberos ãã±ãããSAML ããŒã¯ã³ãªã©ã®è³æ Œæ å ±ã䜿çšããŠå®è¡ãããŸãããããã¯ãã¹ãŠãçºè¡è ã«å¿ããŠå人æ å ±ãå«ãå¯èœæ§ããããŸãã
ãã©ã³ã¹ããŒã ã»ãã¥ãªãã£ã䜿çšãããšãHTTP èªèšŒã¹ããŒã (BasicãDigestãNegotiateãIntegrated Windows AuthorizationãNTLMãNoneãAnonymous) ãªã©ã®åŸæ¥ã®ãã©ã³ã¹ããŒãèªèšŒã¡ã«ããºã ã䜿çšããŠèªèšŒãè¡ããããã©ãŒã èªèšŒãè¡ãããŸãã
èªèšŒã«ãããéä¿¡ãšã³ããã€ã³ãéã§ã»ãã¥ãªãã£ã§ä¿è·ãããã»ãã·ã§ã³ã確ç«ãããå¯èœæ§ããããŸãã ã»ãã·ã§ã³ã¯ãã»ãã¥ãªã㣠ã»ãã·ã§ã³ã®æå¹æéãç¶ã GUID ã«ãã£ãŠèå¥ãããŸãã æ¬¡ã®è¡šã¯ãä¿æãããå 容ãšå Žæã瀺ããŠããŸãã
| ããŒã¿ | Storage |
|---|---|
| ãŠãŒã¶ãŒåãX.509 èšŒææžãKerberos ããŒã¯ã³ãè³æ Œæ å ±ãžã®åç §ãªã©ã®ãã¬ãŒã³ããŒã·ã§ã³è³æ Œæ å ±ã | Windows èšŒææžã¹ãã¢ãªã©ã®æšæºç㪠Windows è³æ Œæ å ±ç®¡çã¡ã«ããºã ã |
| ãŠãŒã¶ãŒåããã¹ã¯ãŒããªã©ã®ãŠãŒã¶ãŒ ã¡ã³ããŒã·ããæ å ±ã | ASP.NET ã¡ã³ããŒã·ãã ãããã€ããŒã |
| ã¯ã©ã€ã¢ã³ãã«å¯ŸãããµãŒãã¹ã®èªèšŒã«äœ¿çšããããµãŒãã¹ã«é¢ãã ID æ å ±ã | ãµãŒãã¹ã®ãšã³ããã€ã³ã ã¢ãã¬ã¹ã |
| åŒã³åºãå æ å ±ã | ç£æ»ãã°ã |
ç£æ»
ç£æ»ã§ã¯ãèªèšŒã€ãã³ããšæ¿èªã€ãã³ãã®æåãšå€±æãèšé²ãããŸãã ç£æ»ã¬ã³ãŒãã«ã¯ããµãŒãã¹ URIãã¢ã¯ã·ã§ã³ URIãããã³åŒã³åºãå ã® ID ãšããããŒã¿ãå«ãŸããŸãã
ãŸããã¡ãã»ãŒãž ãã°ã¯ã¢ããªã±ãŒã·ã§ã³åºæã®ããŒã¿ãããããŒã𿬿ã«èšé²ããå¯èœæ§ãããããã管çè ãã¡ãã»ãŒãž ãã°ã®æ§æãå€æŽ (ãªã³ãŸãã¯ãªã) ãããšãã«ãèšé²ãããŸãã Windows XP ã®å Žåãã¢ããªã±ãŒã·ã§ã³ ã€ãã³ã ãã°ã«ã¬ã³ãŒããèšé²ãããŸãã Windows Vista ããã³ Windows Server 2003 ã®å Žåãã»ãã¥ãªã㣠ã€ãã³ã ãã°ã«ã¬ã³ãŒããèšé²ãããŸãã
ãã©ã³ã¶ã¯ã·ã§ã³
ãã©ã³ã¶ã¯ã·ã§ã³æ©èœã¯ãWCF ã¢ããªã±ãŒã·ã§ã³ã«ãã©ã³ã¶ã¯ã·ã§ã³ ãµãŒãã¹ãæäŸããŸãã
ãã©ã³ã¶ã¯ã·ã§ã³äŒéã§äœ¿çšããããã©ã³ã¶ã¯ã·ã§ã³ ããããŒã«ã¯ããã©ã³ã¶ã¯ã·ã§ã³ ID ãŸãã¯åå ID (GUID) ãå«ãŸããŠããå ŽåããããŸãã
ãã©ã³ã¶ã¯ã·ã§ã³æ©èœã¯ãMicrosoft 忣ãã©ã³ã¶ã¯ã·ã§ã³ ã³ãŒãã£ããŒã¿ãŒ (MSDTC) ãã©ã³ã¶ã¯ã·ã§ã³ ãããŒãžã£ãŒ (Windows ã³ã³ããŒãã³ã) ã䜿çšããŠãã©ã³ã¶ã¯ã·ã§ã³ã®ç¶æ ã管çããŸãã æ¢å®ã§ã¯ããã©ã³ã¶ã¯ã·ã§ã³ ãããŒãžã£ãŒéã®éä¿¡ã¯æå·åãããŸãã ãã©ã³ã¶ã¯ã·ã§ã³ ãããŒãžã£ãŒã¯ããšã³ããã€ã³ãåç §ããã©ã³ã¶ã¯ã·ã§ã³ IDãåå ID ãæ°žç¶çãªç¶æ ã®äžéšãšããŠãã°ã«èšé²ã§ããŸãã ãã®ç¶æ ã®æå¹æéã¯ããã©ã³ã¶ã¯ã·ã§ã³ ãããŒãžã£ãŒã®ãã° ãã¡ã€ã«ã®æå¹æéã«ãã£ãŠæ±ºãŸããŸãã MSDTC ãµãŒãã¹ã¯ããã®ãã°ãææããä¿æããŸãã
ãã©ã³ã¶ã¯ã·ã§ã³æ©èœã¯ãWS-Coordination ããã³ãã©ã³ã¶ã¯ã·ã§ã³æšæº WS-Atomic å®è£ ããŸãã
ä¿¡é Œã§ããã»ãã·ã§ã³
WCF ã®ä¿¡é Œã§ããã»ãã·ã§ã³ã¯ããã©ã³ã¹ããŒããŸãã¯äžéãšã©ãŒãçºçãããšãã«ã¡ãã»ãŒãžã転éããŸãã åºã«ãªããã©ã³ã¹ããŒããåæãããå Žå (ã¯ã€ã€ã¬ã¹ ãããã¯ãŒã¯äžã® TCP æ¥ç¶ãªã©)ãã¡ãã»ãŒãžã倱ãããå Žå (HTTP ãããã·ã«ããéä¿¡ã¡ãã»ãŒãžãŸãã¯åä¿¡ã¡ãã»ãŒãžã®ãããã) ãçºçããå Žåã§ããã¡ãã»ãŒãžã®æ£ç¢ºãª 1 åéãã®è»¢éãæäŸãããŸãã ãŸããä¿¡é Œã§ããã»ãã·ã§ã³ã§ã¯ãã¡ãã»ãŒãžã®äžŠã¹æ¿ã (ãã«ããã¹ ã«ãŒãã£ã³ã°ã®å Žåã«çºçããå¯èœæ§ããããŸã) ãå埩ãããã¡ãã»ãŒãžãéä¿¡ãããé åºãç¶æãããŸãã
ä¿¡é Œã§ããã»ãã·ã§ã³ã¯ãWS-ReliableMessaging (WS-RM) ãããã³ã«ã䜿çšããŠå®è£ ãããŸãã ã»ãã·ã§ã³æ å ±ãå«ãããã㌠WS-RM 远å ããŸããããã¯ãç¹å®ã®ä¿¡é Œã§ããã»ãã·ã§ã³ã«é¢é£ä»ããããŠãããã¹ãŠã®ã¡ãã»ãŒãžãèå¥ããããã«äœ¿çšãããŸãã å WS-RM ã»ãã·ã§ã³ã«ã¯ãGUID ã§ããèå¥åããããŸãã
ãšã³ã ãŠãŒã¶ãŒã®ã³ã³ãã¥ãŒã¿ãŒã«å人æ å ±ã¯ä¿æãããŸããã
ãã¥ãŒã«çœ®ããããã£ãã«
ãã¥ãŒã¯ãåä¿¡åŽã¢ããªã±ãŒã·ã§ã³ã«ä»£ãã£ãŠéä¿¡åŽã¢ããªã±ãŒã·ã§ã³ããã®ã¡ãã»ãŒãžãæ ŒçŽããåŸã§ãããã®ã¡ãã»ãŒãžãåä¿¡åŽã¢ããªã±ãŒã·ã§ã³ã«è»¢éããŸãã åä¿¡ã¢ããªã±ãŒã·ã§ã³ãäžæçãªå Žåãªã©ãã¢ããªã±ãŒã·ã§ã³ã®éä¿¡ããåä¿¡ã¢ããªã±ãŒã·ã§ã³ãžã®ã¡ãã»ãŒãžã®è»¢éã確å®ã«è¡ãã®ã«åœ¹ç«ã¡ãŸãã WCF ã§ã¯ããã©ã³ã¹ããŒããšã㊠Microsoft Message Queuing (MSMQ) ã䜿çšããŠãã¥ãŒããµããŒãããŠããŸãã
ãã¥ãŒã«ç»é²ããããã£ãã«æ©èœã¯ãã¡ãã»ãŒãžã«ããããŒã远å ããŸããã 代ããã«ãé©åãªã¡ãã»ãŒãž ãã¥ãŒ ã¡ãã»ãŒãž ããããã£ãèšå®ãããã¡ãã»ãŒãž ãã¥ãŒ ã¡ãã»ãŒãžãäœæããã¡ãã»ãŒãž ãã¥ãŒ ã¡ãœãããåŒã³åºããŠã¡ãã»ãŒãž ãã¥ãŒ ãã¥ãŒã«ã¡ãã»ãŒãžãé 眮ããŸãã ã¡ãã»ãŒãž ãã¥ãŒã¯ãWindows ã«ä»å±ãããªãã·ã§ã³ã®ã³ã³ããŒãã³ãã§ãã
ãã¥ãŒã«ç»é²ããããã£ãã«æ©èœã«ãã£ãŠãšã³ã ãŠãŒã¶ãŒã®ãã·ã³ã«æ å ±ã¯ä¿æãããŸããããã¥ãŒ ã€ã³ãã©ã¹ãã©ã¯ãã£ãšããŠã¡ãã»ãŒãž ãã¥ãŒã䜿çšãããããã§ãã
COM+ ã®çµ±å
ãã®æ©èœã¯ãæ¢åã® COM ããã³ COM+ æ©èœãã©ããããŠãWCF ãµãŒãã¹ãšäºææ§ã®ãããµãŒãã¹ãäœæããŸãã ãã®æ©èœã§ã¯ãç¹å®ã®ããããŒã¯äœ¿çšãããããšã³ã ãŠãŒã¶ãŒã®ã³ã³ãã¥ãŒã¿ãŒäžã®ããŒã¿ã¯ä¿æãããŸããã
COM ãµãŒãã¹èå¥å
ããã«ãããæšæºã® WCF ã¯ã©ã€ã¢ã³ãã«ã¢ã³ãããŒãžã ã©ãããŒãæäŸãããŸãã ãã®æ©èœã¯ããããã¯ãŒã¯äžã«ç¹å®ã®ããããŒãæããããã·ã³äžã«ããŒã¿ãä¿æããããšããããŸããã
ã㢠ãã£ãã«
ã㢠ãã£ãã«ã䜿çšãããšãWCF ã䜿çšããŠãã«ãããŒã㣠ã¢ããªã±ãŒã·ã§ã³ãéçºã§ããŸãã ãã«ãããŒã㣠ã¡ãã»ãŒãžã³ã°ã¯ãã¡ãã·ã¥ã®ã³ã³ããã¹ãã§çºçããŸãã ã¡ãã·ã¥ã¯ãããŒããçµåã§ããååã«ãã£ãŠèå¥ãããŸãã ã㢠ãã£ãã«å ã®åããŒãã¯ããŠãŒã¶ãŒæå®ã®ããŒãã« TCP ãªã¹ããŒãäœæããå埩æ§ã確ä¿ããããã«ã¡ãã·ã¥å ã®ä»ã®ããŒããšã®æ¥ç¶ã確ç«ããŸãã ãŸããã¡ãã·ã¥å ã®ä»ã®ããŒãã«æ¥ç¶ããããã«ãããŒãã¯ããªã¹ã㌠ã¢ãã¬ã¹ããã·ã³ã® IP ã¢ãã¬ã¹ãªã©ãäžéšã®ããŒã¿ãã¡ãã·ã¥å ã®ä»ã®ããŒããšäº€æããŸãã ã¡ãã·ã¥å ã§éä¿¡ãããã¡ãã»ãŒãžã«ã¯ãã¡ãã»ãŒãžã®ã¹ããŒãã£ã³ã°ãæ¹ãããé²ãããã«ãéä¿¡è ã«é¢é£ããã»ãã¥ãªãã£æ å ±ãå«ããããšãã§ããŸãã
ãšã³ã ãŠãŒã¶ãŒã®ã³ã³ãã¥ãŒã¿ãŒã«å人æ å ±ã¯ä¿åãããŸããã
IT ãããã§ãã·ã§ãã«ãšã¯ã¹ããªãšã³ã¹
远跡
WCF ã€ã³ãã©ã¹ãã©ã¯ãã£ã®èšºææ©èœã¯ããã©ã³ã¹ããŒã ããã³ãµãŒãã¹ ã¢ãã« ã¬ã€ã€ãŒãééããã¡ãã»ãŒãžãšããããã®ã¡ãã»ãŒãžã«é¢é£ä»ããããŠããã¢ã¯ãã£ããã£ãšã€ãã³ãããã°ã«èšé²ããŸãã ãã®æ©èœã¯æ¢å®ã§ãªãã«ãªã£ãŠããŸãã ã¢ããªã±ãŒã·ã§ã³ã®æ§æãã¡ã€ã«ã䜿çšããŠæå¹ã«ãªããå®è¡æã« WCF WMI ãããã€ããŒã䜿çšããŠãã¬ãŒã¹åäœã倿Žã§ããŸãã æå¹ã«ãããšããã¬ãŒã¹ ã€ã³ãã©ã¹ãã©ã¯ãã£ã¯ãæ§æããããªã¹ããŒã«ã¡ãã»ãŒãžãã¢ã¯ãã£ããã£ãããã³åŠçã€ãã³ããå«ã蚺æãã¬ãŒã¹ãåºåããŸãã åºåã®åœ¢åŒãšå Žæã¯ã管çè ã®ãªã¹ããŒæ§æã®éžæè¢ã«ãã£ãŠæ±ºãŸããŸãããé垞㯠XML 圢åŒã®ãã¡ã€ã«ã§ãã 管çè ã¯ããã¬ãŒã¹ ãã¡ã€ã«ã«ã¢ã¯ã»ã¹å¶åŸ¡ãªã¹ã (ACL) ãèšå®ããå¿ èŠããããŸãã ç¹ã«ãWindows ã©ã€ã»ã³ã¹èªèšŒã·ã¹ãã (WAS) ã«ãã£ãŠãã¹ããããŠããå Žåã管çè ã¯ãå¿ èŠã§ãªãå Žåã¯ããã¡ã€ã«ããããªãã¯ä»®æ³ã«ãŒã ãã£ã¬ã¯ããªããæäŸãããŠããªãããšã確èªããå¿ èŠããããŸãã
次ã®ã»ã¯ã·ã§ã³ã§èª¬æãããã¬ãŒã¹ã«ã¯ãã¡ãã»ãŒãž ãã°ãšãµãŒãã¹ ã¢ãã«èšºæãã¬ãŒã¹ã® 2 çš®é¡ããããŸãã åçš®é¡ã¯ãç¬èªã®ãã¬ãŒã¹ ãœãŒã¹ ( MessageLogging ãš System.ServiceModel) ã䜿çšããŠæ§æãããŸãã ã©ã¡ãã®ãã° ãã¬ãŒã¹ ãœãŒã¹ããã¢ããªã±ãŒã·ã§ã³ã«å¯ŸããŠããŒã«ã«ãªããŒã¿ããã£ããã£ããŸãã
ã¡ãã»ãŒãž ãã°
ã¡ãã»ãŒãž ãã° ãã¬ãŒã¹ ãœãŒã¹ (MessageLogging) ã䜿çšãããšã管çè ã¯ã·ã¹ãã ãééããã¡ãã»ãŒãžããã°ã«èšé²ã§ããŸãã æ§æãéããŠããŠãŒã¶ãŒã¯ã¡ãã»ãŒãžå šäœãŸãã¯ã¡ãã»ãŒãž ããããŒã®ã¿ããã°ã«èšé²ãããã©ã³ã¹ããŒã å±€ãŸãã¯ãµãŒãã¹ ã¢ãã« ã¬ã€ã€ãŒã§ãã°ãèšé²ãããã©ãããããã³åœ¢åŒãæ£ãããªãã¡ãã»ãŒãžãå«ãããã©ãããæ±ºå®ã§ããŸãã ãŸãããã°ã«èšé²ãããã¡ãã»ãŒãžãå¶éããããã«ãã£ã«ã¿ãŒåŠçãæ§æããããšãã§ããŸãã
æ¢å®ã§ã¯ãã¡ãã»ãŒãž ãã°ã¯ç¡å¹ã«ãªã£ãŠããŸãã ããŒã«ã« ã³ã³ãã¥ãŒã¿ãŒç®¡çè ã¯ãã¢ããªã±ãŒã·ã§ã³ ã¬ãã«ã®ç®¡çè ãã¡ãã»ãŒãžã®ãã°ãªã³ãæå¹ã«ã§ããªãããã«ããããšãã§ããŸãã
æå·åããã³åŸ©å·åãããã¡ãã»ãŒãž ãã°
ã¡ãã»ãŒãžã¯ã次ã®çšèªã§èª¬æããããã«ããã°ã«èšé²ãæå·åããŸãã¯åŸ©å·åãããŸãã
ãã©ã³ã¹ããŒã ãã°: ãã©ã³ã¹ããŒã ã¬ãã«ã§éåä¿¡ãããã¡ãã»ãŒãžããã°ã«èšé²ããŸãã ãããã®ã¡ãã»ãŒãžã«ã¯ãã¹ãŠã®ããããŒãå«ãŸããŠããããããã¯ãŒã¯äžã§éä¿¡ãããåããã³åä¿¡æã«æå·åãããå¯èœæ§ããããŸãã
ã¡ãã»ãŒãžããããã¯ãŒã¯äžã§éä¿¡ãããåã«æå·åãããåä¿¡ããããšãæå·åãããŠãã°ã«èšé²ãããŸãã äŸå€ã¯ãã»ãã¥ãªã㣠ãããã³ã«ã䜿çšãããŠããå Žå (https) ã§ãããããã¯ãŒã¯äžã§æå·åãããŠããå Žåã§ããéä¿¡ãããåãšåä¿¡åŸã«æå·åè§£é€ãããŠãã°ã«èšé²ãããŸãã
ãµãŒãã¹ ãã°: ãã£ãã« ããããŒåŠçãçºçããåŸããŠãŒã¶ãŒ ã³ãŒããå ¥åããçŽåãšåŸã«ããµãŒãã¹ ã¢ãã« ã¬ãã«ã§åä¿¡ãŸãã¯éä¿¡ãããã¡ãã»ãŒãžããã°ã«èšé²ããŸãã
ãã®ã¬ãã«ã§ãã°ã«èšé²ãããã¡ãã»ãŒãžã¯ããããã¯ãŒã¯äžã§ã»ãã¥ãªãã£ã§ä¿è·ããã³æå·åãããå Žåã§ã埩å·åãããŸãã
圢åŒãæ£ãããªãã¡ãã»ãŒãžã®ãã°ã¯ãWCFã€ã³ãã©ã¹ãã©ã¯ãã£ãçè§£ãŸãã¯åŠçã§ããªãã¡ãã»ãŒãžãèšé²ããŸãã
ã¡ãã»ãŒãžã¯ as-isãã°ã«èšé²ãããŸããã€ãŸããæå·åãããŠãããã©ãã
ã¡ãã»ãŒãžãæå·åè§£é€ãŸãã¯æå·åãããŠããªã圢åŒã§ãã°ã«èšé²ããããšãæ¢å®ã§ã¯ãWCF ã¯ã»ãã¥ãªã㣠ããŒãšå人æ å ±ããã°ã«èšé²ããåã«ã¡ãã»ãŒãžããåé€ããŸãã æ¬¡ã®ã»ã¯ã·ã§ã³ã§ã¯ãåé€ãããæ å ±ãšãã®ã¿ã€ãã³ã°ã«ã€ããŠèª¬æããŸãã ãã·ã³ç®¡çè ãšã¢ããªã±ãŒã·ã§ã³ å±éè ã¯ãããŒãšæœåšçãªå人æ å ±ããã°ã«èšé²ããããã«æ¢å®ã®åäœã倿Žããããã«ãç¹å®ã®æ§æã¢ã¯ã·ã§ã³ãå®è¡ããå¿ èŠããããŸãã
æå·åè§£é€ãããã¡ãã»ãŒãžãŸãã¯æå·åãããŠããªãã¡ãã»ãŒãžããã°ã«èšé²ãããšãã«ãã¡ãã»ãŒãž ããããŒããåé€ãããæ å ±
ã¡ãã»ãŒãžãæå·åè§£é€ãŸãã¯æå·åãããŠããªã圢åŒã§ãã°ã«èšé²ããããšãã»ãã¥ãªã㣠ããŒãšæœåšçãªå人æ å ±ã¯ããã°ã«èšé²ãããåã«ãæ¢å®ã§ã¡ãã»ãŒãž ããããŒãšã¡ãã»ãŒãžæ¬æããåé€ãããŸãã æ¬¡ã®äžèЧã¯ãWCF ãããŒãšæœåšçã«å人æ å ±ãšèŠãªãå 容ã瀺ããŠããŸãã
åé€ãããããŒ:
xmlns:wst="http://schemas.xmlsoap.org/ws/2004/04/trust"ããã³xmlns:wst="http://schemas.xmlsoap.org/ws/2005/02/trust"wst:BinarySecretwst:Entropyxmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.1.xsd"ããã³xmlns:wsse="http://docs.oasis-open.org/wss/2005/xx/oasis-2005xx-wss-wssecurity-secext-1.1.xsd"wsse:Passwordwsse:Nonce
åé€ãããå¯èœæ§ã®ããå人æ å ±:
xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.1.xsd"ããã³xmlns:wsse="http://docs.oasis-open.org/wss/2005/xx/oasis-2005xx-wss-wssecurity-secext-1.1.xsd"wsse:Usernamewsse:BinarySecurityTokenxmlns:saml="urn:oasis:names:tc:SAML:1.0:assertion"ã®å Žåãboldå ã®æ¬¡ã®é ç®ã¯åé€ãããŸãã
<Assertion MajorVersion="1" MinorVersion="1" AssertionId="[ID]" Issuer="[string]" IssueInstant="[dateTime]"
<Conditions NotBefore="[dateTime]" NotOnOrAfter="[dateTime]"><AudienceRestrictionCondition><Audience>[uri]</Audience>+ </AudienceRestrictionCondition>* <DoNotCacheCondition />* <!-- æœè±¡åºæ¬å <Condition />*
</æ¡ä»¶>?
<Advice><AssertionIDReference>[ID]</AssertionIDReference>* <Assertion>[assertion]</Assertion>* [any]* </Advice>?
<--æœè±¡åºæ¬å <Statement />* <SubjectStatement><Subject>
<NameIdentifier
NameQualifier="[string]"?
Format="[uri]"?
>
[string]
</NameIdentifier>?
<SubjectConfirmation><ConfirmationMethod>[anyUri]</ConfirmationMethod>+ <SubjectConfirmationData>[any]</SubjectConfirmationData>?
<ds:KeyInfo>...</ds:KeyInfo>?
</ãµããžã§ã¯ã確èª>?
</äž»é¡></äž»é¡æ>*
<èªèšŒå£°æ AuthenticationMethod="[uri]" AuthenticationInstant="[dateTime]"
[Subject]
<SubjectLocality
IPAddress="[string]"?
DNSAddress="[string]"?
/>?
<AuthorityBinding AuthorityKind="[QName]" Location="[uri]" Binding="[uri]" />* </AuthenticationStatement>* <AttributeStatement> [Subject] <Attribute AttributeName="[string]" AttributeNamespace="[uri]"
<AttributeValue>[any]</AttributeValue>+
</Attribute>+ </AttributeStatement>* <AuthorizationDecisionStatement Resource="[uri]" Decision="[èš±å¯|æåŠ|äžç¢ºå®]"
[ä»¶å] <Action Namespace="[uri]">[string]</Action>+ <Evidence><AssertionIDReference>[ID]</AssertionIDReference>+ <Assertion>[assertion]</Assertion>+ </Evidence>? </AuthorizationDecisionStatement (èªèšŒæ±ºå®ã¹ããŒãã¡ã³ã)>* </Assertion (ã¢ãµãŒã·ã§ã³)>
æå·åè§£é€ãããã¡ãã»ãŒãžãŸãã¯æå·åãããŠããªãã¡ãã»ãŒãžããã°ã«èšé²ãããšãã«ãã¡ãã»ãŒãžæ¬æããåé€ãããæ å ±
åè¿°ã®ããã«ãWCF ã¯ãæå·åè§£é€ããã³æå·åãããŠããªããã°ã«èšé²ãããã¡ãã»ãŒãžã®ããŒãšæ¢ç¥ã®å人æ å ±ãã¡ãã»ãŒãž ããããŒããåé€ããŸãã ããã«ãWCF ã¯ãããŒäº€æã«é¢é£ããã»ãã¥ãªã㣠ã¡ãã»ãŒãžã«ã€ããŠèª¬æãããæ¬¡ã®äžèŠ§ã®æ¬æèŠçŽ ãšã¢ã¯ã·ã§ã³ã®ã¡ãã»ãŒãžæ¬æããããŒãšæ¢ç¥ã®å人æ å ±ãåé€ããŸãã
次ã®åå空éã®å Žå:
xmlns:wst="http://schemas.xmlsoap.org/ws/2004/04/trust" ãš xmlns:wst="http://schemas.xmlsoap.org/ws/2005/02/trust" (䜿çšã§ããã¢ã¯ã·ã§ã³ããªãå Žåãªã©)
æ¬¡ã®æ¬æèŠçŽ ã®æ å ±ãåé€ãããŸããããã«ã¯ããŒäº€æãå«ãŸããŸãã
wst:RequestSecurityToken
wst:RequestSecurityTokenResponse
wst:RequestSecurityTokenResponseCollection
次ã®åã¢ã¯ã·ã§ã³ã®æ å ±ãåé€ãããŸãã
http://schemas.xmlsoap.org/ws/2005/02/trust/RST/Issuehttp://schemas.xmlsoap.org/ws/2005/02/trust/RSTR/Issuehttp://schemas.xmlsoap.org/ws/2005/02/trust/RST/Renewhttp://schemas.xmlsoap.org/ws/2005/02/trust/RSTR/Renewhttp://schemas.xmlsoap.org/ws/2005/02/trust/RST/Cancelhttp://schemas.xmlsoap.org/ws/2005/02/trust/RSTR/Cancelhttp://schemas.xmlsoap.org/ws/2005/02/trust/RST/Validatehttp://schemas.xmlsoap.org/ws/2005/02/trust/RSTR/Validatehttp://schemas.xmlsoap.org/ws/2005/02/trust/RST/SCThttp://schemas.xmlsoap.org/ws/2005/02/trust/RSTR/SCThttp://schemas.xmlsoap.org/ws/2005/02/trust/RST/SCT/Amendhttp://schemas.xmlsoap.org/ws/2005/02/trust/RSTR/SCT/Amendhttp://schemas.xmlsoap.org/ws/2005/02/trust/RST/SCT/Renewhttp://schemas.xmlsoap.org/ws/2005/02/trust/RSTR/SCT/Renewhttp://schemas.xmlsoap.org/ws/2005/02/trust/RST/SCT/Cancelhttp://schemas.xmlsoap.org/ws/2005/02/trust/RSTR/SCT/Cancelhttp://schemas.xmlsoap.org/ws/2004/04/security/trust/RST/SCThttp://schemas.xmlsoap.org/ws/2004/04/security/trust/RSTR/SCThttp://schemas.xmlsoap.org/ws/2004/04/security/trust/RST/SCT-Amendhttp://schemas.xmlsoap.org/ws/2004/04/security/trust/RSTR/SCT-Amend
ã¢ããªã±ãŒã·ã§ã³åºæã®ããããŒã𿬿ããŒã¿ããæ å ±ãåé€ãããªã
WCF ã§ã¯ãã¢ããªã±ãŒã·ã§ã³åºæã®ããã㌠(ã¯ãšãªæååãªã©) ãŸãã¯æ¬æããŒã¿ (ã¯ã¬ãžãã ã«ãŒãçªå·ãªã©) ã®å人æ å ±ã¯è¿œè·¡ãããŸããã
ã¡ãã»ãŒãž ãã°ããªã³ã®å Žåãã¢ããªã±ãŒã·ã§ã³åºæã®ããããŒããã³æ¬ææ å ±ã®å人æ å ±ããã°ã«è¡šç€ºãããå ŽåããããŸãã ããã§ããã¢ããªã±ãŒã·ã§ã³ é 眮è ã¯ãæ§æãã¡ã€ã«ãšãã° ãã¡ã€ã«ã« ACL ãèšå®ãã圹å²ãæ ããŸãã ãŸãããã®æ å ±ã衚瀺ããããªãå Žåã¯ãã°èšé²ããªãã«ãããããã°èšé²åŸã«ãã° ãã¡ã€ã«ãããã®æ å ±ãé€å€ãããããããšãã§ããŸãã
ãµãŒãã¹ ã¢ãã«ã®ãã¬ãŒã¹
ãµãŒãã¹ ã¢ãã« ãã¬ãŒã¹ ãœãŒã¹ (System.ServiceModel) ã䜿çšãããšãã¡ãã»ãŒãžåŠçã«é¢é£ããã¢ã¯ãã£ããã£ãšã€ãã³ãã®ãã¬ãŒã¹ãå¯èœã«ãªããŸãã ãã®æ©èœã§ã¯ã System.Diagnosticsã® .NET Framework èšºææ©èœã䜿çšãããŸãã MessageLogging ããããã£ãšåæ§ã«ãå Žæãšãã® ACL ã¯ã.NET Framework ã¢ããªã±ãŒã·ã§ã³æ§æãã¡ã€ã«ã䜿çšããŠãŠãŒã¶ãŒãæ§æã§ããŸãã ã¡ãã»ãŒãž ãã°ãšåæ§ã«ã管çè ããã¬ãŒã¹ãæå¹ã«ãããšãåžžã«ãã¡ã€ã«ã®å Žæãæ§æãããŸãããããã£ãŠã管çè 㯠ACL ãå¶åŸ¡ããŸãã
ã¡ãã»ãŒãžãã¹ã³ãŒãå ã«ããå Žåããã¬ãŒã¹ã«ã¯ã¡ãã»ãŒãž ããããŒãå«ãŸããŸãã åã®ã»ã¯ã·ã§ã³ã®ã¡ãã»ãŒãž ããããŒã§æœåšçãªå人æ å ±ãé衚瀺ã«ããå ŽåãšåãèŠåãé©çšãããŸãã以åã«èå¥ãããå人æ å ±ã¯ããã¬ãŒã¹å ã®ããããŒããæ¢å®ã§åé€ãããŸãã æœåšçãªå人æ å ±ããã°ã«èšé²ããã«ã¯ããã·ã³ç®¡çè ãšã¢ããªã±ãŒã·ã§ã³ å±éè ã®äž¡æ¹ãæ§æã倿Žããå¿ èŠããããŸãã ãã ããã¢ããªã±ãŒã·ã§ã³åºæã®ããããŒã«å«ãŸããå人æ å ±ã¯ãã¬ãŒã¹ã«èšé²ãããŸãã ã¢ããªã±ãŒã·ã§ã³ é 眮ããŒã«ã¯ãæ§æãã¡ã€ã«ãšãã¬ãŒã¹ ãã¡ã€ã«ã« ACL ãèšå®ãã圹å²ãæ ããŸãã ãŸãããã¬ãŒã¹ãç¡å¹ã«ããŠãã®æ å ±ãé衚瀺ã«ãããããã°ã«èšé²ãããåŸã«ãã¬ãŒã¹ ãã¡ã€ã«ãããã®æ å ±ãé€å€ãããããããšãã§ããŸãã
ServiceModel ãã¬ãŒã¹ã®äžéšãšããŠãäžæã® ID (ã¢ã¯ãã£ãã㣠ID ãšé垞㯠GUID) ã¯ãã¡ãã»ãŒãžãã€ã³ãã©ã¹ãã©ã¯ãã£ã®ããŸããŸãªéšåãééããã«ã€ããŠãããŸããŸãªã¢ã¯ãã£ããã£ããªã³ã¯ããŸãã
ã«ã¹ã¿ã ãã¬ãŒã¹ ãªã¹ããŒ
ã¡ãã»ãŒãž ãã°ãšãã¬ãŒã¹ã®äž¡æ¹ã«å¯ŸããŠãã«ã¹ã¿ã ãã¬ãŒã¹ ãªã¹ããŒãæ§æã§ããŸãããã®ãªã¹ããŒã¯ããããã¯ãŒã¯äžã®ãã¬ãŒã¹ãšã¡ãã»ãŒãžã (ããšãã°ããªã¢ãŒã ããŒã¿ããŒã¹ã«) éä¿¡ã§ããŸãã ã¢ããªã±ãŒã·ã§ã³ é 眮ããŒã«ã¯ãã«ã¹ã¿ã ãªã¹ããŒãæ§æãããããŠãŒã¶ãŒããããè¡ããããã«ãã圹å²ãæ ããŸãã ãŸãããªã¢ãŒãã®å Žæã§å ¬éãããå人æ å ±ãšããã®å Žæã« ACL ãé©åã«é©çšãã責任ãè² ããŸãã
IT ãããã§ãã·ã§ãã«åãã®ãã®ä»ã®æ©èœ
WCF ã«ã¯ãWMI (Windows ã«ä»å±) ãä»ã㊠WCF ã€ã³ãã©ã¹ãã©ã¯ãã£æ§ææ å ±ãå ¬éãã WMI ãããã€ããŒããããŸãã æ¢å®ã§ã¯ãWMI ã€ã³ã¿ãŒãã§ã€ã¹ã¯ç®¡çè ã䜿çšã§ããŸãã
WCF æ§æã§ã¯ã.NET Framework æ§æã¡ã«ããºã ã䜿çšãããŸãã æ§æãã¡ã€ã«ã¯ã³ã³ãã¥ãŒã¿ãŒã«æ ŒçŽãããŸãã ã¢ããªã±ãŒã·ã§ã³éçºè ãšç®¡çè ã¯ãã¢ããªã±ãŒã·ã§ã³ã®èŠä»¶ããšã«æ§æãã¡ã€ã«ãš ACL ãäœæããŸãã æ§æãã¡ã€ã«ã«ã¯ããšã³ããã€ã³ã ã¢ãã¬ã¹ãšèšŒææžã¹ãã¢å ã®èšŒææžãžã®ãªã³ã¯ãå«ããããšãã§ããŸãã èšŒææžã䜿çšããŠã¢ããªã±ãŒã·ã§ã³ ããŒã¿ãæäŸããã¢ããªã±ãŒã·ã§ã³ã§äœ¿çšãããæ©èœã®ããŸããŸãªããããã£ãæ§æã§ããŸãã
WCF ã§ã¯ã FailFast ã¡ãœãããåŒã³åºãããšã«ãã£ãŠã.NET Framework ããã»ã¹ ãã³ãæ©èœã䜿çšããŸãã
IT ããããŒã«
WCF ã«ã¯ãWindows SDK ã«ä»å±ããæ¬¡ã® IT ãããã§ãã·ã§ãã« ããŒã«ãçšæãããŠããŸãã
SvcTraceViewer.exe
ãã¥ãŒã¢ãŒã«ã¯ãWCF ãã¬ãŒã¹ ãã¡ã€ã«ã衚瀺ãããŸãã ãã¥ãŒã¢ãŒã«ã¯ããã¬ãŒã¹ã«å«ãŸããŠããæ å ±ã衚瀺ãããŸãã
SvcConfigEditor.exe
ãšãã£ã¿ãŒã䜿çšãããšããŠãŒã¶ãŒã¯ WCF æ§æãã¡ã€ã«ãäœæããã³ç·šéã§ããŸãã ãšãã£ã¿ãŒã«ã¯ãæ§æãã¡ã€ã«ã«å«ãŸããŠããæ å ±ã衚瀺ãããŸãã ããã¹ã ãšãã£ã¿ãŒã䜿çšããŠåãã¿ã¹ã¯ãå®è¡ã§ããŸãã
ServiceModel_Reg
ãã®ããŒã«ã䜿çšãããšããŠãŒã¶ãŒã¯ ServiceModel ã®ãã·ã³ãžã®ã€ã³ã¹ããŒã«ã管çã§ããŸãã ãã®ããŒã«ã¯ãå®è¡æã«ã³ã³ãœãŒã« ãŠã£ã³ããŠã«ã¹ããŒã¿ã¹ ã¡ãã»ãŒãžã衚瀺ãããã®ããã»ã¹ã§ WCF ã€ã³ã¹ããŒã«ã®æ§æã«é¢ããæ å ±ã衚瀺ã§ããŸãã
WSATConfig.exe ãš WSATUI.dll
ãããã®ããŒã«ã䜿çšãããšãIT ãããã§ãã·ã§ãã«ã¯ WCF ã§çžäºéçšå¯èœãª WS-AtomicTransaction ãããã¯ãŒã¯ ãµããŒããæ§æã§ããŸãã ããŒã«ã¯ãã¬ãžã¹ããªã«æ ŒçŽãããŠããæãäžè¬çã«äœ¿çšããã WS-AtomicTransaction èšå®ã®å€ããŠãŒã¶ãŒã衚瀺ããã³å€æŽã§ããããã«ããŸãã
暪æçãªæ©èœ
æ¬¡ã®æ©èœã¯æšªæçã§ãã ã€ãŸããäžèšã®æ©èœã®ããããã§æ§æã§ããŸãã
ãµãŒãã¹ ãã¬ãŒã ã¯ãŒã¯
ããããŒã«ã¯ã€ã³ã¹ã¿ã³ã¹ ID ãå«ããããšãã§ããŸããããã¯ãã¡ãã»ãŒãžã CLR ã¯ã©ã¹ã®ã€ã³ã¹ã¿ã³ã¹ã«é¢é£ä»ãã GUID ã§ãã
Web ãµãŒãã¹èšè¿°èšèª (WSDL) ã«ã¯ãããŒãã®å®çŸ©ãå«ãŸããŠããŸãã åããŒãã«ã¯ããšã³ããã€ã³ã ã¢ãã¬ã¹ãšãã¢ããªã±ãŒã·ã§ã³ã§äœ¿çšããããµãŒãã¹ã衚ããã€ã³ãã£ã³ã°ããããŸãã WSDL ã®å ¬éã¯ãæ§æã䜿çšããŠç¡å¹ã«ããããšãã§ããŸãã ã³ã³ãã¥ãŒã¿ãŒã«æ å ±ã¯ä¿æãããŸããã