ASP.NET AJAX的WCF服務
現(xiàn)在,我們將了解更多傳統(tǒng)的WCF服務實現(xiàn),并且我們也將了解如何通過ASP.NET AJAX向外暴露該服務。默認情況下,當我們創(chuàng)建類庫工程時,對于需要運行的WCF系統(tǒng)不會添加服務模型和對運行時序列化的支持。因此,我們不得不添加必要的服務引用。
繼續(xù)并點擊類庫工程鼠標右鍵然后選擇添加引用,再選擇如下引用:
◆System.Runtime.Serialization
◆System.ServiceModel

在本階段,我們將使用一個TODO管理示例來演示整個過程。添加一個基于數(shù)據(jù)庫的服務然后創(chuàng)建一個帶有字段為ID, Description和Status 的標TODO?,F(xiàn)在,從項目模板中添加一個LINQ to SQL的類文件。從數(shù)據(jù)庫中拖拽TODO表到LINQ to SQL類文件設(shè)計器上。
現(xiàn)在添加設(shè)計器表面并從屬性窗口改變序列化模式為單向的?,F(xiàn)在,我們的設(shè)計器就生成了可以供WCF使用的LINQ to SQL類。如果你想使用自定義用戶定義類型,你必須為你的類設(shè)置[DataContract]特性并且你必須為你想暴露的WCF服務類的每個屬性添加 [DataMember]特性。
現(xiàn)在,我們將添加一個如下形式的服務接口:
- namespaceServiceLibrary
 - {
 - [ServiceContract(Namespace="ServiceLibrary")]
 - interfaceIToDoService
 - {
 - [OperationContract]
 - ToDoGetToDo(longID);
 - [OperationContract]
 - ToDoAddToDo(ToDotoDo);
 - [OperationContract]
 - boolDeleteToDo(ToDotodo);
 - [OperationContract]
 - ToDoUpdateToDo(ToDotodo);
 - [OperationContract]
 - List<ToDo>GetAllToDo();
 - }
 - }
 
注意,在ServiceContract 接口特性中我們已經(jīng)提到的一個命名空間。這點非常重要。我們將使用該名字作為服務的名稱以便內(nèi)部的JavaScript代碼訪問該服務?,F(xiàn)在,我們將添加實現(xiàn)該服務的接口;其代碼如下。
請注意代碼中在類特性上所使用的[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]特性;這對于以ASP.NET AJAX啟用WCF服務暴露的方式是必須的。
- namespaceServiceLibrary
 - {
 - [AspNetCompatibilityRequirements(RequirementsMode=
 - AspNetCompatibilityRequirementsMode.Allowed)]
 - publicclassToDoService:IToDoService
 - {
 - #regionIToDoServiceMembers
 - publicToDoGetToDo(longID)
 - {
 - DataClasses1DataContextcontext=newDataClasses1DataContext();
 - vartoDos=frompincontext.ToDos
 - wherep.ID==ID
 - selectp;
 - List<ToDo>listTodos=toDos.ToList();
 - if(listTodos!=null&&listTodos.Count>0)
 - {
 - returnlistTodos[0];
 - }
 - else
 - {
 - returnnull;
 - }
 - }
 - #endregion
 - }
 - }
 
以上是ASP.NET AJAX的WCF服務
【編輯推薦】















 
 
 
 
 
 
 