WCF面向服務(wù)應(yīng)用程序系列之五契約版本管理_第1頁
WCF面向服務(wù)應(yīng)用程序系列之五契約版本管理_第2頁
WCF面向服務(wù)應(yīng)用程序系列之五契約版本管理_第3頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、WCF面向服務(wù)應(yīng)用程序系列之五契約版本管理一版本相容性開發(fā)環(huán)境:VisualStudio2010+NetFramework4.0。服務(wù)契約的變化對客戶端產(chǎn)生的阻礙如下:服務(wù)契約的變化對現(xiàn)存客戶端的阻礙在操作簽名上添加新的參數(shù)客戶端町M、能被阻礙新的參數(shù)在服務(wù)中被初始化為缺省值從操作簽名中刪除參數(shù)客戶端町M、能被阻礙客戶端傳遞的余外參數(shù)將被忽略,這些數(shù)據(jù)在服務(wù)端被丟失修改參數(shù)類型如果從客戶端進(jìn)入的類型無法轉(zhuǎn)換為參數(shù)的數(shù)據(jù)類型,將會拋出專門修改返回數(shù)值的類型如果從服務(wù)端返回的值無法轉(zhuǎn)換為在客戶端操作簽名中所期望的數(shù)據(jù)類型,那么將會拋出添加新的操作客戶端町M、能被阻礙由于客戶端不明白新加入操作的存在

2、,因此其可不能被調(diào)用卜除操作拋出??诳蛻舳税l(fā)送給服務(wù)端的消息會被認(rèn)為使用了未知的action頭數(shù)據(jù)契約為變化對客戶端產(chǎn)生的阻礙如下:數(shù)據(jù)契約的變化對現(xiàn)存客戶端的阻礙添加新的non-required成員客戶端町M、能被阻礙缺少的數(shù)值將會被初始化為缺省值添加新的required成員關(guān)于缺少的值,將會拋出專門刪除non-required成員服務(wù)端數(shù)據(jù)丟失無法將全部數(shù)據(jù)集返回給客戶端口小R匕拋出專口刪除required成員當(dāng)客戶端收到來自服務(wù)端帶有缺失數(shù)據(jù)的響應(yīng)時,將會拋出專門修改已存的成員的數(shù)據(jù)類型如果類型兼容,那么可不能產(chǎn)生專門,然而可能會導(dǎo)致未知的結(jié)果下面通過DEMO來演示服務(wù)端數(shù)據(jù)契約的變化對

3、現(xiàn)存客戶端的阻礙:1、新增一個WCFServiceLibrary程序,修改解決方案名稱為Contractversion,修改項目名稱為ExplicitContract,刪除白動添加的文件。2、新建Item.cs類,代碼如下:注意注釋部分。3、創(chuàng)建服務(wù)接口文件IExplicitService.cs,代碼如下:4、創(chuàng)建ExplicitService.cs類文件,代碼如下:publicclassExplicitService:IExplicitServiceprivateItem_item;publicvoidSaveItem(Itemitem)this._item=item;publicItemG

4、etItem()this._item.Message="IExplicitService.GetItem()invoked."returnthis._item;5、修改App.config中的服務(wù)名稱、端點契約、服務(wù)地址,代碼如下:碰代碼<?xmlversion="1.0"encoding="utf-8”?><configuration><system.web><compilationdebug="true"/></system.web><!-Whendepl

5、oyingtheservicelibraryproject,thecontentoftheconfigfilemustbeaddedtothehost'sapp.configfile.System.Configurationdoesnotsupportconfigfilesforlibraries.-><system.serviceModel><services><servicename="ExplicitContract.ExplicitService"><host><baseAddresses>&

6、lt;addbaseAddress="http:/localhost:8732/Design_Time_Addresses/ExplicitContract/ExplicitService/"/></baseAddresses></host><!-ServiceEndpoints-><!-Unlessfullyqualified,addressisrelativetobaseaddresssuppliedabove-><endpointaddress=""binding="wsHttp

7、Binding"contract="ExplicitContract.IExplicitService"><!-Upondeployment,thefollowingidentityelementshouldberemovedorreplacedtoreflecttheidentityunderwhichthedeployedserviceruns.Ifremoved,WCFwillinferanappropriateidentityautomatically.-><identity><dnsvalue="localh

8、ost"/></identity></endpoint><!-MetadataEndpoints-><!-TheMetadataExchangeendpointisusedbytheservicetodescribeitselftoclients.-><!-Thisendpointdoesnotuseasecurebindingandshouldbesecuredorremovedbeforedeployment-><endpointaddress="mex"binding="mex

9、HttpBinding"contract="IMetadataExchange"/></service></services><behaviors><serviceBehaviors><behavior><!-Toavoiddisclosingmetadatainformation,setthevaluebelowtofalseandremovethemetadataendpointabovebeforedeployment-><serviceMetadatahttpGetEnab

10、led="True”/><!-Toreceiveexceptiondetailsinfaultsfordebuggingpurposes,setthevaluebelowtotrue.Settofalsebeforedeploymenttoavoiddisclosingexceptioninformation-><serviceDebugincludeExceptionDetailInFaults="False"/></behavior></serviceBehaviors></behaviors>

11、</system.serviceModel></configuration>6、創(chuàng)建客戶端操縱臺程序Client,添加ServiceReference修改名稱空間為TestExplicitContract,并添加測試TestExplicitContract方法,代碼如下:田e代碼7、設(shè)置Client為啟動項目,運行調(diào)試ExplicitContract程序,然后,將在操縱臺看到如下輸出:TestExplicitContractBeginInputexittoclosetheclient,otherscontinue.Pleaseinputtheid:88Youhavein

12、putitem.IdContract:88Pleaseinputthename:xinhaijulanYouhaveinputitem.NameContract:xinhaijulanGetfromserveritem.IdContractis:88Getfromserveritem.NameContractis:xinhaijulanapzp.ctMiligifDrjehw,hem.csQICiplint&eFviDE.-rs-CupIhdterwicE-.c?£AppxcnfigPr&graffijcsfiftGetfromr-serveritem?Message

13、ContractisiiExplicitServ-icevGetItemOinvokEoiblic&KlicitSrwic'Mitrac.ClLiEin.lercbsintCmfieur&liorJ3wi»>fttuiEcencita&ddteEE:ed.他*迪心*湖心財*做*eE曹工十土匚費&頭1.二aJ+uxiliinLHn«t«JLddjTIIiIInputexiI'to"closetheclient,otherscontinue1心MLSyithSbe學(xué)禎眥加L.ir-1I-ra-notBAddtWEB】I.&痢修改mem.cs前聆代碼,把注釋去掉,新增屬性:p-aarrrtervnhsijijlBnTOnn/dernorErplitkCoptractnteri,eDate,.E使用”sRequired=frue;重新-生成服務(wù)端ExplicitContract項目,不n'Eipi/TKhEiE五戶卜珂和IqmtmEfdcFm/EwIk成dfact'語nfltoMpccttd.更新客尸端ServiceReference設(shè)置Client為Contract棒序,然后,將看到如下今門:Creat啟動項目,運行調(diào)試Explicit9、修改Item.cs

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論