当前位置: 首页 > 科技观察

C#调用WebService实例及开发

时间:2023-03-11 23:33:58 科技观察

一、基本概念WebService又称为XMLWebServiceWebService是一种轻量级的、独立的通信技术,可以接收Internet或Intranet上其他系统的请求。是:通过SOAP在Web上提供、使用WSDL文件描述并通过UDDI注册的软件服务。简单的理解就是:webservice是放在服务器上的一个函数,大家可以调用它,然后返回信息。比如google有一个web服务,调用它就可以很方便的创建一个搜索网站。就像调用一个函数一样,传入几个参数(如关键字、字符编码等),然后返回谷歌检索到的内容(返回一个字符串)。其中,Soap:(SimpleObjectAccessProtocol)简单对象访问协议。它是XMLWebService的通信协议。用户通过UDDI找到你的WSDL描述文档后,就可以调用你通过SOAP创建的Web服务中的一个或多个操作。SOAP是一种以XML文档形式调用方法的规范,它可以支持不同的底层接口,如HTTP(S)或SMTP。WSDL:(Web服务描述语言)WSDL文件是描述一组SOAP消息以及如何交换它们的XML文档。大多数情况下由软件自动生成和使用。UDDI(UniversalDescription,Discovery,andIntegration)是一个主要针对Web服务提供商和用户的新项目。用户在调用Web服务之前,必须确定服务中包含了哪些业务方法,找到要调用的接口定义,并在服务器端编译软件。UDDI是一种引导系统根据描述文档找到相应服务的机制。UDDI使用SOAP消息机制(标准的XML/HTTP)来发布、编辑、浏览和查找注册信息。它采用XML格式封装各种类型的数据,发送给注册中心或由注册中心返回需要的数据。二、优缺点WebService的主要目标是跨平台的互操作性。为了实现这个目标,WebService完全基于XML(ExtensibleMarkupLanguage)、XSD(XMLSchema)等平台无关、软件供应商无关的标准。它是一个用于创建可互操作和分布式应用程序的新平台。.因此,使用WebService有很多优点:1.跨防火墙通信如果应用程序有成千上万的用户并且分布在世界各地,那么客户端和服务器之间的通信将是一个难题。因为客户端和服务器之间通常有防火墙或者代理服务器。传统的做法是选择使用浏览器作为客户端,编写大量的ASP页面,将应用程序的中间层暴露给最终用户。这样做的结果是开发困难,程序难以维护。如果客户端代码不再如此依赖HTML表单,客户端编程将会简单得多。如果将中间层组件替换为WebService,则可以直接从用户界面调用中间层组件,从而省去创建ASP页面的步骤。要调用WebService,可以直接使用MicrosoftSOAPToolkit或.net等SOAP客户端,也可以使用自己开发的SOAP客户端,然后与应用程序连接。不仅缩短了开发周期,还降低了代码复杂度,增强了应用程序的可维护性。同时,应用程序不再需要在每次调用中间层组件时都跳转到相应的“结果页面”。2.应用程序集成企业级应用程序开发人员都知道,企业往往要集成各种用不同语言编写、运行在不同平台上的程序,而这种集成会耗费大量的开发精力。应用程序经常需要从主机上运行的程序中获取数据;或向主机或其他平台应用程序发送数据。即使在同一个平台上,不同软件供应商生产的各种软件也常常需要集成。通过Web服务,应用程序可以使用标准方法“公开”功能和数据以供其他应用程序使用。XMLWeb服务提供了在松耦合环境中使用标准协议(HTTP、XML、SOAP和WSDL)交换消息的能力。消息可以是结构化的、类型化的或松散定义的。3、B2B整合B2B是指BusinesstoBusiness,如在商家与其他商家做生意时,商家(泛指商家)对商家的电子商务,即商家之间通过互联网交换产品、服务和信息。通俗地说,就是电子商务交易的供需双方都是商家(或企业、公司),他们利用互联网技术或各种商务网络平台来完成商务交易的过程。WebService是B2B集成成功的关键。通过WebService,公司可以简单地将关键业务应用程序“公开”给指定的供应商和客户。WebService运行在Internet上,在世界任何地方都可以很容易地实现,而且其运行成本相对较低。低的。WebService只是B2B集成的关键部分,要实现集成还需要其他很多部分。使用WebService实现B2B集成的最大优点是可以轻松实现互操作性。只要将业务逻辑“暴露”出来,成为WebService,任何指定的合作伙伴都可以调用这些业务逻辑,而不管他们的系统运行在什么平台上,使用什么开发语言。这显着减少了在B2B集成上花费的时间和成本。4、软件和数据重用WebService在允许代码重用的同时,可以重用代码背后的数据。使用WebService,不再需要像以前那样从第三方购买和安装软件组件,然后从应用程序中调用这些组件;只需直接调用远程WebService即可。软件复用的另一种情况是将几个应用程序的功能集成在一起,通过WebService“暴露”出来。将所有这些功能集成到您的门户网站并为用户提供统一、友好的界面是非常容易的。您可以在应用程序中使用第三方WebService提供的功能,也可以通过WebService向他人提供您自己的应用程序功能。在这两种情况下,代码和代码背后的数据都可以重用。从上面的讨论可以看出,WebService在通过Web进行互操作或远程调用时最有用。但是,也有一些情况是WebService根本无法带来任何好处的。WebService有以下缺点:1.单机应用目前,企业和个人仍然使用很多桌面应用。其中一些只需要与本机上的其他程序通信。这种情况下,最好不要使用WebService,直接使用本地API。COM非常适合在这种情况下工作,因为它小而快。在同一台服务器上运行的服务器软件也是如此。当然,这些场合也可以使用WebService,但那样不仅消耗太大,而且不会带来任何好处。2、局域网的一些应用在很多应用中,所有的程序都使用Windows平台下的COM,运行在同一个局域网中。在这些程序中,使用DCOM将比SOAP/HTTP高效得多。同样,如果一个.net程序要连接到局域网中的另一个.net程序,就应该使用.netRemoting。其实在.netRemoting中,你也可以指定使用SOAP/HTTP来进行WebService调用。但是最好直接通过TCP进行RPC调用,效率会高很多。三。主要应用1.原始的XMLWebService通常是一种信息源,可以很容易地合并到应用程序中,例如股票价格、天气预报、体育比分等等。2.通过将现有应用程序作为XMLWeb服务提供,可以构建新的、更强大的应用程序并将XMLWeb服务用作构建块。例如,用户可以开发一个采购应用程序,自动获取不同供应商的价格信息,允许用户选择供应商,提交订单,然后跟踪货物的运送情况,直到收到货物。供应商的应用程序除了在Web上提供服务外,还可以使用XMLWebService来查询客户的信用、收取货款以及与船公司办理装运手续。#p#以上内容大部分是借用的。下面的例子开发是通过理解实现的。如果两个例子出现在一个项目中,我们会综合记录下来,以备日后需要的时候使用。首先我们来看一下项目的目录结构。对于初学者来说,在vs2012环境下,你可能不知道WebReferences文件夹是怎么来的。方法是右键单击项目并选择“添加服务引用”。如图:之后就得到了“添加服务引用”的页面,我也对图片进行了截图,如图:然后选择“高级”按钮,进入下图。打开WebServices(http://www.webxml.com.cn/WebServices/WeatherWebService.asmx)实现天气预报。这样就可以通过代码获取到用户输入的城市的天气。实现效果图如下:点击按钮,系统会输出用户填写的城市的天气信息。后台代码如下:.TextBox4.Text);this.TextBox3.Text="";if(r==null){this.TextBox3.Text="None"+this.TextBox4.Text+"城市天气信息";return;}foreach(stringiinr){this.TextBox3.Text+=i;}}这样调用已有的天气接口,就可以实现城市天气查询。接下来说说如何自己创建一个webservice,并用它来实现一些功能。首先,我们选择一个项目,右键新建“Web服务”,如下图:创建完成后,会在项目文件中。出现“Service.asmx”文件,我们在Service.asmx.cx中添加一个简单的求和方法,代码如下:namespaceWeb_Service{///

///WebService1的概要描述///[WebService(Namespace="http://tempuri.org/")][WebServiceBinding(ConformsTo=WsiProfiles.BasicProfile1_1)][System.ComponentModel.ToolboxItem(false)]//允许使用ASP.NETAJAXweb从脚本中调用它服务,取消注释以下行。//[System.Web.Script.Services.ScriptService]publicclassWebService1:System.Web.Services.WebService{[WebMethod]?publicstringHelloWorld(){return"HelloWorld";}[WebMethod]publicintGetSum(inta,intb){returna+b;}}}那么,我们如何在其他项目中调用这个方法呢?其实这个和我们刚才说的一样,调用天气的webservice。首先,将“web服务引用”添加到您编写的web服务引用中,需要注意的是,其中有一项要求我们填写请求webservice的URL地址,应该怎么写呢?其实也很简单,就是你在浏览器中浏览Service.asms的地址,比如我的是:http://localhost:12197/Service.asmx。引用完成后,我们通过代码实现。首先来看一下运行后的效果图:最后贴上代码:this.Label1.Text=aa.GetSum(Convert.ToInt32(this.TextBox1.Text),Convert.ToInt32(this.TextBox2.Text)).ToString();}