讓你為之不解WCF契約應(yīng)用實(shí)例分析
之前的文章也都介紹了WCF相關(guān)的一些基本概念、特性和框架模型,現(xiàn)在我們來(lái)具體實(shí)現(xiàn)一個(gè)WCF契約的應(yīng)用實(shí)例。讓大家理論結(jié)合實(shí)現(xiàn)的操作一下,客戶端和WCF服務(wù)通信的過(guò)程如圖:
#T#客戶端通過(guò)代理調(diào)用WCF服務(wù),代理通過(guò)服務(wù)地址找到特定的服務(wù),調(diào)用執(zhí)行特定的服務(wù)方法。WCF契約(Contract)定義實(shí)現(xiàn)的代碼包括服務(wù)契約IWCFService、操作契約OperationContract、和數(shù)據(jù)契約DataContract。具體WCF契約代碼:
- Code
- //ServiceContract屬性以及Indigo使用的所有其他屬性均在System.ServiceModel命名空間中定義,
- //因此本例開(kāi)頭使用using語(yǔ)句來(lái)引用該命名空間。
- namespaceWCFService
- {
- //1.服務(wù)契約
- [ServiceContract(Namespace="http://www.cnblogs.com/frank_xl/")]
- publicinterfaceIWCFService
- {
- //操作契約
- [OperationContract]
- stringSayHello(stringname);
- //操作契約
- [OperationContract]
- stringSayHelloToUser(Useruser);
- }
- //2.服務(wù)類,集成接口。實(shí)現(xiàn)契約
- publicclassWCFService:IWCFService
- {
- //實(shí)現(xiàn)接口定義的方法
- publicstringSayHello(stringname)
- {
- Console.WriteLine("Hello!{0},Usingstring",name);
- return"Hello!"+name;
- }
- //實(shí)現(xiàn)接口定義的方法
- publicstringSayHelloToUser(Useruser)
- {
- Console.WriteLine("Hello!{0}{1},UsingDataContract",user.FirstName,user.LastName);
- return"Hello!"+user.FirstName+""+user.LastName;
- }
- }
- //3.數(shù)據(jù)契約//序列化為XML,作為元數(shù)據(jù)封裝到服務(wù)里
- [DataContract]
- publicstructUser
- {
- [DataMember]
- publicstringFirstName;
- [DataMember]
- publicstringLastName;
- }
- }