ASP.NET Web 服务
ASP.NET 使用 .asmx 文件提供 Web 服务支持。.asmx 文件是类似于 .aspx 文件的文本文件。这些文件是包含 .aspx 文件的 ASP.NET 应用程序的一部分。与 .aspx 一样,这些文件是 URI 可寻址的。
以下示例说明了一个非常简单的 .asmx 文件。
<%@ WebService Language="C#" Class="HelloWorld" %>
using System;
using System.Web.Services;
public class HelloWorld : WebService {
[WebMethod] public String SayHelloWorld() {
return "Hello World";
}
}
此文件的开始是一条 ASP.NET 指令 WebService,然后将语言设置为 C#、Visual Basic 或 JScript。接着,它导入命名空间 System.Web.Services。您必须包括此命名空间。接下来,声明 HelloWorld 类。此类是从基类 WebService 派生的(说明:从 WebService 基类派生是可选的)。最后,使可以作为服务的一部分进行访问的所有方法都在其签名的前面设置属性(在 C# 中为 [WebMethod],在 Visual Basic 中为 <WebMethod()>,在 JScript 中为 WebMethodAttribute)。
为使此服务可用,我们可以将该文件命名为 HelloWorld.asmx,并将其放置到名为 SomeDomain.com 的服务器上名为 someFolder 的虚拟目录内。使用 Web 浏览器,然后就可以输入 URL http://SomeDomain.com/someFolder/HelloWorld.asmx,生成的页将显示此 Web 服务(用 WebMethod 属性标记的服务)的公共方法,以及可用来调用这些方法的协议(例如 SOAP 或 HTTP GET)。
将地址 http://SomeDomain.com/someFolder/HelloWorld.asmx?WSDL 输入到浏览器中,这将返回一个 Web 服务描述语言 (WSDL) 文档。此 WSDL 文档非常重要,并且不能由访问该服务的客户端使用。
访问 Web 服务
除了 ASP.NET 服务器端的技术允许开发人员创建 Web 服务之外,.NET 框架还提供了一组高级的工具和代码来使用 Web 服务。因为 Web 服务基于开放式协议(如简单对象访问控件 (SOAP)),所以该客户端技术也可以用于使用非 ASP.NET Web 服务。
在 SDK 中,有一个名为 Web 服务描述语言工具 (WSDL.exe) 的工具。此命令行工具用于从 WSDL 创建代理类。例如,您可以输入:
WSDL http://someDomain.com/someFolder/HelloWorld.asmx?WSDL
来创建一个名为 HelloWorld.cs 的代理类。
此类与在前一节中创建的类非常相似。它将包含一个返回字符串的名为 SayHelloWorld 的方法。将此代理类编译到一个应用程序中,然后调用此代理类的方法,这样将生成一个代理类。生成的代理类将通过 HTTP 包装 SOAP 请求并接收以 SOAP 方式编码的响应(随后将该响应作为字符串封送)。
从客户端的角度来看,代码简单明了,如下例所示。
HelloWorld myHelloWorld = new HelloWorld();
String sReturn = myHelloWorld.SayHelloWorld();
The return would be "Hello World".
本节的余下部分将讨论更高级的 Web 服务主题,例如发送和接收复杂数据类型。还有一节将讲述文本模式匹配,这是一种针对任何 URI 的技术,它将文本作为 Web 服务返回。您还可以使用 Web 服务执行数据绑定操作,这个主题在"数据"一节中讨论。