无论那种客户端类型,调用WebServices的步骤都是十分类似的:
1、 获得WebServices的代理类;
2、 在客户端的代码中引用代理类;
3、 在客户端的代码中创建代理类的实例;
4、 通过调用代理类实例的方法来调用相应的WebServices服务接口方法。
一、获得代理类
获得代理类的方法有两种:
1、 通过在Visual Stadio .NET2003中引用已有的WebService;
2、 通过.NET Framerwork SDK提供的wsdl.exe生成代理类。
方法一:
在VS2003中,可以使用Web引用的功能来创建代理类。
启动一个项目,在解决方案资源管理器里用右键选择Web引用。接下来输入WSDL文档的位置,或者输入一个Web URL,这个URL能够识别或发现链接到XML WebServices的页面或文档,在使用适当的链接来进行浏览。
方法二:
.NET Framework SDK中提供了一个命令行工具wsdl.exe,来获取WebServices的WSDL语言描述、XSD Schema或disco镜像文件生成该WebServics的代理类源代码。
在c:/programe files/microsoft.net/frameworkSDK/bin/或者(C:/Program Files/Microsoft Visual Studio .NET 2003/SDK/v1.1/Bin)下面可以找到这个工具。
具体语法:
Wsdl /language:language /protocol:protocol /namespace:namespace /out:filename / username:username /password:password /domain:domain(url or path)
参数说明:
Language: 是指代理使用的语言。因为不会直接修改代理类代码,所以使用什么语言并不重要(在重新生成这个类以后,所有的修改都会丢失)。默认的与语言为C#
Protocol: 通常会忽略这个选项而使用默认选项(SOAP)。但是也可以为较多限制的协议指定HTTP GET或HTTP POST
Namespace: 代理类使用的.Net命名空间。如果忽略这个参数,就没有命名空间了,而且该文件中的所有类将供全局使用。为了更好的组织结构,应该选用逻辑命名空间。Visual Studio.Net自动使用服务器名(例如:localhost)作为命名空间。
Out: 这使您能够指定所生成的文件名字。但这个名字被默认为服务名加上表示语言的扩展名。
Username/Password/Domain: 如果想通过WebServices访问虚拟目录,应该确定这些验证字段所需要的值。
Url或路径:这个字段总是加在WSDL.exe命令行的最后,它向Web服务器说明了WSDL文档的位置
使用举例:
Wsdl http://localhost/smsSend/WS_smsSender.asmx?WSDL
执行后,会生成一个WS_smsSender.cs代理类文件,然后可以把这个文件加入一个客户端项目或者使用vbc.exe命令行编译器把它编译成为一个DLL
例:vbc /t: library WS_smsSender.cs
二、使用代理类
创建任何一个客户端的程序都包括以下步骤:
1) 创建一个代理类的实例;
WS_smsSender.Service1 CallWS_smsSend = new smsSender.WS_smsSender.Service1();
2) 调用代理对象上的方法;
CallWS_smsSend.smsSend(labPhone_no.Text,labsmsContent.Text,labOtherInfo.Text);
3) 获取从Web服务返回的XML格式的数据;
4) 编写客户端代码显示结果。
三、术语表
1、 WSDL:Web Services Description Language的缩写,是一个用来描述Web服务和说明如何与Web服务通信的XML语言。
怎样向别人介绍你的Web service有什么功能,以及每个函数调用时的参数呢?你可能会自己写一套文档,你甚至可能会口头上告诉需要使用你的Web service的人。这些非正式的方法至少都有一个严重的问题:当程序员坐到电脑前,想要使用你的Web service的时候,他们的工具(如Visual Studio)无法给他们提供任何帮助,因为这些工具根本就不了解你的Web Service。解决方法是:用机器能阅读的方式提供一个正式的描述文档。Web service描述语言(WSDL)就是这样一个基于XML的语言,用于描述Web service及其函数、参数和返回值。因为是基于XML的,所以WSDL既是机器可阅读的,又是人可阅读的,这将是一个很大的好处。一些最新的开发工具 既能根据你的Web service生成WSDL文档,又能导入WSDL文档,生成调用相应Web service的代码。
2、 UDDI:统一描述、发现和集成协议 (UDDI) 始于2000年,由 Ariba, IBM, Microsoft 和其他33家公司创立.UDDI registries提供了一个机制,以一种有效的方式来浏览,发现Web Services 以及它们之间的相互作用.
如果你是编写商业软件,你应该开始考虑到UDDI的杠杆作用,它可以使你的用户能轻松发布他们的网络服务, 易于找到他们所需的Web services.如果你在一个大型企业内工作,有着多个分公司且都忙于建立Web services, 你应该考虑使用因特网,就像 UDDI, 在企业内部可以实现Web services 注册. 不管是商业或者网络用途,你可以通过发送和接收SOAP信息直接来编写UDDI API.
UDDI是作为应用web services的前端协议
主要作用是用来搜索INTERNET上可用的WEB SERVICE以及相关SERVICES的具体信息用的协议
如果要详细了解可以参考具体的web services服务的编写和应用
里面会讲到如UDDI以及SOAP等等协议的具体用途