第三十五 ASP.NET和Web服务(二)
*摘要
。异步Web服务
。Web服务中的事务处理
。Web服务中的缓存技术
。WSE技术
* Web服务
。Web Service是在Internet上进行分布式计算的基本构造块。
。WebService就是一个对外的接口,里面有函数可供处部客户调用
。WebService传递的数据只能是序列化的数据,典型的就是XML数据。
。WebService体系结构的主要优点之一是:允许在不同平台上,以不同语言编写的各种程序以基于标准的方式相互通信。
。我们可以将XML Web Service定义为:通过SOAP在Web上提供的软件服务,使用WSDL文件进行说明,并通过UDDI进行注册。
* Web服务基础结构
XML Web服务目录:XML Web服务目录提供了一个中央地址,用于定位其他组织提供的XML Web服务。象UDDI登记这样的XML Web服务目录实现这个职能。XML Web服务的客户端可以引用XML Web服务目录,也可以不引用XML Web服务目录。
XML Web服务发现:XML Web服务发现是使用Web服务描述语言(WSDL)定位或发现一个或多个描述特别的XML Web服务的相关文档。DISCO规格定义了定位服务描述的规则。如果XML Web服务客户了解服务描述的位置,他们可以绕过发现步骤。
XML Web服务描述:为了了解如何与一个特定的XML Web服务交互作用,需要提供一个描述来定义XML Web服务支持的交互操作。XML Web服务客户端在可以使用一个XML Web服务之间必须了解如何与它交互。
XML Web服务连接格式:为了能够进行通用通信,XML Web服务使用开放连接格式来进行通信,这些是任何支持最普通的Web服务通信的关
键协议。
* 同步处理
。同步化操作:由前后紧接的组件或函数调用组成。一个同步化调用会阻塞整个进程直到这一个操作完成。
* 异步处理
。异步化操作:不会阻塞启动操作的调用线程。调用程序必须通过轮流检测,软件中的中断信号或只是明确地等待完成信号来发现调用的完成。
* 异步Web服务
。.NET Framework为支持异步化编程模型提供了必要的服务
。决定特定的调用是否应该异步处理的是客户机的代码
。不需要进行额外的编程
。CLR提供了类型安全
。代理类提供了BeginInvoke和EndInvoke方法来支持异步处理。
* 什么是事务处理?
。事务是一个组组合成逻辑工作单元的数据库操作,虽然系统中可能会出错,但事务将控制和维护每个数据库的一致性和完整性。
。如果在事务过程中没有遇到错误,事务中的所有修改将永久成为数据库的一部分。
。如果遇到错误,则不会对数据库作出任何修改。
* Web服务和事务处理
。支持Web服务的事务利用公共语言运行期中的支持,其是基于Microsoft Transaction Server(MTS)和COM+ Services中相同的分布式事务模型。该模型基于明确的判断一个对象是否参与一个事务,而不是编写特定的代码用来处理委托和回调一个事务。
。对于一个使用ASP.NET创建的XML Web服务,你可以通过设置其应用到一个XML Web服务方法上的WebMethod属性的TransactionOption属性来声明一个XML Web服务的事务行为。如果该XML Web服务方法执行的进修抛出一个异常,那么该事务自动地结束:相反,如果没有发生异常,该事务自动委托。
。[WebMethod(TransactionOption=TransactionOption.RequiresNew)]
* TransactionOption属性
。Disabled(默认)指示XML Web Services方法不在事务的范围内运行。当处理请求时,将在没有事务的情况下执行XML Web Services方法
。NotSupported:指示XML Web Services方法不在事务的范围内运行。当处理请求时,将在没有事务的情况下执行XML Web Services 方法
。Supported:指示XML Web Services方法不在事务范围内运行。当处理请求时,将在没有事务的情况下创建XML Web Services.
。Required:指示XML WSb Services方法需要事务。由于Web服务方法只能作为根对象参与事务,因此将为Web服务方法创建一个新事务。
。RequiresNew:指示XML Web Services 方法需要新事务。当处理请求时,将在新事务内创建XML Web Services。
* 缓存技术
1、什么是缓存技术?
缓存是计算机快速地再次获得数据地方式。
2、缓存原理
将经常访问地数据存储到计算机可以更快,更容易地读取地位置。
3、什么时候用缓存?
。使用缓存的情况
1)、缓存那些经常被访问、并且变化不大的数据
2)、缓存整个应用程序都要使用的设置或对象(但这些设置和对象必须在其生存期内不变化)
。不应该使用缓存的情况
1)、不要缓存个人信息,以防止别人盗用。
2)、不要缓存包含时间的页面
3)、不要缓存用户随时都会修改的对象,如购物车。
4、Web服务中的缓存
。ASP.NET有两种用于WEB应用的缓冲技术:
-输出缓冲指:把一次请求所产生的动态输出保存于内存中。
-数据缓冲指:按照一定的策略把事先不确定的对象保存于内存中。它允许页面保存和索引HTTP请求所要求的各种各样的对象。
。这ASP.NET中的缓存技术在Web服务中都可以断续使用。只是使用方法有一些区别。
* Web Services Enhancements
。Web Service技术的基础核心是XML,而在XML中多数情况下传递的都是文本格式的数据流。如何传递非文本格式的数据流?如果是以十进
制或者base64编码方式,则附件大小会增加30%!
。WSE技术是微软发布的一种针对Web Service技术的增强技术,通过它可以使得广大的基于.NET平台的开发人员将安全、路由、附件等技术同WebService技术完美地结合在一起。
。WSE是一个独立的软件开发包,下载地址:
。VS2002,下载WSE1.0 sp1; VS2003可以下载 WSE2.0 sp3; vs2005下载 WSE3.0
* WSE
。WSE技术主要提供了对如下几个Web Service技术规格的支持:
-WS-Securiry;保证Web服务安全的规范;尤其是在消息完整性,消息机密性和单独消息认证方面。WS-Security规范是由Microsoft,IBM,和Verisign联合制定并提交OASIS批准的。
-WS=Routing:定义了路由SOAP消息的机制。
-WS-Attachments:在WSE技术中对于附件是采用DIME规范来进行消息的打包和传送的。DIME是Internet直接消息打包的缩写。WS-Attachments规格则是定义了如何使用DIME在SOAP消息中包含附件以及如何在DIME数据报中引用这些附件。
* SoapContext类
。在WSE技术中,一个非常重要的类就是SoapContext。该类提供了对WS-Security,WS-Routing,WS-Attachments的存取实现支持。
SoapContext类提供对SOAP请求和SOAP响应的两方面的支持。
。SoapContext是一个密封类,即一个不能被继承的类。
。在服务端通过HttpSoapContext.RequestContext和HttpSoapContext.ResponseContext存取;
。在客户端通过WebServicesClientProtocol的成员属性RequestSoapContext和ResponseSoapContext获得。