第4章Web服务(下).ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《第4章Web服务(下).ppt》由会员分享,可在线阅读,更多相关《第4章Web服务(下).ppt(25页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第四章第四章 Web服务服务(下)(下)课程目标课程目标q SOAP技术技术q 同步及异步调用同步及异步调用Web Servicesq 事务管理事务管理q Web Services的安全性的安全性 SOAP技术技术 简单对象访问协议(简单对象访问协议(SOAP)SOAP提供了一种操作系统下运行的程序,与在同一种或另一种操作系提供了一种操作系统下运行的程序,与在同一种或另一种操作系统下运行的程序进行通信的方法。它们利用统下运行的程序进行通信的方法。它们利用HTTP和和XML语言作为信息语言作为信息交换的机制。交换的机制。SOAP是是Web服务交换消息的标准协议。服务交换消息的标准协议。SOAP利
2、用利用XML来封装信息。对来封装信息。对于于Web服务来说,服务来说,SOAP通过通过XML格式的信息传递参数,进行格式的信息传递参数,进行Web调用。调用。SOAP的优点是程序调用更有可能通过防火墙服务器得到,该服务器(通的优点是程序调用更有可能通过防火墙服务器得到,该服务器(通过指定的端口机制)可以滤掉对已知应用程序调用以外的请求。由于过指定的端口机制)可以滤掉对已知应用程序调用以外的请求。由于HTTP请求一般是通过防火墙实现的,所以利用请求一般是通过防火墙实现的,所以利用SOAP进行通信的程序能进行通信的程序能得到保证,它们能与任何地方的程序进行通信。得到保证,它们能与任何地方的程序进行
3、通信。SOAP 的结构的结构 无论是传递数据还是执行远程方法调用,无论是传递数据还是执行远程方法调用,SOAP 必须有一个统一的格式。必须有一个统一的格式。SOAP首先必须具有首先必须具有XML 格式,并且由格式,并且由Schema大纲定义其所包含的标记。大纲定义其所包含的标记。总体上看,总体上看,SOAP 消息主要包括以下消息主要包括以下3个主要元素:个主要元素:SOAP:它是整个:它是整个SOAP 消息的根元素,也是每个消息的根元素,也是每个SOAP 消息中必须有的元素,其它元素都在这个元素内部。消息中必须有的元素,其它元素都在这个元素内部。SOAP:元素是元素是 SOAP消息中的可选元素
4、,但如消息中的可选元素,但如果有,必须是果有,必须是的第一个直接子元素。的第一个直接子元素。元素中可元素中可以包括多个头条目子元素。以包括多个头条目子元素。SOAP:这是每个:这是每个SOAP消息中都必须有的元素,而且是消息中都必须有的元素,而且是元素的直接子元素。如果元素的直接子元素。如果Envelope消息中没有消息中没有元素,那这个元素必须是元素,那这个元素必须是元素的第一个子元素,否则它必元素的第一个子元素,否则它必须紧接着须紧接着元素。元素。SOAP消息的一般格式消息的一般格式 Admin MyPassword 通过通过IE5 以上版本的浏览器打开该文件,以上版本的浏览器打开该文件,
5、SOAP 是一个标准的是一个标准的XML 文件,文件,显示成显示成XML 默认的树状结构,如下图所示:默认的树状结构,如下图所示:定义和处理定义和处理SOAP 头条目头条目 定义定义SOAP头条目:头条目:创建一个继承创建一个继承SoapHeader的类,作为头条目内容的元素应该声明为公开的类,作为头条目内容的元素应该声明为公开的成员方法。如下:的成员方法。如下:public class AuthHeaderCS:SoapHeader public string Username;public string Password;定义定义SOAP头条目类,可以在头条目类,可以在Web服务中使用。使
6、用服务中使用。使用SOAP头条目分为如下三头条目分为如下三步:步:在在Web服务类中声明一个代表服务类中声明一个代表SOAP头条目类的变量。头条目类的变量。在每个在每个Web服务方法上应用服务方法上应用SoapHeader特性特性。在每个应用了在每个应用了SoapHeader特性的特性的Web服务方法中定义访问变量中成服务方法中定义访问变量中成员员。using System;using System.Web.Services;using System.Web.Services.Protocols;namespace SoapHeadersCS public class AuthHeaderCS
7、:SoapHeader public string Username;public string Password;public class HeaderService public AuthHeaderCS sHeader;WebMethod SoapHeader(sHeader)public string SecureMethod()if(sHeader=null)return 错误:请提供验证信息!错误:请提供验证信息!;string usr=sHeader.Username;string pwd=sHeader.Password;if(AuthenticateUser(usr,pwd)
8、return 验证成功:验证成功:+usr+,+pwd;else return 错误:不能被验证!错误:不能被验证!;private bool AuthenticateUser(string usr,string pwd)if(usr!=null)&(pwd!=null)return true;return false;使用使用SOAP头条目实现用头条目实现用户名的验证。户名的验证。同步及异步调用编程同步及异步调用编程 调用调用Web Services方法有两种方式:方法有两种方式:同步调用方式同步调用方式 异步调用方式异步调用方式 同步调用是程序继续执行前等候调用的完成,而异步调用在后台继续
9、时,同步调用是程序继续执行前等候调用的完成,而异步调用在后台继续时,程序也继续执行,不必等待方法处理完成而直接返回。程序也继续执行,不必等待方法处理完成而直接返回。异步异步Web方法在方法在ASP.NET Web服务中提供了一个有效的机制,可以调用服务中提供了一个有效的机制,可以调用后端服务,而不会导致占用却不利用进程线程池中的宝贵线程。通过结后端服务,而不会导致占用却不利用进程线程池中的宝贵线程。通过结合对后端资源的异步请求,服务器可以使用自己的合对后端资源的异步请求,服务器可以使用自己的Web方法使同时处理的方法使同时处理的请求数目达到最大。我们应该考虑使用此方法开发高性能的请求数目达到最
10、大。我们应该考虑使用此方法开发高性能的Web服务应用服务应用程序。程序。采用异步采用异步Web方法方法 使用异步使用异步 Web 方法包装后端异步调用很有意义,可以使方法包装后端异步调用很有意义,可以使 Web服务代码更服务代码更加有效。使用委托的异步方法调用在执行时仍将占用其中一个进程的线加有效。使用委托的异步方法调用在执行时仍将占用其中一个进程的线程。也可以占用原来的线程,同步运行程。也可以占用原来的线程,同步运行Web方法。方法。WebServicepublic class GetMyInfo:System.Web.Services.WebServiceWebMethodpublic I
11、AsyncResult BeginGetAge(AsyncCallback cb,Object state)/调用异步调用异步Web服务调用服务调用localhost.UserInfoQuery proxy=new localhost.UserInfoQuery();return proxy.BeginGetUserInfo(用户名用户名,cb,proxy);WebMethodpublic int EndGetAge(IAsyncResult res)localhost.UserInfoQuery proxy=(localhost.UserInfoQuery)res.AsyncState;in
12、t age=proxy.EndGetUserInfo(res).age;/在此对在此对Web服务的结果进行其它处理服务的结果进行其它处理return age;一个调用后端一个调用后端Web服务的异步服务的异步Web方法。方法。Web方法聚合数据方法聚合数据 许多许多Web服务都通过访问后端的多个资源并为前端的服务都通过访问后端的多个资源并为前端的Web服务聚合信息。服务聚合信息。尽管调用多个后端资源会增加异步尽管调用多个后端资源会增加异步Web方法模型的复杂性,但最终还是能方法模型的复杂性,但最终还是能够显著提高效率。够显著提高效率。假设我们的假设我们的Web方法调用两个后端方法调用两个后端W
13、eb服务:服务服务:服务A和服务和服务B。从。从BeginXXX函数,可以异步调用服务函数,可以异步调用服务A和服务和服务B。应该向每个异步调用传。应该向每个异步调用传递自己的回调函数。递自己的回调函数。在从服务在从服务A和服务和服务B接收到结果后,为触发接收到结果后,为触发Web方法的完成,提供的回调方法的完成,提供的回调函数将验证所有的请求都已完成,在返回的数据上进行所有的处理,然函数将验证所有的请求都已完成,在返回的数据上进行所有的处理,然后调用传递到后调用传递到BeginXXX函数的回调函数。这将触发对函数的回调函数。这将触发对EndXXX函数的调函数的调用,此函数的返回将导致异步用,
14、此函数的返回将导致异步Web方法的完成。方法的完成。实现异步实现异步Web服务方法服务方法 将一个异步将一个异步Web服务方法拆分成两个方法;每个方法都有相同的基名称,服务方法拆分成两个方法;每个方法都有相同的基名称,一个以一个以Begin开头,另一个以开头,另一个以End开头。开头。(1)Begin方法的参数列表包含方法功能的所有方法的参数列表包含方法功能的所有in和和by reference参数以及参数以及两个附加参数。两个附加参数。by reference参数作为参数作为in参数列出。参数列出。第二个参数必须为第二个参数必须为AsyncCallback。AsyncCallback参数允许
15、客户端提参数允许客户端提供委托,在方法完成时将调用该委托。当一个异步供委托,在方法完成时将调用该委托。当一个异步Web服务方法调服务方法调用另一个异步方法时,此参数可被传递到该方法的第二个参数。用另一个异步方法时,此参数可被传递到该方法的第二个参数。最后一个参数是最后一个参数是Object。Object参数允许调用方为方法提供状态信息。参数允许调用方为方法提供状态信息。当一个异步当一个异步Web服务方法调用另一个异步方法时,此参数可以传递给服务方法调用另一个异步方法时,此参数可以传递给该方法的最后一个参数。该方法的最后一个参数。(2)End方法的参数列表包含方法的参数列表包含IAsyncRes
16、ult参数,此参数后面带有特定于参数,此参数后面带有特定于方法功能的任何方法功能的任何out和和by reference参数。参数。返回值的类型与异步返回值的类型与异步Web服务方法的返回值类型相同。服务方法的返回值类型相同。by reference 参数作为参数作为out参数列出。参数列出。实现异步实现异步Web服务方法示例服务方法示例using System;using System.Web.Services;WebService(Namespace=http:/ class MyService:WebService public RemoteService remoteService;p
17、ublic MyService()/创建一个新的代理类用来被创建一个新的代理类用来被Web服务调用服务调用remoteService=new RemoteService();/定义开始的方法定义开始的方法WebMethodpublic IAsyncResult BeginGetAuthorRoyalties(String Author,AsyncCallback callback,object asyncState)return remoteService.BeginReturnedStronglyTypedDS(Author,callback,asyncState);/定义结束的方法定义结束
18、的方法WebMethodpublic AuthorRoyalties EndGetAuthorRoyalties(IAsyncResult asyncResult)/从另外的一个从另外的一个Web服务中返回异步的结果服务中返回异步的结果return remoteService.EndReturnedStronglyTypedDS(asyncResult);实现一个产生异步的方法调用的实现一个产生异步的方法调用的XML Web服务客户端服务客户端用于从使用用于从使用ASP.NET创建的创建的XML Web服务客户端产生一个到服务客户端产生一个到XML Web服务的异步调用的体系结构被嵌入服务的异
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第4章 Web服务下 Web 服务
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内