资源预览内容
第1页 / 共23页
第2页 / 共23页
第3页 / 共23页
第4页 / 共23页
第5页 / 共23页
第6页 / 共23页
第7页 / 共23页
第8页 / 共23页
第9页 / 共23页
第10页 / 共23页
亲,该文档总共23页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第23章 Web Service开发,23.1 Web Service概述23.2 Web Service的应用场合23.3 Web Service和.NET Framework23.4 创建简单的ASP.NET Web Service23.5 测试Web Service23.6 小结,23.1 Web Service概述,Web Service是由企业发布的用于完成其特定商务需求的在线应用服务,其他公司或应用软件能够通过互联网来访问并使用该在线服务。 Web Service是一个应用组件,能够逻辑性地为其他应用程序提供数据与服务,各应用程序通过网络协议和规定的一些标准数据格式(Http、XML、Soap)来访问Web Service,通过Web Service内部执行得到所需结果。Web Service可为不同的应用程序提供一种连接其数据的途径,这样就可以在不同的应用程序与平台之间来交换数据。,23.1.1 Web Service特点,Web Service就是在计算机之间使用HTTP执行远程方法调用的一种新方法,即在远程服务器与客户端之间传送数据和信息的一种方法。Web Service使用 XML 来编/解码数据,并使用SOAP传输数据。用户能够通过Web Service调用已经实现某个功能的应用程序。Web Service有两种类型的应用,即重复使用现有的应用程序组件和连接现有的软件。,23.1.1 Web Service特点,针对以往技术存在的一些局限性,Web Service有了很大的改进,具体如下。平台互操作性:Web Service的客户不必使用某一特定的开发平台来实现该服务。特定的标准规范:Web Service使用了标准HTTP协议通信,以及在其基础上发展而来的SOAP(Simple Object Access Protocol,简易对象访问协议)标准,另外还有WSDL(Web Services Description Language,Web services 描述语言)、UDDI(Description Discovery and Integration,统一描述、发现和集成协议)和DISCO(Discovery of Web Services,Web Services的查找)规范。可伸缩性:可以使应用程序避免重写。松耦合:Web Service使用基于消息的协议通信使得它具有客户和服务独立发展的特性。B2B的集成:B2B指的是Business to Business,即企业与企业之间通过互联网进行产品、服务及信息的交换。通过Web Service,公司只需把关键的商务应用“暴露”给指定的供应商和客户,就可以让任何指定的合作伙伴调用这些商务逻辑,与他们的运行平台和开发语言无关。,23.1.2 Web Service的技术支持,SOAP :由于HTTP得到了所有的互联网浏览器及服务器的支持,因此通过HTTP在应用程序间通信是最好的解决方案,SOAP就负责完成该任务。SOAP是一种简单的基于XML的协议,是Web Service通信的核心规范。一条 SOAP消息就是一个普通的XML文档,包含下列元素。必需的Envelope元素:它是传递消息的根元素,可把此XML文档标识为一条SOAP消息。可选的Header元素:包含头部信息。若使用了该元素,则必须将它放在Envelope的第一个元素的位置上,用于传递一些辅助性的附加消息,如身份验证、会话等。必需的Body元素:顾名思义,即SOAP的主体,也就是消息体,包含所有的调用和响应信息。可选的Fault元素:描述发送消息产生异常时所报告的错误信息。,23.1.2 Web Service的技术支持,示例:SOAP消息的基本结构如下。 . 0001 . ,23.1.2 Web Service的技术支持,WSDL是一种基于XML的语言,用于描述Web Service以及对其所有方法和调用方式。DISCO(discovery的简称)是一种规范,用于创建可查询的XML文档,该文档可以找到WSDL文档。 UDDI(Universal Description Discovery and Integration,通用描述、发现与集成服务)是一种标准规范,定义了一种注册和发现Web Service信息的方式。UDDI正在迅速演化为一种标准,通过定义如何与完备的Web服务信息库进行交互来超越DISCO。,23.2 Web Service的应用场合,房屋租赁信息搜索应用程序订餐信息应用程序智能客户端应用程序注意,虽然Web Service能够为Web应用程序带来许多方便,但某些情况下Web Service并不适用,这些情况分别如下:单机应用程序:通常很多应用程序只需要与计算机上的其他应用程序通信即可,所以此种情况下Web Service并不适用,只需本地的API即可,使用远程的API会使系统消耗太大,并不会带来应用方面的优势。局域网应用程序:在很多此类应用中,所有应用程序都在Windows平台下使用DCOM,且运行在同一个局域网中。在此种情况下,DCOM要比SOAP/HTTP效率高得多。,23.3 Web Service和.NET Framework,.NETFramwork提供了3个命名空间:System.Web.Services命名空间:包含了用于创建Web Service的基本类,如WebService类。System.Web.Services.Description命名空间:其中包含的类可以用于查询WSDL文档,并可通过WSDL文档来描述Web Service。System. Web.Services.Protocols命名空间:其中包含的类可以用于创建SOAP请求及其响应。在.NET Framework中,Web服务可以应用于Windows Forms、Web Forms或控制台应用程序中。,23.3.1 创建Web Service,WebService类为Web Service定义的可选基类,该基类提供对公共ASP.NET对象的直接访问。WebService类中派生出的类可用于创建Web Service,例如下列代码:public class Service : System.Web.Services.WebService WebServiceAttribute类用于向Web Service 添加附加信息,例如描述其功能的字符串。,23.3.1 创建Web Service,示例:下列代码演示WebServiceAttribute类实例。 WebService(Description=获取时间,Namespace=http:/www.student.com/) public class Service: System.Web.Services.WebService WebMethod public string Time() return Context.Timestamp.TimeOfDay.ToString(); ,23.3.1 创建Web Service,WebMethodAttribute类 :Web Service中需使用WebMethod属性来标记所有可以使用的方法,若方法前没有用该属性标记的话则是无效的方法,不能被使用。示例:public class Service: System.Web.Services.WebService WebMethod(Description=获取时间) public string Time() return Context.Timestamp.TimeOfDay.ToString(); ,23.3.2 客户端程序,调用Web Service的计算机称为客户端。客户端的调用步骤如下。通过URL或UDDI注册寻找相应的Web Service,并请求描述该Web Service的WSDL文档,由此文档生成一个代理类。在客户端调用之前要先实例化一个该代理的对象,然后才可调用其发布的方法。客户端将方法名和参数等信息加入到SOAP中,通过HTTP传送到Web Service的服务器端。服务器端接收SOAP中的消息并解析,执行相应的方法,将执行结果加入到SOAP中,再经过HTTP传送回客户端。客户端代理接收SOAP消息并解析,将服务器端得到的结果返回给客户端。,23.3.2 客户端程序,在Visual Studio 2008中,添加代理类的过程可通过【Add Web Reference】命令完成。添加代理类之后,该类自动包含一些方法,这些方法与Web Service方法同名。客户端使用代理类的代码如下:Service myService=new Service();string result=myService.HelloWorld();,23.4 创建简单的ASP.NET Web Service,在Visual Studio 2008中创建Web Service的步骤非常简单,只需在菜单栏中单击【新建】|【项目】命令,在弹出的【新建项目】窗口中选择“ASP.NET Web服务】应用程序”即可。,23.4.1 生成文件,创建成功后,项目模板生成了Service1.asm和Service1.asmx.cs两个文件。Service1.asmx.cs文件是Service1.asmx生成的代码文件,因而两者具有相同的名称。Service1.asmx:保存Web Service类。所有ASP.NETWeb Service都使用.asmx扩展名来标识,其源代码包含在文件Service1.asmx.cs中。Service1.asmx.cs:项目模板在该文件中生成了一个派生自System.Web.Services.WebService的类Service1。,23.4.1 生成文件,Service1.asmx.cs中的示例代码:namespace PWebService / / Service1 的摘要说明 / WebService(Namespace = http:/tempuri.org/) public class Service1 : System.Web.Services.WebService WebMethod public string HelloWorld() return Hello World; ,23.4.2 添加Web方法,为刚创建的WebService添加一个简单的方法Add(),接收两个数字,并对其进行相加操作,执行完毕后将结果返回客户端。示例代码:namespace PWebService WebService(Namespace = http:/www.student.com ) public class Service1 : System.Web.Services.WebService WebMethod public int Add(int a, int b)/所添加的方法 int num; num = a + b; return num; ,
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号