欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

理解WCF中的Contracts

系統(tǒng) 1775 0

WCF中的Contracts

WCF通過(guò)Contract來(lái)說(shuō)明服務(wù)和操作,一般包含五種類(lèi)型的Contract:ServiceContract,OperationContract,F(xiàn)aultContract,DataContract,MessageContract。

?

1.ServiceContract

ServiceContract向外部暴漏了可以提供的服務(wù)接口,它可以包含服務(wù)名稱(chēng)、命名空間等服務(wù)器端的配置信息。

      
           1:  
      
      [ServiceContract]
    
      
           2:  
      
      
        interface
      
       IMyContract
    
      
           3:  
      
      {
    
      
           4:  
      
       [OperationContract]
    
      
           5:  
      
      
        string
      
       MyMethod();
    
      
           6:  
      
      }
    
      
           7:  
      
    
      
           8:  
      
      
        class
      
       MyService : IMyContract
    
      
           9:  
      
      {
    
      
          10:  
      
      
        public
      
      
        string
      
       MyMethod()
    
      
          11:  
      
       {
    
      
          12:  
      
      
        return
      
      
        "Hello World"
      
      ;
    
      
          13:  
      
       }
    
      
          14:  
      
      }
    

?

2.OperationContract

OperationContract定義在ServiceContract的內(nèi)部,定義了具體的服務(wù)操作。在此基礎(chǔ)上,可以對(duì)操作的事務(wù),綁定(One-way,Two-way等)和FaultContract信息。

?

      
           1:  
      
       [ServiceContract]
    
      
           2:  
      
      
        interface
      
       IMyContract
    
      
           3:  
      
       {
    
      
           4:  
      
       [FaultContract(
      
        typeof
      
      (MyFaultContract))]
    
      
           5:  
      
       [OperationContract]
    
      
           6:  
      
      
        string
      
       MyMethod();
    
      
           7:  
      
       }
    

?

3.Data Contract

定義了服務(wù)器和客戶(hù)端交互的內(nèi)容,它可以標(biāo)識(shí)類(lèi),以便作為OperationContract的參數(shù)或者返回類(lèi)型。

      
           1:  
      
      [DataContract]
    
      
           2:  
      
      
        class
      
       Person
    
      
           3:  
      
      {
    
      
           4:  
      
       [DataMember]
    
      
           5:  
      
      
        public
      
      
        string
      
       ID;
    
      
           6:  
      
       [DataMember]
    
      
           7:  
      
      
        public
      
      
        string
      
       Name;
    
      
           8:  
      
      }
    
      
           9:  
      
    
      
          10:  
      
      [ServiceContract]
    
      
          11:  
      
      
        interface
      
       IMyContract
    
      
          12:  
      
      {
    
      
          13:  
      
       [OperationContract]
    
      
          14:  
      
       Person GetPerson(
      
        int
      
       ID);
    
      
          15:  
      
      }
    

?

4.MessageContract

當(dāng)OperationContract需要傳遞參數(shù)或者返回值時(shí),可以使用MessageContract。它可以定義消息的Header和Body,以及安全性等。

      
           1:  
      
      [ServiceContract]
    
      
           2:  
      
      
        public
      
      
        interface
      
       IRentalService
    
      
           3:  
      
      {
    
      
           4:  
      
       [OperationContract]
    
      
           5:  
      
      
        double
      
       CalPrice(PriceCalculate request);
    
      
           6:  
      
      }
    
      
           7:  
      
    
      
           8:  
      
      [MessageContract]
    
      
           9:  
      
      
        public
      
      
        class
      
       PriceCalculate
    
      
          10:  
      
      {
    
      
          11:  
      
       [MessageHeader]
    
      
          12:  
      
      
        public
      
       MyHeader SoapHeader { get; set; }
    
      
          13:  
      
       [MessageBodyMember]
    
      
          14:  
      
      
        public
      
       PriceCal PriceCalculation { get; set; }
    
      
          15:  
      
      }
    
      
          16:  
      
    
      
          17:  
      
      [DataContract]
    
      
          18:  
      
      
        public
      
      
        class
      
       MyHeader
    
      
          19:  
      
      {
    
      
          20:  
      
       [DataMember]
    
      
          21:  
      
      
        public
      
      
        string
      
       UserID { get; set; }
    
      
          22:  
      
      }
    
      
          23:  
      
    
      
          24:  
      
      [DataContract]
    
      
          25:  
      
      
        public
      
      
        class
      
       PriceCal
    
      
          26:  
      
      {
    
      
          27:  
      
       [DataMember]
    
      
          28:  
      
      
        public
      
       DateTime PickupDateTime { get; set; }
    
      
          29:  
      
       [DataMember]
    
      
          30:  
      
      
        public
      
       DateTime ReturnDateTime { get; set; }
    
      
          31:  
      
       [DataMember]
    
      
          32:  
      
      
        public
      
      
        string
      
       PickupLocation { get; set; }
    
      
          33:  
      
       [DataMember]
    
      
          34:  
      
      
        public
      
      
        string
      
       ReturnLocation { get; set; }
    
      
          35:  
      
       }
    
      
          36:  
      
    

