首先,你需要使用Visual Studio 2005,并且需要下載和安裝微軟Atlas。假如你沒有安裝Visual Studio 2005,那么你可以下載一個免費的Visual Studio EXPRess版本。本文將使用一個ZipCodeRUs示例應用程序來解釋如何通過Atlas實現該程序與Web服務的交互。這個示例應用程序能夠檢索具體的郵政代碼信息,例如城市、縣的名稱及其緯度、經度等信息。該程序依靠于tilisoft.com網站提供的一個免費且公開可用的Web服務來檢索該信息。這個示例應用程序從下面兩個角度展示了Atlas的Web服務威力:
存在兩種創建Web服務客戶端代理類的方法。你可以在Visual Studio命令行上使用wsdl.exe來創建這些代理類;或者從Visual Studio IDE中創建一個Web引用。下面命令展示了如何從你的應用程序的App_Code文件夾下使用wsdl.exe來為ZipCode Web服務創建強類型化代理類。注重,當你從命令行輸入下列代碼時,下面這些內容應該在同一行上。
... [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] public class ZipCodeConduitService : System.Web.Services.WebService{ ... [WebMethod] public ZipCodeConduitData GetZipCodeInfo(String corelationId,String zipCode) { if (zipCode.Equals("error")){ throw new ZipCodeConduitException(corelationId,"Here is an error just for you!! Enjoy!"); } ZipCode xZipCodeService = new ZipCode(); ZipCodeConduitData zipCodeConduitData = null; ZipCodeData xZipCodeData = xZipCodeService.GetInfo(zipCode); zipCodeConduitData = new ZipCodeConduitData(corelationId, zipCode, xZipCodeData); return zipCodeConduitData; } } 在前面的代碼中,ZipCodeConduitData是一個值對象,用于在客戶端和ZipCodeConduitService之間傳遞信息。這個ZipCodeConduitData類具有如下所示的get屬性,而CorelationId屬性答應客戶端跟蹤它們的請求。
... using Tilisoft.ZipCode; public class ZipCodeConduitData{ public ZipCodeConduitData(String corelationId,ZipCodeData data) { hydrate(corelationId, data); } String _corelationId; public String CorelationId{ get { return _corelationId; } } ... String _county; public String County{ get { return _county; } } String _city; public String City{ get { return _city; } } ... private void hydrate(String corelationId, ZipCodeData data) { _corelationId = corelationId; if (data.ZipCodeInfo.Count > 0) { _zipCode = data.ZipCodeInfo[0].ZIPCODE; _county = data.ZipCodeInfo[0].COUNTY; _city = data.ZipCodeInfo[0].CITY; ... } } } 這個ZipCodeConduitException是一個派生自System.Exception的C#異常類。該異常類包括correlationId值;客戶端在每次發送請求時都使用它,詳見下面的代碼片斷:
... using System; ... public class ZipCodeConduitException : System.Exception{ String _corelationId; public String CorelationId{ get { return _corelationId; } set { _corelationId = value; } } public ZipCodeConduitException(String corelationId, String message):base(message) { _corelationId = corelationId; } } QQRead.com 推出數據恢復指南教程 數據恢復指南教程 數據恢復故障解析 常用數據恢復方案 硬盤數據恢復教程 數據保護方法 數據恢復軟件 專業數據恢復服務指南 四、 構建ZipCode JavaScript客戶端
現在,既然你已經實現了服務器端的Web服務代碼,那么接下來,你可以創建一個存取該服務的JavaScript客戶端。為此,你要添加ZipCodeConduitClient.aspx;這是通過使用"Add New Item…"→"Web Form"選項來把一個Web表單添加到你的ZipCodeRUs中實現的。