日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
WCF數(shù)據(jù)表基本概念解讀

在WCF開發(fā)工具中,我們可以通過對此的應用來獲得一些技術(shù)上的幫助,從而輕松的完成各種功能需求。今天我們就先來看看WCF數(shù)據(jù)表的相關(guān)概念。DataSet以及WCF數(shù)據(jù)表類型是可序列化的,因而我們可以在服務契約中接收或返回數(shù)據(jù)表或數(shù)據(jù)集。

如果服務契約使用了DataSet和DataTable類型,生成的代理文件不會直接使用DataSet和DataTable類型,而是包含DataTable數(shù)據(jù)契約的定義(只包含DataTable的樣式,而不包含任何代碼)。但我們可以手工修改這些定義。例如這樣的服務契約:

 
 
 
  1. [ServiceContract()] 
  2. public interface IContactManager { 
  3. [OperationContract] 
  4. void AddContact(Contact contact); 
  5. [OperationContract] 
  6. void AddContacts(DataTable contacts); 
  7. [OperationContract] 
  8. DataTable GetContacts(); }

那么生成的代理文件可能會是這樣:

 
 
 
  1. public interface IContactManager { 
  2. [System.ServiceModel.OperationContractAttribute(
    Action="http://tempuri.org/IContactManager/AddContact", 
    ReplyAction="http://tempuri.org/IContactManager/AddContactResponse")] 
  3. [System.ServiceModel.XmlSerializerFormatAttribute()] 
  4. void AddContact(Contact contact); 
  5. [System.ServiceModel.OperationContractAttribute(
    Action="http://tempuri.org/IContactManager/AddContacts",
    ReplyAction="http://tempuri.org/IContactManager/AddContactsResponse")] 
  6. [System.ServiceModel.XmlSerializerFormatAttribute()] 
  7. AddContactsResponse AddContacts(AddContactsRequest request); 
  8. [System.ServiceModel.OperationContractAttribute(
    Action="http://tempuri.org/IContactManager/GetContacts",
    ReplyAction="http://tempuri.org/IContactManager/GetContactsResponse")] 
  9. [System.ServiceModel.XmlSerializerFormatAttribute()] 
  10. GetContactsResponse GetContacts(GetContactsRequest request); } 

代理類的定義則如下所示:

 
 
 
  1. [System.Diagnostics.DebuggerStepThroughAttribute()] 
  2. [System.CodeDom.Compiler.GeneratedCodeAttribute
    ("System.ServiceModel", "3.0.0.0")] 
  3. public partial class ContactManagerClient : 
    System.ServiceModel.ClientBase
  4. IContactManager { //其余成員略; 
  5. public void AddContact(Contact contact) 
    { base.Channel.AddContact(contact); 
  6. AddContactsResponse IContactManager.AddContacts
    (AddContactsRequest request) { 
  7. return base.Channel.AddContacts(request); } 
  8. public void AddContacts(AddContactsContacts contacts) { 
  9. AddContactsRequest inValue = new AddContactsRequest(); 
  10. inValue.contacts = contacts; 
  11. AddContactsResponse retVal = ((IContactManager)(this)).
    AddContacts(inValue); } 
  12. GetContactsResponse IContactManager.GetContacts
    (GetContactsRequest request) { 
  13. return base.Channel.GetContacts(request); } 
  14. public GetContactsResponseGetContactsResult GetContacts() { 
  15. GetContactsRequest inValue = new GetContactsRequest(); 
  16. GetContactsResponse retVal = ((IContactManager)(this)).
    GetContacts(inValue); 
  17. return retVal.GetContactsResult; } }

我們可以手動將AddContacts()與GetContacts()方法修改為:

 
 
 
  1. public void AddContacts(DataTable contacts) { 
  2. AddContactsRequest inValue = new AddContactsRequest(); 
  3. inValue.contacts = contacts; 
  4. AddContactsResponse retVal = ((IContactManager)(this)).
    AddContacts(inValue); } 
  5. public DataTable GetContacts() { 
  6. GetContactsRequest inValue = new GetContactsRequest(); 
  7. GetContactsResponse retVal = ((IContactManager)(this)).
    GetContacts(inValue); 
  8. return retVal.GetContactsResult; }

當然,前提條件是我們需要修改AddContactRequest類以及GetContactsResponse,例如將AddContactRequest類的contacts成員由原來的AddContactsContacts類型修改為DataTable類型;將GetContactsResponse中的GetContactsResult成員由原來的GetContactsResponseGetContactsResult類型修改為WCF數(shù)據(jù)表類型。

自動生成的代理類非常復雜,實際上我們完全可以簡化。首先將客戶端的服務契約定義修改為與服務端服務契約完全一致的定義:

 
 
 
  1. [ServiceContract()] 
  2. public interface IContactManager { 
  3. [OperationContract] 
  4. void AddContact(Contact contact); 
  5. [OperationContract] 
  6. void AddContacts(DataTable contacts); 
  7. [OperationContract] DataTable GetContacts(); }

然后修改代理類ContactManagerClient:

 
 
 
  1. public partial class ContactManagerClient : System.ServiceModel.
    ClientBase
  2. IContactManager { 
  3. public void AddContact(Contact contact) { base.Channel.
    AddContact(contact); } 
  4. public void AddContacts(DataTable contacts) 
    { base.Channel.AddContacts(contacts); } 
  5. public DataTable GetContacts() { 
  6. return base.Channel.GetContacts(); 
  7. } }

以上就是對WCF數(shù)據(jù)表類型的相關(guān)概念。


當前文章:WCF數(shù)據(jù)表基本概念解讀
分享鏈接:http://www.5511xx.com/article/cojigdp.html