?

5.FaultContract

FaultContract定義了服務(wù)可能出現(xiàn)的異常信息,以及服務(wù)隊(duì)錯(cuò)誤的處理和錯(cuò)誤信息拋出到客戶(hù)端的內(nèi)容。一個(gè)OperationContact可以包含0個(gè)或多個(gè)FaultContract。

      
           1:  
      
      [ServiceContract]
    
      
           2:  
      
      
        interface
      
       IMyContract
    
      
           3:  
      
      {
    
      
           4:  
      
       [FaultContract(
      
        typeof
      
      (MyFaultContract1))]
    
      
           5:  
      
       [FaultContract(
      
        typeof
      
      (MyFaultContract2))]
    
      
           6:  
      
       [OperationContract]
    
      
           7:  
      
      
        string
      
       MyMethod();
    
      
           8:  
      
    
      
           9:  
      
       [OperationContract]
    
      
          10:  
      
      
        string
      
       MyShow();
    
      
          11:  
      
       }
    

?

MessageContract和DataContract的比較

區(qū)別

DataContract提供了一種將.net的CLR類(lèi)型映射為可以被其他應(yīng)用程序識(shí)別的基于W3C的Xml的方法,使得不同的應(yīng)用間無(wú)須考慮對(duì)應(yīng)使用的是什么類(lèi)型的數(shù)據(jù),而只需關(guān)注這些被抽象的Xml信息。

MessageContract則描述了SOAP消息的結(jié)構(gòu),最終在服務(wù)器和客戶(hù)端進(jìn)行傳遞,因此能夠?qū)OAP信息的Header和Bodies進(jìn)行直接的訪(fǎng)問(wèn)和處理,可以對(duì)復(fù)雜的類(lèi)型進(jìn)行處理。

?

為什么需要或者什么時(shí)候使用MessageContract

MessageContract一般只在你需要對(duì)消息體進(jìn)行直接控制的時(shí)候使用,例如添加特定的Header,F(xiàn)ooter等信息。在一些場(chǎng)合,如果需要在消息中包含Session相關(guān)的信息時(shí),通過(guò)Header進(jìn)行傳遞,則無(wú)需像消息體中增加額外的參數(shù)。或者有時(shí)你需要提供一個(gè)自定義的安全協(xié)議或者在應(yīng)用間傳遞身份令牌。

當(dāng)然,使用MessageContract時(shí)需要從SOAP Header中檢索信息,而不是直接序列化后進(jìn)行處理。

?

不要混用MessageContract和DataContract

對(duì)于一個(gè)OperationContract來(lái)說(shuō),不要在參數(shù)和返回值中分別使用MessageContract和DataContract,否則在生成WSDL時(shí)會(huì)引起運(yùn)行時(shí)錯(cuò)誤。

理解WCF中的Contracts


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦?。?!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 国产在亚洲线视频观看 | 成人黄色片网站 | www干| 可以免费观看的av | 久久久综合九色合综国产 | 国产极品福利视频在线观看 | 国产免费小视频在线观看 | 欧美人与禽性xxxxx杂性 | 国产亚洲精品sese在线播放 | 91玖玖| 成在线人免费视频一区二区三区 | 中国一级毛片视频 | 欧美午夜一区二区三区免费大片 | 亚洲线精品一区二区三区 | 四虎欧美在线观看免费 | 久久精品欧美一区二区三区不卡 | 久久丁香视频 | 欧美成在人线a免费视频 | 欧美日韩亚洲在线 | 91撸吧| 97精品久久| 狠狠色噜噜狠狠狠狠色吗综合 | 日出水了视频大全 | 四虎影视最新网站在线播放 | 精品国产自在久久 | 久久久网 | 免费国产一区 | 欧美在线另类 | 欧美二级毛片免费高清电影 | 欧美大片在线播放 | 色综合 成人 | 亚洲福利在线观看 | 大陆黄色网 | 亚洲日本在线观看视频 | 亚洲第一视频区 | 欧美顶级毛片在线播放 | 日韩在线aⅴ免费视频 | 亚洲国产咪爱网 | 日本在线黄 | 国产成人免费高清激情明星 | 国产一区二区三区免费观看 |