600){this.height=this.height*600/this.width;this.width=600;}" border=0>
图1
按下“确定”按钮后,vs.net就开始帮你新建该项目,期间还可能会出现一个用来显示internet连接的对话框。在新建完项目后,在开发工具中会出现如下所示的界面:
600){this.height=this.height*600/this.width;this.width=600;}" border=0>
图2
因为我们要实现的是一个非常简单的web服务,所以我们需要的功能和我们的代码量都很小,于是就不必去考虑上图中的“服务器资源管理器”和“工具箱”两个超链接,而可以直接点击上图中的“此处”链接进行代码编辑,点击后会打开代码编辑框,图示如下:
600){this.height=this.height*600/this.width;this.width=600;}" border=0>
图3
在上面的代码编辑框中,我们先把原有的“hello world”web服务的示例代码去掉,替换成我们的代码,最终如下:
using system; using system.collections; using system.componentmodel; using system.data; using system.diagnostics; using system.web; using system.web.services; namespace webservice1 { /// /// service1 的摘要说明。 /// public class service1 : system.web.services.webservice { public service1() { //codegen:该调用是 asp.net web 服务设计器所必需的 initializecomponent(); } #region component designer generated code //web 服务设计器所必需的 private icontainer components = null; /// /// 设计器支持所需的方法 - 不要使用代码编辑器修改 /// 此方法的内容。 /// private void initializecomponent() { } /// /// 清理所有正在使用的资源。 /// protected override void dispose( bool disposing ) { if(disposing && components != null) { components.dispose(); } base.dispose(disposing); } #endregion // web 服务 // dollarconverttormb() 服务完成美元到人民币的转换 // 若要测试此 web 服务,请按 f5 键 [webmethod] public double dollarconverttormb(double dollar) { return ( dollar * 8.15); } } } |
在上面的方法dollarconverttormb()中,我们返回的是一个double类型的值――dollar*8.15,其中的8.15我想是不言而喻的(就是美元到人民币的汇率)。不过现实的汇率是不固定的,而且每天都要变动,所以要根据当天实际的汇率来计算,那么我们就要连接到数据库获得最新的信息了。不过,这里作为一个简单实例,我们当然不需要搞得那么复杂,所以在这里我就姑且假定汇率为1:8.15。
同时,我们还需要注意,在该web服务的代码中我们用到了using system.web、using system.web.services等名字空间,作为web服务开发,这些名字空间是显然不能缺的,没有了这些,我们就不能调用.net框架为我们提供的开发web服务所必须的方法和函数等,所以一定不能忘掉。
到此为止,代码编写已经完毕,然后把代码文件存放在某个虚拟目录下(通常是c:/inetpub/wwwroot/webservice1)即可。把文件保存为service1.asmx。asmx文件扩展名是.net web服务的标记。保存文件之后,你的web服务就准备露脸了。
五.测试web服务:
现在准备好测试web服务。期间你不必通过显式的编译全过程,只需要地在目录下保存文件然后调用它即可。为了调用最新创建的服务,请打开你的浏览器并输入服务路径,包括asmx文件的名字。如果你把服务放了在c:/inetpub/wwwroot/webservice1目录下,那么你要在浏览器地址栏上键入http://localhost/webservice1/service1.asmx。(当然,在你使用vs.net开发时,你也可以通过ctrl+f5直接进行web服务的测试。)
在调用服务时会显示一幅包含大量信息的网页。一开始这可能会令你觉得有点糊涂:不管怎么说,你还没有为这种服务创造过html网页。其实,你根本不必创建测试网页,因为.net框架已经帮你这个忙了。当你直接通过浏览器调用web服务时,框架就会为你产生一个网页并通过它向你显示web服务的信息,同时列出所有可用的方法。下图即是web服务的网页。
600){this.height=this.height*600/this.width;this.width=600;}" border=0>
图4
在这个例子中列出的方法没什么特别之处,因为仅有一个方法(dollarconverttormb)。鼠标点击这个方法会显示另一个网页,如图5所示。这一页就是该特定方法的测试页,其中包括对应方法接受的每个参数的文本框。现在请在文本框中输入“10”并按下“调用”按钮。
600){this.height=this.height*600/this.width;this.width=600;}" border=0>
图5
单击“调用”按钮会打开一个新的浏览器窗口,其中显示了一些xml代码。这些xml代码是由该web服务返回的,其中包括了服务的结果。返回的xml代码如下图所示:
600){this.height=this.height*600/this.width;this.width=600;}" border=0>
图6
返回的结果是一些xml代码,可能用户界面显得不那么友好,但是这些结果确实不一定非要采取对用户友好的格式,因为你通常不会从浏览器直接调用web服务。相反,你往往从应用程序调用web服务同时适当地处理返回的xml代码。不过,也很容易从上面的代码看出web服务已经把10美元转换成了81.5人民币了。
六.总结:
上面举的这个例子很简单,它完成的任务是:创建一个组件,如果组件放在web服务器上就可以被世界上任何地方的任何人访问。客户不必装载com 或dcom;甚至也不必拥有windows客户程序。任何能创建http连接的客户程序都能调用web服务并且收到结果。这种功能开辟了创建分布式应用程序、实现平台之间互操作的全新领域。同时,我们也不难发现用vs.net开发web服务是一件相当容易的事。有兴趣的读者可以试着开发出功能更强大的web服务并将它赋予实际应用之中。
新闻热点
疑难解答