Dag*_*--- 87 gwt gwt-rpc requestfactory
我试图找出是否应该将我的gwt-rpc调用迁移到新的GWT2.1 RequestFactory cals.
Google文档模糊地提到RequestFactory是一种更好的客户端 - 服务器通信方法,用于"面向数据的服务"
我可以从文档中提炼出来的是有一个新的Proxy类可以简化通信(你不会来回传递实际的实体而只是代理,所以它更轻,更容易管理)
这是重点吗?还是我在大局中遗漏了其他东西?
Bob*_*obV 73
GWT RPC和RequestFactory之间的最大区别在于RPC系统是"RPC-by-concrete-type",而RequestFactory是"RPC-by-interface".
RPC开始时更方便,因为您编写的代码行较少,并且在客户端和服务器上使用相同的类.您可以Person使用一堆getter和setter 创建一个类,也可以使用一些简单的业务逻辑来进一步切片和切割Person对象中的数据.这很有效,直到你想要在你的类中拥有特定于服务器,非GWT兼容的代码.由于RPC系统基于客户端和服务器上具有相同的具体类型,因此您可以根据GWT客户端的功能触及复杂性墙.
为了避免使用不兼容的代码,许多用户最终会创建一个对等体PersonDTO,该对等体会遮蔽Person服务器上使用的真实对象.在PersonDTO刚刚拥有服务器端的getter和setter,"域",的一个子集Person的对象.现在,你必须编写代码的之间马绍尔群岛数据Person和PersonDTO对象,并要传递给客户端的所有其他对象类型.
RequestFactory首先假设您的域对象不会与GWT兼容.您只需在Proxy接口中声明应由客户端代码读取和写入的属性,并且RequestFactory服务器组件负责封送数据并调用您的服务方法.对于具有明确定义的"实体"或"具有标识和版本的对象"概念的应用程序,该EntityProxy类型用于将数据的持久标识语义暴露给客户端代码.使用ValueProxy类型映射简单对象.
使用RequestFactory,您需要支付前期启动成本,以适应比GWT RPC轻松支持的更复杂的系统.RequestFactory ServiceLayer提供了更多的钩子来通过添加ServiceLayerDecorator实例来定制其行为.
hon*_*jde 28
我经历了从RPC到RF的过渡.首先,我必须说我的经验是有限的,我使用了尽可能多的EntityProxies.
GWT RPC的优点:
GWT RPC的缺点:
RequestFactory的缺点:
RequestFactory的优点
综合考虑GWT的其他缺点:
无法使用提供的JUnit支持运行集成测试(GWT客户端代码+远程服务器)<=必须模拟所有JSNI(例如localStorage),SOP是一个问题.
不支持测试设置 - 无头浏览器+远程服务器<=没有简单的无头测试GWT,SOP.
是的,可以运行selenium集成测试(但这不是我想要的)
JSNI是非常强大的,但是在他们在会议上提出的那些闪亮的会谈中,他们并没有多说写JSNI代码也有一些规则.再次,弄清楚如何编写一个简单的回调是一个值得真正研究者的任务.
总之,当RPC主要满足您的需求时,从GWT RPC到RequestFactory的转换远非WIN-WIN情况.您最终会将客户端域对象的吨转换写入代理,反之亦然.但是,您可以获得解决方案的一些灵活性和稳健性.星期六,论坛上的支持也很棒!
考虑到我刚才提到的所有优点和缺点,事先考虑这些方法中的任何一种是否真正改善了您的解决方案和您的开发设置而没有大的权衡取舍,这是非常好的.
我发现为我的所有实体创建代理类的想法非常烦人.我的Hibernate/JPA pojos是从数据库模型自动生成的.为什么我现在需要为RPC创建第二个镜像?我们有一个很好的"estivation"框架,负责"去冬眠"pojos.
另外,定义服务接口的想法并没有完全实现服务器端服务作为java合同但是实现了这些方法 - 对我来说听起来非常J2EE 1.x/2.x.
我认为如果您在客户端有大量的 pojo,例如如果您使用 Hibernate 或 JPA 实体,那么这确实很有帮助。我们采用了另一种解决方案,使用 Django 风格的持久性框架和非常轻的实体。
| 归档时间: |
|
| 查看次数: |
26121 次 |
| 最近记录: |