Note
ãã®ããŒãžã«ã¢ã¯ã»ã¹ããã«ã¯ãæ¿èªãå¿ èŠã§ãã ãµã€ã³ã€ã³ãŸãã¯ãã£ã¬ã¯ããªã®å€æŽã詊ãããšãã§ããŸãã
ãã®ããŒãžã«ã¢ã¯ã»ã¹ããã«ã¯ãæ¿èªãå¿ èŠã§ãã ãã£ã¬ã¯ããªã®å€æŽã詊ãããšãã§ããŸãã
åæãããã€åŸãããã³æå¹æéäžã«æ°åçºçããå¯èœæ§ããããµãŒãã¹ (ããã³å ¬éãããšã³ããã€ã³ã) ã¯ãããžãã¹ ããŒãºã®å€åãæ å ±æè¡ã®èŠä»¶ããã®ä»ã®åé¡ãžã®å¯ŸåŠãªã©ãããŸããŸãªçç±ã§å€æŽããå¿ èŠãããå ŽåããããŸãã å倿Žã§ã¯ãæ°ããããŒãžã§ã³ã®ãµãŒãã¹ãå°å ¥ãããŸãã ãã®ãããã¯ã§ã¯ãWindows Communication Foundation (WCF) ã§ã®ããŒãžã§ã³ç®¡çãæ€èšããæ¹æ³ã«ã€ããŠèª¬æããŸãã
ãµãŒãã¹å€æŽã® 4 ã€ã®ã«ããŽãª
å¿ èŠã«ãªãå¯èœæ§ããããµãŒãã¹ã®å€æŽã¯ã次㮠4 ã€ã®ã«ããŽãªã«åé¡ã§ããŸãã
ã³ã³ãã©ã¯ãã®å€æŽ: ããšãã°ãæäœã远å ãããããã¡ãã»ãŒãžå ã®ããŒã¿èŠçŽ ã远å ãŸãã¯å€æŽããããããããšããããŸãã
ã¢ãã¬ã¹ã®å€æŽ: ããšãã°ããµãŒãã¹ã¯ããšã³ããã€ã³ãã«æ°ããã¢ãã¬ã¹ãããå¥ã®å Žæã«ç§»åããŸãã
ãã€ã³ãã®å€æŽ: ããšãã°ãã»ãã¥ãªã㣠ã¡ã«ããºã ã®å€æŽãèšå®ã®å€æŽãªã©ã§ãã
å®è£ ã®å€æŽ: ããšãã°ãå éšã¡ãœããã®å®è£ ã倿Žããããšãã
ãããã®å€æŽã®äžéšã¯ "ç Žå£ç" ãšåŒã°ããä»ã®å€æŽã¯ "éç Žå£ç" ãšåŒã°ããŸãã以åã®ããŒãžã§ã³ã§æ£åžžã«åŠçããããã¹ãŠã®ã¡ãã»ãŒãžãæ°ããããŒãžã§ã³ã§æ£åžžã«åŠçãããå Žåã倿Žã¯ äžæãããŸãã ã ãã®æ¡ä»¶ãæºãããŠããªãå€æŽ ã¯éå€§ãª å€æŽã§ãã
ãµãŒãã¹ã®åããšããŒãžã§ã³ç®¡ç
ãµãŒãã¹ã®ãªãªãšã³ããŒã·ã§ã³ã®æçŸ©ã® 1 ã€ã¯ããµãŒãã¹ãšã¯ã©ã€ã¢ã³ããèªåŸç (ãŸãã¯ç¬ç«) ã§ãããšããããšã§ãã ç¹ã«ãããã¯ããµãŒãã¹éçºè ãããã¹ãŠã®ãµãŒãã¹ ã¯ã©ã€ã¢ã³ããå¶åŸ¡ããããç¥ã£ããããããšãæ³å®ã§ããªãããšãæå³ããŸãã ããã«ããããµãŒãã¹ãããŒãžã§ã³ã倿Žãããšãã«ããã¹ãŠã®ã¯ã©ã€ã¢ã³ããåæ§ç¯ããŠåãããã€ãããªãã·ã§ã³ããªããªããŸãã ãã®ãããã¯ã§ã¯ããµãŒãã¹ããã®ããããã«æºæ ããŠããããšãåæãšããŠãããããã¯ã©ã€ã¢ã³ããšã¯ç¡é¢ä¿ã«å€æŽãŸã㯠"ããŒãžã§ã³ç®¡ç" ããå¿ èŠããããŸãã
ç Žå£ç倿Žãäºæãããåé¿ã§ããªãå Žåãã¢ããªã±ãŒã·ã§ã³ã¯ãã®ãããããç¡èŠããããšãéžæããæ°ããããŒãžã§ã³ã®ãµãŒãã¹ã䜿çšããŠã¯ã©ã€ã¢ã³ããåæ§ç¯ããŠåãããã€ããå¿ èŠããããŸãã
ã³ã³ãã©ã¯ãã®ããŒãžã§ã³ç®¡ç
ã¯ã©ã€ã¢ã³ãã«ãã£ãŠäœ¿çšãããã³ã³ãã©ã¯ãã¯ããµãŒãã¹ã§äœ¿çšãããã³ã³ãã©ã¯ããšåãã§ããå¿ èŠã¯ãããŸãããäºææ§ãæã€å¿ èŠãããã ãã§ãã
ãµãŒãã¹ ã³ã³ãã©ã¯ãã®å Žåãäºææ§ãšã¯ããµãŒãã¹ã«ãã£ãŠå ¬éãããæ°ããæäœã远å ã§ããŸãããæ¢åã®æäœãåé€ããããã»ãã³ãã£ãã¯ã«å€æŽãããã§ããªãããšãæå³ããŸãã
ããŒã¿ ã³ã³ãã©ã¯ãã®å Žåãäºææ§ãšã¯ãæ°ããã¹ããŒãåå®çŸ©ã远å ã§ããããšãæå³ããŸãããæ¢åã®ã¹ããŒãåå®çŸ©ãç Žå£çãªæ¹æ³ã§å€æŽããããšã¯ã§ããŸããã é倧ãªå€æŽã¯ãããŒã¿ã¡ã³ããŒã®åé€ãããŒã¿åã®å€æŽãäºææ§ãæãªãå¯èœæ§ãå«ãããšããããŸãã ãã®æ©èœã䜿çšãããšãã¯ã©ã€ã¢ã³ãã«æ¯éããããããšãªãããµãŒãã¹ã«å¥çŽã®ããŒãžã§ã³ã倿Žããããã®æè»æ§ãæãããããšãã§ããŸãã æ¬¡ã® 2 ã€ã®ã»ã¯ã·ã§ã³ã§ã¯ãWCF ããŒã¿ãšãµãŒãã¹ ã³ã³ãã©ã¯ãã«å¯ŸããŠè¡ãããšãã§ãããéç Žå£ç倿Žãšç Žå£ç倿Žã«ã€ããŠèª¬æããŸãã
ããŒã¿ ã³ã³ãã©ã¯ãã®ããŒãžã§ã³ç®¡ç
ãã®ã»ã¯ã·ã§ã³ã§ã¯ã DataContractSerializer ã¯ã©ã¹ãš DataContractAttribute ã¯ã©ã¹ã䜿çšããå Žåã®ããŒã¿ã®ããŒãžã§ã³ç®¡çã«ã€ããŠèª¬æããŸãã
å³å¯ãªããŒãžã§ã³ç®¡ç
ããŒãžã§ã³ã®å€æŽãåé¡ã«ãªãå€ãã®ã·ããªãªã§ã¯ããµãŒãã¹éçºè ã¯ã¯ã©ã€ã¢ã³ããå¶åŸ¡ã§ããªããããã¡ãã»ãŒãž XML ãŸãã¯ã¹ããŒãã®å€æŽã«ã©ã®ããã«å¯Ÿå¿ããããæ³å®ã§ããŸããã ãã®ãããªå Žåãæ¬¡ã® 2 ã€ã®çç±ãããæ°ããã¡ãã»ãŒãžãå€ãã¹ããŒãã«å¯ŸããŠæ€èšŒãããããšãä¿èšŒããå¿ èŠããããŸãã
å€ãã¯ã©ã€ã¢ã³ãã¯ãã¹ããŒãã倿ŽãããªãããšãåæãšããŠéçºãããŸããã èšèšãããŠããªãã¡ãã»ãŒãžã®åŠçã«å€±æããå ŽåããããŸãã
å€ãã¯ã©ã€ã¢ã³ãã¯ãã¡ãã»ãŒãžã®åŠçã詊ã¿ãåã«ãå€ãã¹ããŒãã«å¯ŸããŠå®éã®ã¹ããŒãæ€èšŒãå®è¡ã§ããŸãã
ãã®ãããªã·ããªãªã§æšå¥šãããæ¹æ³ã¯ãæ¢åã®ããŒã¿ ã³ã³ãã©ã¯ããäžå€ãšããŠæ±ããäžæã® XML 修食åãæã€æ°ããããŒã¿ ã³ã³ãã©ã¯ããäœæããããšã§ãã ãµãŒãã¹éçºè ã¯ãæ¢åã®ãµãŒãã¹ ã³ã³ãã©ã¯ãã«æ°ããã¡ãœããã远å ããããæ°ããããŒã¿ ã³ã³ãã©ã¯ãã䜿çšããã¡ãœããã䜿çšããŠæ°ãããµãŒãã¹ ã³ã³ãã©ã¯ããäœæããŸãã
å€ãã®å ŽåããµãŒãã¹éçºè ã¯ãããŒã¿ ã³ã³ãã©ã¯ãã®ãã¹ãŠã®ããŒãžã§ã³ãšãããŒã¿ ã³ã³ãã©ã¯ãã®åããŒãžã§ã³ã®ããŒãžã§ã³åºæã®ããžãã¹ ã³ãŒãå ã§å®è¡ããå¿ èŠãããããžãã¹ ããžãã¯ãèšè¿°ããå¿ èŠããããŸãã ãã®ãããã¯ã®æåŸã®ä»é²ã§ã¯ããã®ããŒãºãæºããããã«ã€ã³ã¿ãŒãã§ã€ã¹ã䜿çšããæ¹æ³ã«ã€ããŠèª¬æããŸãã
å³å¯ã§ãªãããŒãžã§ã³ç®¡ç
ä»ã®å€ãã®ã·ããªãªã§ã¯ããµãŒãã¹éçºè ã¯ãããŒã¿ ã³ã³ãã©ã¯ãã«æ°ããçç¥å¯èœãªã¡ã³ããŒã远å ãããšãæ¢åã®ã¯ã©ã€ã¢ã³ããäžæãããªãããšãåæã«ããããšãã§ããŸãã ãã®ããããµãŒãã¹éçºè ã¯ãæ¢åã®ã¯ã©ã€ã¢ã³ããã¹ããŒãæ€èšŒãå®è¡ããŠããªããã©ãããããã³äžæãªããŒã¿ ã¡ã³ããŒãç¡èŠãããã©ããã調æ»ããå¿ èŠããããŸãã ãããã®ã·ããªãªã§ã¯ãããŒã¿ ã³ã³ãã©ã¯ãæ©èœãå©çšããŠãæ°ããã¡ã³ããŒãå£ããªãæ¹æ³ã§è¿œå ã§ããŸãã ãµãŒãã¹éçºè ã¯ãããŒãžã§ã³ç®¡çã®ããŒã¿ ã³ã³ãã©ã¯ãæ©èœããµãŒãã¹ã®æåã®ããŒãžã§ã³ã§æ¢ã«äœ¿çšãããŠããå Žåããã®æ³å®ã確å®ã«è¡ãããšãã§ããŸãã
WCFãASP.NET Web ãµãŒãã¹ãããã³ãã®ä»ã®å€ãã® Web ãµãŒãã¹ ã¹ã¿ãã¯ã§ã¯ã ç·©ãããªããŒãžã§ã³ç®¡çããµããŒããããŠããŸããã€ãŸããåä¿¡ããããŒã¿ã®æ°ããäžæãªããŒã¿ ã¡ã³ããŒã«å¯ŸããäŸå€ã¯ã¹ããŒãããŸããã
æ°ããã¡ã³ããŒã远å ããŠãæ¢åã®ã¯ã©ã€ã¢ã³ããå£ããããã§ã¯ãªããšèª€ã£ãŠèããããšã¯ç°¡åã§ãã ãã¹ãŠã®ã¯ã©ã€ã¢ã³ããç·©ãããªããŒãžã§ã³ç®¡çãåŠçã§ãããããããªãå Žåã¯ãå³å¯ãªããŒãžã§ã³ç®¡çã¬ã€ãã©ã€ã³ã䜿çšããããŒã¿ ã³ã³ãã©ã¯ããäžå€ãšããŠæ±ãããšããå§ãããŸãã
ããŒã¿ ã³ã³ãã©ã¯ãã®å³å¯ãªããŒãžã§ã³ç®¡çãšç·©ãããªããŒãžã§ã³ç®¡çã®äž¡æ¹ã®è©³çްãªã¬ã€ãã©ã€ã³ã«ã€ããŠã¯ãã ãã¹ã ãã©ã¯ãã£ã¹: ããŒã¿ ã³ã³ãã©ã¯ãã®ããŒãžã§ã³ç®¡çããåç §ããŠãã ããã
ããŒã¿ ã³ã³ãã©ã¯ããš .NET åã®åºå¥
.NET ã¯ã©ã¹ãŸãã¯æ§é äœã¯ã DataContractAttribute 屿§ãã¯ã©ã¹ã«é©çšããããšã§ãããŒã¿ ã³ã³ãã©ã¯ããšããŠæåœ±ã§ããŸãã .NET åãšãã®ããŒã¿ ã³ã³ãã©ã¯ããããžã§ã¯ã·ã§ã³ã¯ã2 ã€ã®ç°ãªãåé¡ã§ãã åãããŒã¿ ã³ã³ãã©ã¯ã ãããžã§ã¯ã·ã§ã³ãæã€è€æ°ã® .NET åãæã€ããšãã§ããŸãã ãã®åºå¥ã¯ãäºæ³ãããããŒã¿ ã³ã³ãã©ã¯ããç¶æããªãã .NET åã倿Žã§ãããããå³å¯ãªæå³ã§ãæ¢åã®ã¯ã©ã€ã¢ã³ããšã®äºææ§ãç¶æããã®ã«ç¹ã«åœ¹ç«ã¡ãŸãã .NET åãšããŒã¿ ã³ã³ãã©ã¯ãã®éããç¶æããã«ã¯ãåžžã«æ¬¡ã® 2 ã€ã®ããšãè¡ãå¿ èŠããããŸãã
NameãšNamespaceãæå®ããŸãã .NET åã®ååãšåå空éãã³ã³ãã©ã¯ãã§å ¬éãããªãããã«ããã«ã¯ãããŒã¿ ã³ã³ãã©ã¯ãã®ååãšåå空éãåžžã«æå®ããå¿ èŠããããŸãã ããã«ãããåŸã§ .NET åå空éãŸãã¯ååã倿Žããå ŽåãããŒã¿ ã³ã³ãã©ã¯ãã¯å€ãããŸããã
Name ãæå®ããŸãã .NET ã¡ã³ããŒåãã³ã³ãã©ã¯ãã§å ¬éãããªãããã«ããã«ã¯ãåžžã«ããŒã¿ ã¡ã³ããŒã®ååãæå®ããå¿ èŠããããŸãã ããã«ãããåŸã§ã¡ã³ããŒã® .NET åã倿Žããå ŽåãããŒã¿ ã³ã³ãã©ã¯ãã¯å€ãããŸããã
ã¡ã³ããŒã®å€æŽãŸãã¯åé€
ã¡ã³ããŒã®ååãŸãã¯ããŒã¿åã®å€æŽããŸãã¯ããŒã¿ ã¡ã³ããŒã®åé€ã¯ãç·©ãããªããŒãžã§ã³ç®¡çãèš±å¯ãããŠããå Žåã§ãé倧ãªå€æŽã§ãã ãããå¿ èŠãªå Žåã¯ãæ°ããããŒã¿ ã³ã³ãã©ã¯ããäœæããŸãã
ãµãŒãã¹ã®äºææ§ãéåžžã«éèŠãªå Žåã¯ãã³ãŒãå ã®æªäœ¿çšã®ããŒã¿ ã¡ã³ããŒãç¡èŠãããã®ãŸãŸã«ããŠããããšãæ€èšããŠãã ããã ããŒã¿ ã¡ã³ããŒãè€æ°ã®ã¡ã³ããŒã«åå²ããå Žåã¯ãäžäœã¬ãã«ã®ã¯ã©ã€ã¢ã³ã (ææ°ããŒãžã§ã³ã«ã¢ããã°ã¬ãŒããããŠããªãã¯ã©ã€ã¢ã³ã) ã«å¿ èŠãªåå²ãšåéèšãå®è¡ã§ããããããã£ãšããŠãæ¢åã®ã¡ã³ããŒããã®ãŸãŸäœ¿çšããããšãæ€èšããŠãã ããã
åæ§ã«ãããŒã¿ ã³ã³ãã©ã¯ãã®ååãŸãã¯åå空éã«å¯Ÿãã倿Žãé倧ãªå€æŽã§ãã
æªç¥ã®ããŒã¿ã®ã©ãŠã³ã ããªãã
äžéšã®ã·ããªãªã§ã¯ãæ°ããããŒãžã§ã³ã§è¿œå ãããã¡ã³ããŒããã®äžæãªããŒã¿ã "ã©ãŠã³ãããªãã" ããå¿ èŠããããŸãã ããšãã°ã"versionNew" ãµãŒãã¹ã¯ãæ°ãã远å ãããã¡ã³ããŒãå«ãããŒã¿ã "versionOld" ã¯ã©ã€ã¢ã³ãã«éä¿¡ããŸãã ã¯ã©ã€ã¢ã³ãã¯ãã¡ãã»ãŒãžã®åŠçäžã«æ°ãã远å ãããã¡ã³ããŒãç¡èŠããŸãããæ°ãã远å ãããã¡ã³ããŒãå«ãåãããŒã¿ã versionNew ãµãŒãã¹ã«åéä¿¡ããŸãã ãã®äžè¬çãªã·ããªãªã¯ããµãŒãã¹ããããŒã¿ãååŸããã倿Žãããè¿ãããããŒã¿æŽæ°ã§ãã
ç¹å®ã®åã«å¯ŸããŠã©ãŠã³ãããªãããæå¹ã«ããã«ã¯ãåã§ IExtensibleDataObject ã€ã³ã¿ãŒãã§ã€ã¹ãå®è£ ããå¿ èŠããããŸãã ã€ã³ã¿ãŒãã§ã€ã¹ã«ã¯ãExtensionDataåãè¿ã 1 ã€ã®ããããã£ExtensionDataObjectãå«ãŸããŠããŸãã ãã®ããããã£ã¯ãçŸåšã®ããŒãžã§ã³ã«äžæãªããŒã¿ ã³ã³ãã©ã¯ãã®å°æ¥ã®ããŒãžã§ã³ã®ããŒã¿ãæ ŒçŽããããã«äœ¿çšãããŸãã ãã®ããŒã¿ã¯ã¯ã©ã€ã¢ã³ãã«å¯ŸããŠäžéæã§ãããã€ã³ã¹ã¿ã³ã¹ãã·ãªã¢ã«åãããšã ExtensionData ããããã£ã®å 容ã¯ãæ®ãã®ããŒã¿ ã³ã³ãã©ã¯ã ã¡ã³ããŒã®ããŒã¿ãšå ±ã«æžã蟌ãŸããŸãã
æ°ããã¡ã³ããŒãšäžæãªå°æ¥ã®ã¡ã³ããŒã«å¯Ÿå¿ããããã«ããã¹ãŠã®åã§ãã®ã€ã³ã¿ãŒãã§ã€ã¹ãå®è£ ããããšããå§ãããŸãã
ããŒã¿ ã³ã³ãã©ã¯ã ã©ã€ãã©ãª
ã³ã³ãã©ã¯ããäžå€®ãªããžããªã«çºè¡ãããããŒã¿ ã³ã³ãã©ã¯ãã®ã©ã€ãã©ãªãããããµãŒãã¹ãšåã®å®è£ è ããã®ãªããžããªããããŒã¿ ã³ã³ãã©ã¯ããå®è£ ããŠå ¬éããå ŽåããããŸãã ãã®å ŽåãããŒã¿ ã³ã³ãã©ã¯ãããªããžããªã«çºè¡ããå ŽåãããŒã¿ ã³ã³ãã©ã¯ããå®è£ ããåãäœæãããŠãŒã¶ãŒãå¶åŸ¡ã§ããªããªããŸãã ãããã£ãŠãã³ã³ãã©ã¯ããçºè¡ãããåŸã¯ãããã倿Žããããšãã§ãããå®è³ªçã«äžå€ã«ãªããŸãã
XmlSerializer ã䜿çšããå Žå
XmlSerializer ã¯ã©ã¹ã䜿çšããå ŽåããåãããŒãžã§ã³ç®¡çååãé©çšãããŸãã å³å¯ãªããŒãžã§ã³ç®¡çãå¿ èŠãªå Žåã¯ãããŒã¿ ã³ã³ãã©ã¯ããäžå€ãšããŠæ±ããæ°ããããŒãžã§ã³ã®äžæã®ä¿®é£Ÿåãæã€æ°ããããŒã¿ ã³ã³ãã©ã¯ããäœæããŸãã ç·©ãããªããŒãžã§ã³ç®¡çã確å®ã«äœ¿çšã§ããå Žåã¯ãæ°ããã·ãªã¢ã«åå¯èœãªã¡ã³ããŒãæ°ããããŒãžã§ã³ã«è¿œå ã§ããŸãããæ¢åã®ã¡ã³ããŒã倿ŽãŸãã¯åé€ããããšã¯ã§ããŸããã
泚
XmlSerializerã¯ãXmlAnyElementAttribute屿§ãšXmlAnyAttributeAttribute屿§ã䜿çšããŠãäžæãªããŒã¿ã®ã©ãŠã³ãããªããããµããŒãããŸãã
ã¡ãã»ãŒãž ã³ã³ãã©ã¯ãã®ããŒãžã§ã³ç®¡ç
ã¡ãã»ãŒãž ã³ã³ãã©ã¯ãã®ããŒãžã§ã³ç®¡çã®ã¬ã€ãã©ã€ã³ã¯ãããŒãžã§ã³ç®¡çããŒã¿ ã³ã³ãã©ã¯ããšãã䌌ãŠããŸãã å³å¯ãªããŒãžã§ã³ç®¡çãå¿ èŠãªå Žåã¯ãã¡ãã»ãŒãžæ¬æã倿Žããã®ã§ã¯ãªããäžæã®ä¿®é£Ÿåãæã€æ°ããã¡ãã»ãŒãž ã³ã³ãã©ã¯ããäœæããå¿ èŠããããŸãã ç·©ãããªããŒãžã§ã³ç®¡çã䜿çšã§ããããšãããã£ãŠããå Žåã¯ãæ°ããã¡ãã»ãŒãžæ¬æããŒãã远å ã§ããŸãããæ¢åã®ã¡ãã»ãŒãžæ¬æããŒãã倿ŽãŸãã¯åé€ããããšã¯ã§ããŸããã ãã®ã¬ã€ãã©ã€ã³ã¯ãã㢠ã¡ãã»ãŒãž ã³ã³ãã©ã¯ããšã©ãã ã¡ãã»ãŒãž ã³ã³ãã©ã¯ãã®äž¡æ¹ã«é©çšãããŸãã
å³å¯ãªããŒãžã§ã³ç®¡çã䜿çšãããŠããå Žåã§ããã¡ãã»ãŒãž ããããŒã¯åžžã«è¿œå ã§ããŸãã MustUnderstand ãã©ã°ã¯ãããŒãžã§ã³ç®¡çã«åœ±é¿ããå¯èœæ§ããããŸãã äžè¬ã«ãWCF ã®ããããŒã®ããŒãžã§ã³ç®¡çã¢ãã«ã¯ãSOAP 仿§ã§èª¬æãããŠãããšããã§ãã
ãµãŒãã¹ ã³ã³ãã©ã¯ãã®ããŒãžã§ã³ç®¡ç
ããŒã¿ ã³ã³ãã©ã¯ãã®ããŒãžã§ã³ç®¡çãšåæ§ã«ããµãŒãã¹ ã³ã³ãã©ã¯ãã®ããŒãžã§ã³ç®¡çã«ã¯ãæäœã®è¿œå ã倿Žãåé€ãå«ãŸããŸãã
ååãåå空éãããã³ã¢ã¯ã·ã§ã³ã®æå®
æ¢å®ã§ã¯ããµãŒãã¹ ã³ã³ãã©ã¯ãã®ååã¯ã€ã³ã¿ãŒãã§ã€ã¹ã®ååã§ãã æ¢å®ã®åå空é㯠http://tempuri.orgãããåæäœã®ã¢ã¯ã·ã§ã³ã¯ http://tempuri.org/contractname/methodnameã ãµãŒãã¹ ã³ã³ãã©ã¯ãã®ååãšåå空éãæç€ºçã«æå®ããåæäœã«å¯ŸããŠã¢ã¯ã·ã§ã³ãæå®ããŠã http://tempuri.org ã®äœ¿çšãåé¿ãããµãŒãã¹ã®ã³ã³ãã©ã¯ãã§ã€ã³ã¿ãŒãã§ã€ã¹ãšã¡ãœããã®ååãå
¬éãããªãããã«ããããšããå§ãããŸãã
ãã©ã¡ãŒã¿ãŒãšæäœã®è¿œå
ãµãŒãã¹ã«ãã£ãŠå ¬éããããµãŒãã¹æäœã®è¿œå ã¯ãæ¢åã®ã¯ã©ã€ã¢ã³ãããããã®æ°ããæäœã«ã€ããŠå¿é ããå¿ èŠããªããããå£ããªã倿Žã§ãã
泚
äºéã³ãŒã«ãã㯠ã³ã³ãã©ã¯ãã«æäœã远å ããããšã¯ãé倧ãªå€æŽã§ãã
æäœãã©ã¡ãŒã¿ãŒãŸãã¯æ»ãå€ã®åã®å€æŽ
ãã©ã¡ãŒã¿ãŒãŸãã¯æ»ãå€ã®åã®å€æŽã¯ãéåžžãæ°ããåãå€ãåã«ãã£ãŠå®è£ ãããã®ãšåãããŒã¿ ã³ã³ãã©ã¯ããå®è£ ããªãéããé倧ãªå€æŽã§ãã ãã®ãããªå€æŽãè¡ãã«ã¯ããµãŒãã¹ ã³ã³ãã©ã¯ãã«æ°ããæäœã远å ããããæ°ãããµãŒãã¹ ã³ã³ãã©ã¯ããå®çŸ©ããŸãã
æäœã®åé€
æäœã®åé€ãé倧ãªå€æŽã§ãã ãã®ãããªå€æŽãè¡ãã«ã¯ãæ°ãããµãŒãã¹ ã³ã³ãã©ã¯ããå®çŸ©ããæ°ãããšã³ããã€ã³ãã§å ¬éããŸãã
ãšã©ãŒ ã³ã³ãã©ã¯ã
FaultContractAttribute屿§ã䜿çšãããšããµãŒãã¹ ã³ã³ãã©ã¯ãã®éçºè ã¯ãã³ã³ãã©ã¯ãã®æäœããè¿ãããšãã§ãããšã©ãŒã«é¢ããæ å ±ãæå®ã§ããŸãã
ãµãŒãã¹ã®ã³ã³ãã©ã¯ãã§èª¬æãããŠãããšã©ãŒã®äžèЧã¯ãç¶²çŸ çãšã¯èŠãªãããŸããã æäœã¯ãã³ã³ãã©ã¯ãã«èšè¿°ãããŠããªããšã©ãŒããã€ã§ãè¿ãããšãã§ããŸãã ãããã£ãŠãã³ã³ãã©ã¯ãã§èª¬æãããŠããäžé£ã®é害ã倿Žããããšã¯ãäžæãšã¯èŠãªãããŸããã ããšãã°ã FaultContractAttribute ã䜿çšããŠã³ã³ãã©ã¯ãã«æ°ããé害ã远å ããããã³ã³ãã©ã¯ãããæ¢åã®ãšã©ãŒãåé€ãããããŸãã
ãµãŒãã¹ ã³ã³ãã©ã¯ã ã©ã€ãã©ãª
çµç¹ã«ã¯ãã³ã³ãã©ã¯ããäžå€®ãªããžããªã«çºè¡ããããµãŒãã¹å®è£ è ããã®ãªããžããªããã³ã³ãã©ã¯ããå®è£ ããã³ã³ãã©ã¯ãã®ã©ã€ãã©ãªãããå ŽåããããŸãã ãã®å ŽåããµãŒãã¹ ã³ã³ãã©ã¯ãããªããžããªã«çºè¡ããå Žåããããå®è£ ãããµãŒãã¹ãäœæãããŠãŒã¶ãŒãå¶åŸ¡ã§ããªããªããŸãã ãã®ãããçºè¡åŸã«ãµãŒãã¹ ã³ã³ãã©ã¯ãã倿ŽããŠãå®è³ªçã«å€æŽäžå¯ã«ããããšã¯ã§ããŸããã WCF ã§ã¯ã³ã³ãã©ã¯ãç¶æ¿ããµããŒããããŠããŸãããã®ç¶æ¿ã䜿çšããŠãæ¢åã®ã³ã³ãã©ã¯ããæ¡åŒµããæ°ããã³ã³ãã©ã¯ããäœæã§ããŸãã ãã®æ©èœã䜿çšããã«ã¯ãå€ããµãŒãã¹ ã³ã³ãã©ã¯ã ã€ã³ã¿ãŒãã§ã€ã¹ããç¶æ¿ããæ°ãããµãŒãã¹ ã³ã³ãã©ã¯ã ã€ã³ã¿ãŒãã§ã€ã¹ãå®çŸ©ããæ°ããã€ã³ã¿ãŒãã§ã€ã¹ã«ã¡ãœããã远å ããŸãã æ¬¡ã«ãæ°ããã³ã³ãã©ã¯ããå®è£ ããããã«å€ãã³ã³ãã©ã¯ããå®è£ ãããµãŒãã¹ã倿Žããæ°ããã³ã³ãã©ã¯ãã䜿çšããããã« "versionOld" ãšã³ããã€ã³ãå®çŸ©ã倿ŽããŸãã "versionOld" ã¯ã©ã€ã¢ã³ãã§ã¯ããšã³ããã€ã³ãã¯åŒãç¶ã "versionOld" ã³ã³ãã©ã¯ããå ¬éããŠããããã«èŠããŸããã "versionNew" ã¯ã©ã€ã¢ã³ãã«æå®ãããšããšã³ããã€ã³ã㯠"versionNew" ã³ã³ãã©ã¯ããå ¬éããããã«èŠããŸãã
ã¢ãã¬ã¹ãšãã€ã³ãã£ã³ã°ã®ããŒãžã§ã³ç®¡ç
ã¯ã©ã€ã¢ã³ããæ°ãããšã³ããã€ã³ã ã¢ãã¬ã¹ãŸãã¯ãã€ã³ããåçã«æ€åºã§ããªãéãããšã³ããã€ã³ã ã¢ãã¬ã¹ãšãã€ã³ãã«å¯Ÿãã倿Žã¯é倧ãªå€æŽã§ãã ãã®æ©èœãå®è£ ããã¡ã«ããºã ã® 1 ã€ã¯ããŠãããŒãµã«æ¢çŽ¢ã®èª¬æãšçµ±å (UDDI) ã¬ãžã¹ããªãš UDDI åŒã³åºããã¿ãŒã³ã䜿çšããããšã§ãããã®ãã¿ãŒã³ã§ã¯ãã¯ã©ã€ã¢ã³ãããšã³ããã€ã³ããšã®éä¿¡ã詊ã¿ã倱æããå Žåã¯ãçŸåšã®ãšã³ããã€ã³ã ã¡ã¿ããŒã¿ã«ã€ããŠæ¢ç¥ã® UDDI ã¬ãžã¹ããªãç §äŒããŸãã ãã®åŸãã¯ã©ã€ã¢ã³ãã¯ãã®ã¡ã¿ããŒã¿ã®ã¢ãã¬ã¹ãšãã€ã³ãã£ã³ã°ã䜿çšããŠãšã³ããã€ã³ããšéä¿¡ããŸãã ãã®éä¿¡ãæåãããšãã¯ã©ã€ã¢ã³ãã¯ã¢ãã¬ã¹ãšãã€ã³ãã£ã³ã°æ å ±ããã£ãã·ã¥ããä»åŸäœ¿çšããŸãã
ã«ãŒãã£ã³ã° ãµãŒãã¹ãšããŒãžã§ã³ç®¡ç
ãµãŒãã¹ã«å ãããã倿Žãé倧ãªå€æŽã§ããã2 ã€ä»¥äžã®ç°ãªãããŒãžã§ã³ã®ãµãŒãã¹ãåæã«å®è¡ããå¿ èŠãããå Žåã¯ãWCF ã«ãŒãã£ã³ã° ãµãŒãã¹ã䜿çšããŠãé©åãªãµãŒãã¹ ã€ã³ã¹ã¿ã³ã¹ã«ã¡ãã»ãŒãžãã«ãŒãã£ã³ã°ã§ããŸãã WCF ã«ãŒãã£ã³ã° ãµãŒãã¹ã¯ãã³ã³ãã³ã ããŒã¹ã®ã«ãŒãã£ã³ã°ã䜿çšããŸããã€ãŸããã¡ãã»ãŒãžå ã®æ å ±ã䜿çšããŠãã¡ãã»ãŒãžãã«ãŒãã£ã³ã°ããå Žæã決å®ããŸãã WCF ã«ãŒãã£ã³ã° ãµãŒãã¹ã®è©³çްã«ã€ããŠã¯ãã ã«ãŒãã£ã³ã° ãµãŒãã¹ããåç §ããŠãã ããã ãµãŒãã¹ã®ããŒãžã§ã³ç®¡çã« WCF ã«ãŒãã£ã³ã° ãµãŒãã¹ã䜿çšããæ¹æ³ã®äŸã«ã€ããŠã¯ãã æ¹æ³: ãµãŒãã¹ã®ããŒãžã§ã³ç®¡çããåç §ããŠãã ããã
ä»é²
å³å¯ãªããŒãžã§ã³ç®¡çãå¿ èŠãªå Žåã®äžè¬çãªããŒã¿ ã³ã³ãã©ã¯ãã®ããŒãžã§ã³ç®¡çã¬ã€ãã³ã¹ã¯ãããŒã¿ ã³ã³ãã©ã¯ããäžå€ãšããŠæ±ãã倿Žãå¿ èŠãªå Žåã¯æ°ãããã®ãäœæããããšã§ãã æ°ããããŒã¿ ã³ã³ãã©ã¯ãããšã«æ°ããã¯ã©ã¹ãäœæããå¿ èŠããããããå€ãããŒã¿ ã³ã³ãã©ã¯ã ã¯ã©ã¹ã®èгç¹ããèšè¿°ãããæ¢åã®ã³ãŒããååŸããæ°ããããŒã¿ ã³ã³ãã©ã¯ã ã¯ã©ã¹ã®èгç¹ããæžãçŽãå¿ èŠããªãããã«ããããã®ã¡ã«ããºã ãå¿ èŠã§ãã
ãã®ãããªã¡ã«ããºã ã® 1 ã€ã¯ãã€ã³ã¿ãŒãã§ã€ã¹ã䜿çšããŠåããŒã¿ ã³ã³ãã©ã¯ãã®ã¡ã³ããŒãå®çŸ©ããã€ã³ã¿ãŒãã§ã€ã¹ãå®è£
ããããŒã¿ ã³ã³ãã©ã¯ã ã¯ã©ã¹ã§ã¯ãªããã€ã³ã¿ãŒãã§ã€ã¹ã®èгç¹ããå
éšå®è£
ã³ãŒããèšè¿°ããããšã§ãã ãµãŒãã¹ã®ããŒãžã§ã³ 1 ã®æ¬¡ã®ã³ãŒãã¯ã IPurchaseOrderV1 ã€ã³ã¿ãŒãã§ã€ã¹ãš PurchaseOrderV1ã瀺ããŠããŸãã
public interface IPurchaseOrderV1
{
string OrderId { get; set; }
string CustomerId { get; set; }
}
[DataContract(
Name = "PurchaseOrder",
Namespace = "http://examples.microsoft.com/WCF/2005/10/PurchaseOrder")]
public class PurchaseOrderV1 : IPurchaseOrderV1
{
[DataMember(...)]
public string OrderId {...}
[DataMember(...)]
public string CustomerId {...}
}
ãµãŒãã¹ ã³ã³ãã©ã¯ãã®æäœã¯ PurchaseOrderV1ã®èгç¹ããèšè¿°ãããŸãããå®éã®ããžãã¹ ããžãã¯ã¯ IPurchaseOrderV1ã®èгç¹ããèšè¿°ãããŸãã ãã®åŸãããŒãžã§ã³ 2 ã§ã¯ã次ã®ã³ãŒãã«ç€ºãããã«ãæ°ãã IPurchaseOrderV2 ã€ã³ã¿ãŒãã§ã€ã¹ãšæ°ãã PurchaseOrderV2 ã¯ã©ã¹ãååšããŸãã
public interface IPurchaseOrderV2
{
DateTime OrderDate { get; set; }
}
[DataContract(
Name = "PurchaseOrder",
Namespace = "http://examples.microsoft.com/WCF/2006/02/PurchaseOrder")]
public class PurchaseOrderV2 : IPurchaseOrderV1, IPurchaseOrderV2
{
[DataMember(...)]
public string OrderId {...}
[DataMember(...)]
public string CustomerId {...}
[DataMember(...)]
public DateTime OrderDate { ... }
}
ãµãŒãã¹ ã³ã³ãã©ã¯ãã¯ã PurchaseOrderV2ã®èгç¹ããèšè¿°ãããæ°ããæäœãå«ãããã«æŽæ°ãããŸãã
IPurchaseOrderV1ã«é¢ããŠèšè¿°ãããæ¢åã®ããžãã¹ ããžãã¯ã¯åŒãç¶ãPurchaseOrderV2ã§æ©èœããOrderDate ããããã£ãå¿
èŠãšããæ°ããããžãã¹ ããžãã¯ã¯ãIPurchaseOrderV2ã®èгç¹ããèšè¿°ãããŸãã