Web服务和WCF服务.ppt
1,第13章 Web服务和WCF服务,2,本章要点:,了解Web服务掌握建立ASP.NET Web服务和WCF服务的方法掌握使用ASP.NET Web服务和WCF服务的方法,3,目录,13.1 什么是Web服务13.2 建立ASP.NET Web服务13.3 调用ASP.NET Web服务13.3.1 调用简单的ASP.NET Web服务13.3.2 Web服务方法重载13.3.3 Web服务的传输协议13.4 WCF服务13.4.1 建立WCF服务13.4.2 使用WCF服务13.5 小结,4,13.1 什么是Web服务,在实际应用中,特别是大型企业,数据常来源于不同的平台和系统。Web服务为这种情况下数据集成提供了一种便捷的方式。通过访问和使用远程Web服务可以访问不同系统中的数据。在使用时,通过Web服务Web应用程序不仅可以共享数据,还可以调用其他应用程序生成的数据,而不用考虑其他应用程序是如何生成这些数据的。注意:返回数据而不是返回页面是Web服务的重要特点。,5,13.1 什么是Web服务(续),除数据重用外,使用Web服务还能实现软件重用。Web服务需要一系列的协议来实现。HTTP协议 SMTP、FTP简单对象访问协议SOAP Web服务的运作还需要Web服务描述语言WSDL和统一描述发现集成协议UDDI的支持。,6,13.2 建立ASP.NET Web服务,建立Web服务实质就是在支持SOAP通信的类中建立一个或多个方法。两种模板ASP.NET Web服务网站模板:用于创建独立的网站,在创建时会自动在网站根文件夹下建立一个Web服务文件Service.asmx,同时在App_Code文件夹下建立相应的类文件Service.cs。Web服务模板:要建立Web服务文件,也不必专门创建一个网站,可以利用Web服务模板在已有的ASP.NET网站中添加Web服务文件。注意:ASP.NET Web服务文件的扩展名为.asmx。,7,实例13-1 建立ASP.NET Web服务,本实例将建立一个ASP.NET Web服务网站,在建网站时Visual Studio 2008自动建立了Service.asmx和Service.cs。源程序:自动建立的Service.asmx,8,程序说明,与.aspx文件相比,Service.asmx文件中使用WebService指令代替了Page指令。在Service.cs中,WebService(Namespace=http:/tempuri.org/)表示本服务的命名空间。W3C规定每一个Web服务都需要一个自己的命名空间来区别其他的Web服务,因此当正式发布Web服务时,需要将它改为开发者自己的命名空间,如公司网站的域名。,9,程序说明(续),WebServiceBinding(ConformsTo=WsiProfiles.BasicProfile1_1)表示本Web服务的规范为“WS-I基本规范1.1版”。这种规范用于实现跨平台Web服务的互操作性。创建Web服务实质就是创建的一个子类,在创建类方法前必须加入WebMethod。如果不用WebMethod进行声明,则定义的方法只能在本服务内部调用。,10,13.3 调用ASP.NET Web服务,应用范围:Web服务可以在Web应用程序中使用。可以在Windows窗体中使用。可以在移动应用程序中使用。可以在数据库中使用。注意:若要允许使用ASP.NET AJAX从脚本库中调用Web服务,则需要导入命名空间。,11,13.3.1 调用简单的ASP.NET Web服务,要使用ASP.NET Web服务只需将服务以Web引用的方式添加到项目中,然后通过创建Web服务的实例来使用服务。,12,实例13-2 调用ASP.NET Web服务,添加Web引用。建立Web窗体文件并调用Service。源程序:AspConsumer.aspx程序说明:当单击“测试HelloWorld”按钮时,首先建立Service的实例serTest,再调用HelloWorld()方法返回结果并显示在lblShow上。,13,13.3.2 Web服务方法重载,通过方法的签名来实现方法的重载。对WebMethod使用属性MessageName来设置方法的签名。WebMethod(MessageName=HelloWorld)WebMethod(MessageName=HelloWorldbyName)禁止Web服务遵循WS-I基本规范1.1版。WebServiceBinding(ConformsTo=WsiProfiles.None),14,13.3.2 Web服务方法重载(续),15,实例13-3 Web服务方法重载,本实例将建立一个实现HelloWorld()方法重载的ASP.NET Web服务。源程序:OverloadService.asmx,16,13.3.3 Web服务的传输协议,Web服务数据传输的格式可以使用HTTP-GET、HTTP-POST或SOAP。当使用不同的传输协议时,调用Web服务的格式不同。HTTP-GET允许发送请求和参数。ASP.NET 1.0默认允许使用HTTP-GET,而ASP.NET 1.1以后的版本HTTP-GET请求在默认情况下是禁止的,可以通过修改web.config文件启用。,17,13.3.3 Web服务的传输协议(续),18,13.3.3 Web服务的传输协议(续),测试Web服务http:/localhost:1035/AspService/OverloadService.asmx/HelloWorldbyName?userName=Mike,19,13.3.3 Web服务的传输协议(续),HTTP-POST协议的参数以表单形式提交。测试Web服务浏览OverloadService.asmx,选择第二个HelloWorld,打开HelloWorldbyName测试页。填入值“John”,单击“调用”按钮。,20,13.4 WCF服务,WCF(Windows Communication Foundation)服务是面向服务(Service Oriented)的应用程序新框架。提出WCF的目的是为分布式计算提供可管理的方法,提供广泛的互操作性,并为服务定位提供直接的支持。,21,13.4 WCF服务(续),WCF包含一个POX(Plain Old XML)的通用对象模型,以及可以利用多种协议进行传输的SOAP消息。WCF也可以深入支持WS-I定义的Web服务标准,因此它可以毫不费力地与其他Web服务平台进行互操作。,22,13.4 WCF服务(续),.NET Framework 3.5中的WCF构建于.NET Framework 3.0的基础之上,将以Web为中心的通信、SOAP和WS-I标准组合到了一个服务堆栈和对象模型中。WCF采用SOAP和WS-I标准在企业内部或跨企业之间进行通信,同时还可以将同一服务配置为使用Web协议与外部通信。,23,13.4 WCF服务(续),WCF处理了服务中的烦琐细节工作,开发人员可以更加专注于服务所提供的功能。WCF应用程序运行环境:支持WCF的消息队列MSMQ功能的操作系统。包含:Windows Vista、Windows Server 2003 R2、Windows Server 2003 SP1和Windows XP Professional。WCF的大部分功能都包含在一个单独的程序集中,命名空间为System.ServiceModel。,24,13.4.1 建立WCF服务,WCF服务要建立服务接口文件和服务逻辑处理文件。WCF服务网站模板:用于创建独立的网站,在创建时会自动在网站根文件夹下建立一个WCF服务文件Service.svc,同时在App_Code文件夹下建立相应的类文件IService.cs和Service.cs。其中Service.svc用于定义WCF服务;IService.cs用于接口的定义;Service.cs类实现服务逻辑处理。,25,13.4.1 建立WCF服务(续),WCF服务模板:在已有的ASP.NET网站中添加WCF服务文件。,26,实例13-4 建立WCF服务,本实例通过建立两个整数加减运算的WCF服务。建立服务框架源程序:Cal.svc 建立接口文件 源程序:ICal.cs 实现接口 源程序:Cal.cs,27,13.4.2 使用WCF服务,使用WCF服务需要向项目中添加服务引用,而不是添加Web引用。,28,实例13-5 使用WCF服务,添加服务引用将已添加到项目中的WCF服务应用到Web窗体页中 源程序:WcfConsumerCal.aspx,29,程序说明,要使用WCF服务Cal,首先应建立一个CalClient类对象,然后就可以使用WCF服务Cal中定义的方法。本例建立了CalClient类对象的实例ws。当单击“加”按钮时,调用ws的Add()方法返回计算结果并在lblResult中显示加法运算式,如图13-20所示。,30,程序说明(续),当单击“减”按钮时,则调用ws的Subtract()方法返回计算结果并在lblResult中显示减法运算式。使用WCF服务后要调用Close()方法关闭,如果在关闭后要继续使用,可以调用Open()方法打开。,31,13.5 小结,使用Web服务能实现数据重用和软件重用,这为建立松散耦合型的分布式系统提供了方便。实现Web服务需要HTTP、SMTP、SOAP、WSDL和UDDI等协议的支持。而SOAP、WSDL和UDDI等协议都是基于XML进行描述的。,32,13.5 小结(续),使用ASP.NET Web服务需要首先添加Web引用,再应用到Web窗体中。在调用ASP.NET Web服务时可以使用HTTP-GET、HTTP-POST和SOAP等协议。建立WCF服务需要建立服务定义文件、服务接口文件和服务逻辑处理文件。在使用WCF服务时,需要首先添加服务引用,再应用到Web窗体中。,