基于 web service 架构,我们创建以下两个组件作为 web service 实现的一部分:
服务提供者或者发布者
它是 web service 的提供者。服务提供者实现了 web service 并使得它可以通过互联网或者内部网进行访问。接下来我们会使用 .NET SDK 来编写并发布一个简单的 web service。
服务请求者或者消费者
它是 web service 的消费者。请求者通过打开一个网络连接并发送一个 XML 请求来利用一个现成的 web service。接下来我们也将编写两个 web service 请求者:一个基于 web 的消费者(ASP.NET 应用),另一个是基于 Windows 应用的消费者。
接下来给出的是我们的第一个 web service 的例子,它将作为一个服务提供者公开两个方法(add 和 SayHello)来作为将被应用所使用的 web service。这是 web service 的一个标准模板。.NET web service 使用的是 .asmx 扩展名。注意一个方法要公开为一个 web service 的话要具备 WebMethod 属性。将本文件在 IIS 虚拟目录中保存为 FirstService.asmx。
FirstService.asmx
<%@ WebService language = "C" class = "FirstService" %>
using System;
using System.Web.Services;
using System.Xml.Serialization;
[WebService(Namespace="http://localhost/MyWebServices/")]
public class FirstService : WebService
{
[WebMethod]
public int Add(int a, int b)
{
return a + b;
}
[WebMethod]
public String SayHello()
{
return "Hello World";
}
}
要测试一个 web service,首先得先进行发布。一个 web service 既可以发布在内部网也可以发布在互联网。我们将会把这个 web service 发布在一台内网机器上运行的 IIS 上。我们先从配置 IIS 开始。
打开 → 设置 → 控制面板 → 管理工具 → 因特网服务管理器
展开并右击默认的 web 站点;选择 新建 → 虚拟目录。虚拟目录创建向导将被打开。点击下一步。
"虚拟目录别名"屏幕将被打开。输入虚拟目录名。比如,MyWebServices,点击下一步。
"网站内容目录" 屏幕将被打开。
输入虚拟目录的目录路径名。比如,c:\MyWebServices,点击下一步。
"访问权限" 屏幕将被打开。根据你的需求对设置进行更改。本示例中我们保持默认设置。
点击下一步按钮。它将完成 IIS 配置。
点击完成来结束配置。
注意:如果没有打开 x.html,试着将 localhost 替换为你机器的 IP 地址。如果仍然不行,检查 IIS 是否在运行;或者重新配置 IIS 以及虚拟目录。
然后验证 web service,将 FirstService.asmx 复制到上面创建的 IIS 虚拟目录中(C:\MyWebServices)。在 IE 中打开 web service(http://localhost/MyWebServices/FirstService.asmx)。能够打开你的 web service 页面就是正常。该页面应该能够链接到你公开为 web service 的两个方法。恭喜!你已经写好了你的第一个 web service!
测试 web service
如刚才所见,在 .NET 框架下编写 web service 还是很简单的。在 .NET 框架下编写 web service 消费者也很简单。如上所述,我们将编写两种类型的服务消费者,一个基于 web 的而另一个基于 Windows 应用。现在我们来写我们的第一个 web service 消费者。基于 web 的服务消费者
如下写一个基于 web 的消费者。将其命名为 WebApp.aspx。注意它是一个 ASP.NET 应用。将它保存着 web service 测虚拟目录(c:\MyWebServices\WebApp.axpx)。该应用有两个用于获取用户添加的输入框。它有一个 Execute 按钮,当被点击的时候将得到 Add 和 SayHello 两个 web service。
WebApp.axpx