在上一篇中和大家復習了有關(guān)WCF的一些基礎知識,這篇通過(guò)實(shí)例和大家分享如何開(kāi)發(fā)一個(gè)獲取,添加學(xué)生信息的WCF服務(wù)。
開(kāi)發(fā)WCF服務(wù)的端點(diǎn)需要涉及下面幾個(gè)任務(wù):
開(kāi)發(fā)服務(wù)契約:指定端點(diǎn)可用的WCF服務(wù)的操作。
開(kāi)發(fā)綁定:綁定指點(diǎn)端點(diǎn)與外界通信的協(xié)議。
添加,刪除,更新和配置端點(diǎn):在配置文件中添加和綁定端點(diǎn)(當然也可以用編碼的形式,但是不推薦。)
添加行為:一個(gè)行為就是一個(gè)組件,能增強服務(wù),端點(diǎn),和操作的運行時(shí)行為。
開(kāi)發(fā)一個(gè)WCF服務(wù)契約
一個(gè)WCF服務(wù)契約是一個(gè)用元數據屬性[ServiceContract]修飾的.NET接口或類(lèi)。每個(gè)WCF服務(wù)可以有一個(gè)或多個(gè)契約,每個(gè)契約是一個(gè)操作集合。
首先我們定義一個(gè).NET接口:IStuServiceContract,定義兩個(gè)方法分別實(shí)現添加和獲取學(xué)生信息的功能
void AddStudent(Student stu);stuCollection GetStudent();
用WCF服務(wù)模型的元數據屬性ServiceContract標注接口IStuServiceContract,把接口設計為WCF契約。用OperationContract標注AddStudent,GetStudent
GetStudent()返回一個(gè)類(lèi)型為stuCollection類(lèi)型的集合。AddStudent()需要傳入Student實(shí)體類(lèi)作為參數。

WCF服務(wù)和客戶(hù)交換SOAP信息。在發(fā)送端必須把WCF服務(wù)和客戶(hù)交互的數據串行化為XML并在接收端把XML反串行化。因此客戶(hù)傳遞給AddStudent操作的Student對象也必須在發(fā)送到服務(wù)器之前串行化為XML。WCF默認使用的是一個(gè)XML串行化器DataContractSerializer,用它對WCF服務(wù)和客戶(hù)交換的數據進(jìn)行串行化和反串行化。
作為開(kāi)發(fā)人員,我們必須要做的是用元數據屬性DataContract標注WCF和其客戶(hù)所交換的數據的類(lèi)型。用元數據屬性DataMember標注交換數據類(lèi)型中要串行化的屬性。(詳細看上面的代碼)
實(shí)現WCF服務(wù)契約
實(shí)在一個(gè)WCF服務(wù)契約就行寫(xiě)一個(gè)類(lèi)一樣容易,這里我們先創(chuàng )建一個(gè)處理Student的類(lèi)。StudentManage

接下來(lái)創(chuàng )建一個(gè)類(lèi)WCFStudentText,實(shí)現接口IStuServiceContract

用IEnumerator對象對存儲在IEnumerator集合中的Student信息進(jìn)行迭代,每一個(gè)PropertyDescriptor都是一個(gè)學(xué)生的信息。
駐留WCF服務(wù)
添加一個(gè)ADO.NET數據服務(wù)文件WCFStudentText.svc,并修改文件的內容為:
<%@ ServiceHost Service="WCFStudent.WCFStudentText"%>
最后我們要做的就是修改Web.config文件:

將WCF服務(wù)的名稱(chēng)設為WCFStudent.WCFStudentText,WCF服務(wù)端點(diǎn)(EndPoint)的服務(wù)契約設定為我們所編寫(xiě)的契約WCFStudent.IStuServiceContract
當然我們可以用VS2008直接創(chuàng )建WCF工程,將會(huì )給我們帶來(lái)很多方便。
這樣,一個(gè)WCF服務(wù)就完成了。

聯(lián)系客服