探讨ASP.NET AJAX客户端异步通信层编程技术(二)
在前文中,我们概括地介绍了ASP.NET AJAX异步通信层的主要特征。在本篇中,我们将从一个较高的层次上分析一下ASP.NET AJAX异步通信层的架构。
一、ASP.NET AJAX异步通信层的架构
Microsoft AJAX Library的客户端能够调用服务器端Web服务方法,其网络层把客户端描述层与服务器端业务逻辑层绑定到一起。这一方案所带来的优点是,实现了JavaScript客户端与ASP.NET服务器端的松耦合—仅为它们之间的通信提供了一个接口。
Microsoft AJAX Library网络层的工作原理还可以使用如图1所示的方式进行更为直观的描述。
图1 使用ASP.NET AJAX实现异步通讯
从物理实现上分析,这个异步通信层的一部分位于客户端,以可下载的JavaScript脚本形式存在;而另一部分则位于服务器端,以 HTTP处理器(handler)和Web 服务的形式存在。
二、客户端异步通信架构
客户端异步通信层包含了若干JavaScript组件。图2描述了Microsoft AJAX Library提供的异步通信层中客户端的组成。
图2 ASP.NET AJAX框架客户端异步通信层的客户端组成
从更高层次上来看,客户端异步通信层(网络层)可划分为下列三个部分:
- 核心通信层
- 转换层
- 代理层
其中,代理层包含了访问服务器端功能的所有代理:
- Web服务代理能够使我们直接从客户端脚本中调用Web 服务方法。
- 页面方法代理允许调用ASP.NET页面的方法,就像它们是普通的Web 服务方法一样。
- 身份验证和用户个性化代理可以通过服务器端的身份验证和 用户个性化服务自动地产生,从而实现了从客户端访问ASP.NET所提供的身份验证和用户个性化服务。通过使用这些代理,可以实现认证用户身份,或者检索他(她)的个性化数据而无需要额外的到服务器的回寄。
借助于各自相应的客户端代理,这些应用程序服务中所实现的方法都可以使用类似于普通Web服务方法的文式进行调用。这种调用方式可以用于调用Web 服务方法, 页面方法以及应用程序服务。
转换层负责实现所有 .NET 类型数据的串行化与反串行化。默认情况下的串行化工作是由Sys.Serialization.JavaScriptSerializer类负责实现的。JSON 用于描述默认的串行化格式,但是也可以使用XML格式来实现串行化。
核心通信层由一组发出HTTP请求的类组成。其中,Sys.Net.WebRequestExecutor相当于实现转换的“抽象”基类, 它提供了一个发出 Web请求的通用接口。Sys.Net.XmlHttpExecutor类继承了类Sys.Net.WebRequestExecutor,它使用XMLHttpRequest发出Web请求. 所有Web 请求的逻辑都是在Sys.Net.WebRequest类中实现的,该类使用一个WebRequestExecutor 对象(默认情况下是使用XmlHttpExecutor)实现这些逻辑。所有在浏览器端发起的Web 请求都在Sys.Net.WebRequestManager类的管理之下,它通过暴露一系列新的 属性、事件和方法对这些请求提供全面的控制,最终实现协调WebRequest组件和XmlHttpExecutor组件之间的关系并保证异步通信的畅通无阻。
在下一篇中,我们将探讨ASP.NET AJAX框架客户端异步通信层的服务器端组成的问题。来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/14518332/viewspace-433146/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/14518332/viewspace-433146/