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
服务执行数据绑定操作,这个主题在
"
数据
"
一节中讨论。