您的位置:首页 > 其它

DWR之DWR是面向web的RPC(或者AJAX-RPC)

2011-12-10 18:29 239 查看
DWR之DWR是面向web的RPC(或者AJAX-RPC)

----------

DWR的显著特征是提供把服务器端代码视为浏览器中javascript代码的方法,这是DWR的首创。DWR是java和javascript相结合的开源库。通过它,可以简单容易地构建Ajax程序,无需深入了解XMLHttpRequest的编码细节。它容许你通过客户端的javascript,采用看似调用浏览器本地代码的方法来调用服务器端的代码。这就是DWR(Direct Web
Remoting)中直接(Direct)的含义。

如果了解RPC,就会了解DWR的功能和调用机制。在RPC中,客户端代码发出调用,在大多数情况下会借助于某种代理存根函数或者对象。无论这些代理存根如何实现,都会依次通过底层的RPC库发出请求。在通常情况下,被调用的代码位于另一台计算机上,请求会通过一些网络协议发送到远程计算机。现在,在RPC库中,服务器端组件会接收请求,并通过其他代理存根对象传递到目的地,即位于远程计算机的被调用过程。服务器会执行,并在执行完成后,把结果按照相反的流程返回。

DWR的主体,也就是所谓的内核,是DWRServlet类。在很多情况下,该类是一个普通的java Servlet,但是会为我们做许多工作,其中就包括基于java类自动生成Javascript对象。在接下来第一个真实的DWR范例中,首先需要在Web页面中包含到一个Javascript文件的链接。但是,这样说会有曲解,这不是一个真实的javascript文件,例如,我们在页面中包含以下内容:

<script type="text/javascript" src="myApp/dwr/interface/AjaxService.js"></script>
请注意,我们引入的是javascript文件名,这其实对应的是同名的java类名。当含有这一行代码的web页面在浏览器中被解析和执行时,会向位于myApp/dwr/interface的AjaxService.js资源发出请求。该URI映射到DWRServlet。随后,Servlet会动态检查java类AjaxService,生成代表该类的javascript,并返回所生成的Javascript。因此,在页面的全局范围中,现在就有了一个名为AjaxService的javascript对象,这就是客户端代理存根。

客户端的RPC库又指的是什么呢?这其实很简单,就是DWR本身的javascript部分。你随后就会看到,页面中还有一个<script>(也映射到DWRServlet),是DWR的客户端部分,能够轻易地完成所有的Ajax工作。

在DWR中,服务器端的代理存根其实没有任何东西(有些RPC实现中不包含这一部分)。

这样就可以概要理解DWR的组成,以及如何与RPC对应。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