Web服务是构造分布式、模块化应用程序的最新技术发展趋势。Web服务可以把业务逻辑划分一个一个的组件,然后在整个因特网的范围上执行其功能。本文就是向读者展示一个简单的.NET Web服务创建过程。
假如你过去曾经构造过微软世界的COM组件,那么你对创造可重用对象中间层的概念应该是比较熟悉了,正是可重用对象可以让开发者重用代码、利用由此带来的软件开发灵活性。这些组件能作为客户应用程序放在同一计算机上执行,或者以DCOM的形式在分离的机器上执行。
现在的.NET体系则把以上的概念大大推进了一步,.NET允许你把组件放在远程计算机上,而且你同这些远程计算机之间仅存在HTTP连接;换句话说,这些远程机器可能并不在企业网络内。由于SOAP协议的出现,DCOM的二进制标准也被基于文本和XML的调用语法代替了,新的技术标准允许客户采用任何操作系统调用Web服务,而这些Web服务则运行在任何操作系统上。
用.NET打造Web服务
微软早在大约两年前就发布了针对Visual Basic 6的SOAP工具包,但是,.NET出现后则进一步把构造Web服务的任务变得更方便了。对Web服务的支持已经内置在了.NET基础框架之内,这意味着任何.NET语言都能创建Web服务。Web服务甚至成为了Visual Studio.NET中的一种工程类型。就象大多数.NET工程类型一样,你甚至能采用记事本这样的文本编辑程序创建全部应用程序。
为了创建Web服务,你的开发计算机上至少需要安装了ASP.NET引擎。这种引擎属于.NET框架和Visual Studio.NET的一部分。如果你手头没有ASP.NET引擎,那么你不妨从asp.net网站下载ASP.NET。下载软件只能在Windows 2000和Windows XP上使用。安装了ASP.NET之后,你要不创建一个虚拟目录要不直接在inetpub\wwwroot目录下创建自己的文件,我举的例子就用后面的方法。
最近看过伦敦一家公司的网站,他们网页上的价格单位是英磅。页面上有一个转换工具允许你把英镑换算为美元。这个转换工具就是一个绝佳的Web服务实例。现在就请打开记事本程序准备创建XML Web服务吧。
创建Web服务的第一步是标识Web服务、说明服务使用的语言同时创建的类的名字。在这个例子中,采用的Web服务编程语言是Visual Basic.NET,类的名字是ConvertMoney。你的第一行代码如下所示:
<%@ WebService Language=”VB” Class=”ConvertMoney” %>
接着,采用Imports声明导入System.Web.Services名称空间。这样做才能让你按照名字索引WebService等类而无须索引整个名称空间。该行代码如下所示:
Imports System.Web.Services
然后创建Web服务自身的shell。WebService类在你自己的类的名字前加上前缀,代码如下:
<WebService()>Public Class ConvertMoney
‘ code will go here
End Class
到这一步几乎就可以增加类的功能了,但是你还得先增加一行关键代码。你必须继承WebService基类,这是.NET框架的一部分。这样做所实现的功能令你的服务类可以被任何Internet客户调用。增加Inherits声明之后,所有的代码如下所示。
<%@ WebService Language=”VB” Class=”ConvertMoney” %>
Imports System.Web.Services
<WebService()>Public Class ConvertMoney
Inherits WebService
‘ code will go here
End Class
现在就可以给你的类添加功能了。在这里,你创建了一个简单函数接受英镑的货币量然后返回美元值。通常,你还应该在数据库内找到两种货币之间的交换汇率。在上面的例子里,你在代码中直接把汇率设定为1英镑可兑换1.44美元。在以上代码块中增加代码之后全部Web服务代码如下所示。
<%@ WebService Language=”VB” Class=”ConvertMoney” %>
Imports System.Web.Services
<WebService()>Public Class ConvertMoney
Inherits WebService
<WebMethod()>Public Function _
PoundsToDollars(BritishPounds As Double) As Double
Return BritishPounds * 1.44
End Function
End Class
代码编写完毕,你把代码文件存放在某个虚拟目录下(通常是c:\inetpub\wwwroot)即可。把文件保存为Converter.asmx。ASMX文件扩展名是.NET Web服务的标记。保存文件之后,你的Web服务就准备露脸了。