首先,你需要使用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中实现的。