WCF簡(jiǎn)單教程(4)數(shù)據(jù)契約

第四篇:用數(shù)據(jù)契約傳遞自定義數(shù)據(jù)對(duì)象

成都創(chuàng)新互聯(lián)專注于臨淄企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站,商城網(wǎng)站建設(shè)。臨淄網(wǎng)站建設(shè)公司,為臨淄等地區(qū)提供建站服務(wù)。全流程按需設(shè)計(jì),專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,成都創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)

之前的演示中,我們一直都是在用string類型做參數(shù)和返回值,實(shí)際項(xiàng)目中肯定會(huì)傳遞自定義的數(shù)據(jù)類型。與WebService不同,WCF想傳遞自定義數(shù)據(jù),必須要將其定義為數(shù)據(jù)契約。看一個(gè)例子:

  1. using System; 
  2. using System.Runtime.Serialization;  //注意加上這個(gè)引用,并引用相應(yīng)的dll 
  3.  
  4. namespace Server 
  5.     //用DataContract來標(biāo)記本類是數(shù)據(jù)契約類 
  6.     [DataContract] 
  7.     public class UserEntity 
  8.     { 
  9.         //用DataMember來標(biāo)識(shí)數(shù)據(jù)成員,沒有此標(biāo)識(shí)的屬性不會(huì)作為數(shù)據(jù)契約的一部分 
  10.         [DataMember] 
  11.         public string Name { get; set; } 
  12.         [DataMember] 
  13.         public int Age { get; set; } 
  14.     } 

這個(gè)契約需要在客戶端和服務(wù)端都存在,然后它就可以作為參數(shù)或返回值,在雙方互相傳遞了,具體例子就省略了。

這里面有一點(diǎn)需要注意,數(shù)據(jù)契約與服務(wù)契約有一點(diǎn)小小的區(qū)別,數(shù)據(jù)契約要求在客戶端和服務(wù)端必須保持完全一致的類名與命名空間,否則就無法傳遞數(shù)據(jù),這與服務(wù)契約是不同的,服務(wù)契約放到客戶端時(shí)允許換個(gè)命名空間。

組內(nèi)有同事遇到過類似的問題,直接把數(shù)據(jù)契約類copy了一份到客戶端之后改了命名空間,然后就一直取不到數(shù)據(jù)。 這里也引出另一個(gè)話題,推薦把各種契約(不含實(shí)現(xiàn)類)單獨(dú)封裝成一個(gè)dll,雙方均引用它,結(jié)構(gòu)上清晰,也避免出錯(cuò)。

今天這篇有點(diǎn)短,下回聊一聊用IIS做HOST。

 

當(dāng)前題目:WCF簡(jiǎn)單教程(4)數(shù)據(jù)契約
網(wǎng)站鏈接:http://muchs.cn/article0/jpgjoo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站、域名注冊(cè)、外貿(mào)建站、響應(yīng)式網(wǎng)站、ChatGPT、Google

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站