浅析异步通信层的架构在ASP.NET 程序中的应用
2018-03-26李秋
李 秋
江西现代职业技术学院 江西南昌 330095
当客户端第一次请求服务器端(例如用户在浏览器中输入某个ASP.NET AJAXASP.NET AJAX应用程序的URL)时,服务器端的ASP.NET页面将初始的页面UI以及行为发送给客户端。
之后,客户端和服务器端之间的通信将传递纯粹的数据-——数据的生成和保存由服务器端业务层和数据层完成,数据的显示方式以与用户与数据之间的交互(包括修改、添加和删除)则由客户端表示层完成。至于客户端与服务器端传递数据的实现过程,则正是我们本章探讨的主题——-异步通信层来完成的。
简要了解ASP.NET AJAX中的异步通信层结构,以及客户端和服务器端的通信过程之后,我们接下来更深入一步,分别探究ASP.NET AJAX中异步通信层的客户端和服务器端的具体架构。
一、客户端架构
ASP.NET AJAX异步通信层的客户端部分包含了若干个javaScript组件,ASP.NET AJAX异步通信层的客户端部分中,众多的javaScript组件可以分为两大类:核心通信组件以及支持组件。下面我们分别介绍。
(1)核心通信组件
核心通信组件是指实现与服务器端Web Service交互所必需的客户端脚本组件。Web Service代理、页面方式代理、webRequest组件、webRequestManager组件以及XMLHttp-Executor组件均属于核心通信组件。
(2)Web Service代理
在ASP.NET AJAX中,Web Service的客户端代理可以由服务器端的异步通信层自动生成。然后开发者即可在javaScript中通过这些Web Service代理非常直观地对服务器端的WebService方式进行异步调用。调用这类代理的语法和服务器端代码(例如C#或vb.net)的调用语法非常类似——这也正是“代理”的含义。关于客户端的WebService代理与普通的HTTP请求一样,调用服务器端的Web Service方法也可以使用GET和POST两种方式。
以GET方式进行调用,那么需要为Web Method添加{scriptMethod(UsehttpGet=true)}属性。
(3)页面方式代理
与客户端的Web Service代理类似,ASP.NET AJAX异步通信层的服务器端部分同样能够为定义在ASP.NET页面中的静态服务器端方法自动生成客户端的代理,因此也能够大大简化在客户端javaScript中的调用过程。
(4)WebRequest组件
*WebRequest组件是异步通信层中客户端部分的“经纪人”,用来收集发起异步HTTP请求所用到的参数,例如请求地址、请求的主体部分、超时设定以及用户上下文信息等。一般来讲,WebRequest组件是我们使用ASP.NET AJAX异步通信层创建并发起一次 HTTP请求唯一需要打交道的客户端组件。当然,若是该HTTP请求的目标是某个Web Service或某个ASP.NET页面中的静态方式,那么则毫无疑问应该选用主动生成的Web Service或页面方法的客户端代理,这样讲会更加简单。
*XMLHttpExecutor组件
XMLHttpExecutor组件是异步通信层客户端部分中最为“劳苦功高”的“实干者”,它将使用原始的XMLHttpRequest对象完成客户端与服务器端的通信工作。此外,XMLHttpExecutor类继承于 WebRequest Executor基类,WebRequest Executor基类为上层调用者提供了客户端与服务器端通信工作的抽象,而XMLHttpExecutor只是WebRequestExecutor的一种实现。
*WebRequestManaget组件
WebRequestManaget组件是异步通信层客户端部分中的“大管家”,用来维护并协调WebRequest组件与XMLHttpExecutor组件之间的关系,保证异步通信流程的顺畅。
(5)支持组件
支持组件是指对WsbService或页面方法代理进行再次封装的组件,包括身份验证代理和用户个性化代理。实现客户端/服务器端序例化/反序例化功能的组件也属于支持组件,即JSON序例化组件。
二、身份验证代理
身份验证代理组件是由服务器端验证服务自动生成的。通过使用身份验证代理组件,即可在客户端用JavaScript以异步回送,也就是Ajax的方式,实现用户的登录/注销功能,而无需完成传统方式中的一次整页回送。
*用户个性化代理
用户个性化代理组件是由服务器端个性化服务自动生成的。与身份验证代理组件的功能非常类似,通过使用用户个性化代理组件,即可在客户端用JavaScript以异步回送的方式获取/修改/更新用户的个性化信息,同样避免了传统方式中的一次整页回送。
*JSON序例化
JSON序例化组件能够把需要发送给服务器端的数据序例化程JSON格式,还能够将服务器端返回的JSON字符串解析程真正的JavaScript对象(使用JavaScript的eval()函数)。
三、总结
在ASP.NET开发中需要使用异步通信来实现不同架构之间的数据交互是非常必要的,可以使用Web Service代理、页面方式代理等多种方式来完成。