C#建立Web Service
1.在wwwroot目录下建立一个叫做Webservice的目录。
2.建立下面这样一个文件:
using System; using System.Web.Services; public class AddNumbers : WebService { [WebMethod] public int Add(int a, int b) { int sum; sum = a + b; return sum; } }
3.将这个文件保存为AddService.asmx(asmx是扩展名),保存到Webservice的目录中
4.现在我们建立了Web服务,已经准备好客户端使用
5.现在,你可以用下面的URL访问这个Web服务:
地址/Webservice/Addservice.asmx/Add?a=10&b=5结果将以XML格式返回
在客户机上部署这个服务
1.在命令行输入:
WSDL地址/WebService/MathService.asmx /n:NameSp /out:FileName.cs这个操作将建立一个称为FileName.cs的文件
说明:WSDL 指的是WebServices Description Language ,这个程序在Program Files\Microsoft.NET\FrameworkSDK\Bin 目录中。
NameSp是我们设置的名字空间的名字,将在后面部署这个服务的客户端的实现代码中使用到。
2.编译
CSC /t:library /r:system.web.dll /r:system.xml.dll FileName.cs
上述命令将生成一个dll文件,名字就是上面的asmx文件中的公共类的名字,在我们的例子中,就是:AddNumbers.dll
3.将生成的dll文件放到部署机的wwwroot\bin目录中。
在部署机的asp/aspx 中调用这个Web Service
<%@ import Namespace = "NameSp" %> <script language = "c#" runat = "server"> public void Page_Load(object o, EventArgs e) { int x = 10; int y = 5; int sum; //Instantiating the public class of the webservice AddNumbers AN = new AddNumbers(); sum = AN.Add(x,y); string str = sum.ToString(); response.writeline(str); } </script>
以上介绍C#建立Web Service。
创建发现文件
在访问一个已有的Web Service以前,你必须先得找到并整合这个Web Service,这个过程就是Web Service的发现过程。通过这个发现过程,你才知道这个Web Service能为你提供什么样的服务以及你怎么和它实现互动。发现文件是一个以.DISCO为扩展名的XML文件。在实际运用中,你是不必为每一个Web Service创建发现文件的。以下就是一个发现文件的例子:
<?xml version="1.0" ?> <disco:discovery xmlns:disco="http://schemas.xmlsoap.org/disco/"> <scl:contractRef ref="http://localhost/work/aspx/SampleService.asmx?SDL"/> </disco:discovery>
我们先将这个文件命名为“SampleService.disco”,并将它保存在该Web Service的目录下。如果我们是在“/work/aspx”目录下创建Web Service的话,我们就可以运用更灵活的“动态发现”了。“动态发现”能自动为我们检测“/work/aspx”目录以及子目录下的所有*.DISCO文件的,这样就省了我们不少功夫。
<?xml version="1.0" ?> <dynamicDiscovery xmlns="urn:schemas-dynamicdiscovery:disco.2000-03-17"> </dynamicDiscovery>
你可以在http://services3.xmethods.net/dotnet/default.disco获得一份能使用的发现文件。通过分析发现文件,我们可以找到所需的Web Service。然而,在得到发现文件前你必须知道这个发现文件的确切的URL。否则你还是找不到你要的发现文件的,那么你当然就不能找到你要的Web Service了。这样,我们现在就要用到一项新技术了――通用发现,描述和整合(Universal Description,Discovery,and Integration,UDDI)来为已存在的Web Service做宣传了。UDDI是公开的,基于Internet的。这项技术目前还处于起初阶段,所以正不断发展着。你可以在http://uddi.microsoft.com/ 获得有关UDDI的参考。
发布这个Web Service
发布Web Service是很简单的。和Asp.net的程序差不多,你只要将.asmx文件和.disco文件拷贝到相应的目录,这样如果一切正常,这个Web Service就可以工作了。