MS .NET SDK 自带
http://localhost/quickstart/ASPPlus/
编写简单的 XML Web services
可以使用任何文本编辑器在几分钟内编写出一个简单的 XML Web services。您在本节中说明的服务 MathService 将公开将两个数相加、相减、相除和相乘的方法。在页面的顶部,下面的指令除了指定 XML Web services 的语言(此例中为 C#)外,还将文件标识为该服务。
<%@ WebService Language="C#" Class="MathService" %>
在此同一文件中,定义一个封装服务功能的类。该类应当是公共的,并且可以是从 XML Web services 基类继承的(如果愿意的话)。将从该服务公开的每种方法的前面都由 [WebMethod] 属性标记。没有该属性,方法将不从服务公开。这对于隐藏由公共 XML Web services 方法调用的实现细节,或者对于在本地应用程序中也使用 XML Web services 类的情形(本地应用程序可以使用任何公共类,但只有 WebMethod 类可以作为 XML Web services 进行远程访问)有时很有用。
using System;
using System.Web.Services;
public class MathService : WebService {
[WebMethod] public int Add(int a, int b) {
return a + b;
}
}
Imports System
Imports System.Web.Services
Public Class MathService : Inherits WebService
<WebMethod()> Public Function Add(a As Integer, b As Integer) As Integer
Return(a + b)
End Function
End Class
import System;
import System.Web.Services;
public class MathService extends WebService {
WebMethodAttribute public function Add(a:int, b:int) : int {
return a + b;
}
}
C# VB JScript
XML Web services 文件以 .asmx 文件扩展名保存。与 .aspx 文件一样,这些文件也在服务请求发出(后面的请求由缓存的预编译 type 对象服务)时由 ASP.NET 运行库自动编译。对于 MathService 的情况,已在 .asmx 文件本身中定义了 WebService 类。注意,如果浏览器请求 .asmx 文件,ASP.NET 运行库将返回描述 XML Web services 的 XML Web services 帮助页。
C# MathService.asmx
[运行示例] | [查看源代码]
C# MathService.asmx?wsdl
[查看示例]
预编译的 XML Web services
如果有一个要公开为 XML Web services 的预编译类(并且该类公开用 [WebMethod] 属性标记的方法),则仅用如下命令行即可创建 .asmx 文件。
<%@ WebService Class="MyWebApplication.MyWebService" %>
MyWebApplication.MyWebService 定义 XML Web services 类,并且包含在 ASP.NET 应用程序的 /bin 子目录中。
从客户端应用程序使用 XML Web services
若要使用该服务,需要使用 SDK 中包含的 Web 服务描述语言命令行工具 (WSDL.exe) 创建与 .asmx 文件中定义的类相似的代理类。(它将仅包含 WebMethod 方法。)然后使用包含的此代理类编译代码。
WSDL.exe 接受各种命令行选项,但若要创建代理,则只需一个选项:WSDL 的 URI。在此示例中,传递几个指定此代理的首选语言、命名空间和输出位置的额外选项。还对以前保存的 WSDL 文件进行编译,而不是编译服务本身的 URI:
wsdl.exe /l:CS /n:MathService /out:MathService.cs MathService.wsdl
一旦代理类存在,即可创建基于它的对象。用该对象进行的每个方法调用然后发送到 XML Web services 的 URI(通常以 SOAP 请求的形式)。
C# MathServiceClient.aspx
[运行示例] | [查看源代码]