锁定老帖子 主题:『讨论』jsonrpc的疑问
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2005-06-23
急需选择个AJAX框架,看了下jsonrpc。有几点疑问? 1、I18n问题: 通过escapeJSONString函数把客户端转化编码了。但是JSONRPCServlet.java中 String charset = request.getCharacterEncoding(); if(charset == null) charset = "UTF-8"; 必须为UTF-8格式。对于那些根本不需要国际化的 “国产项目”怎么办。 jsp中难道我们不用GBK吗,有点不现实。 AJAX的国际化问题还没有好的解决方案,希望大家讨论个好的解决办法。 2、javascript方法怎么与java方法匹配。 java : JSONRPCBridge.registerObject javascript addMethods 感觉不是很好用。服务器端象JSF,但没配置文件。session过期的话没有捕获这个异常。客户端更 是让界面编写者晕,虽然实现很灵巧,但hello.js的编写者要看 com.metaparadigm.jsonrpc.test.Hello的代码。晕! 我想可以再加个“Action”层,注册由配置文件完成。类似webwork2的xwork.xml一样。假如要于如 spring整和,写个spring-json-integration.jar就OK了。当web服务器启动时,把这个配置文件转化成 javascript对象,注册到JSONRpcClient里面。在客户端“显式”的调用服务器端方法(对这些方法可 见)。 3、性能 如果有大量的<jsp:useBean id="hello" scope="session" class="com.metaparadigm.jsonrpc.test.Hello" /> 对于一个文件数多的项目来说对web服务器压力不小。这部分能不能放到JVM缓存里呢? 以上是我的一些浅见。不知道以后jsonrpc怎么发展。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2005-06-23
我没有用过 json-rpc,还有一个选择是 buffalo,你看过吗?说说你不选择 buffalo 的理由,应该不是仅仅因为它的底层使用了 XML 吧?
|
|
返回顶楼 | |
发表时间:2005-06-23
引用 jsp中难道我们不用GBK吗,有点不现实。
JSP中需要使用UTF-8不现实吗? 现在哪个IDE不支持UTF-8编码的文本文件? 反正我常用的从Notepad到Eclipse都没有什么问题的 |
|
返回顶楼 | |
发表时间:2005-06-24
glassprogrammer 写道 引用 jsp中难道我们不用GBK吗,有点不现实。
JSP中需要使用UTF-8不现实吗? 现在哪个IDE不支持UTF-8编码的文本文件? 反正我常用的从Notepad到Eclipse都没有什么问题的 那JSP中的中文好办,javascript的中文怎么办。 所有都由标签输出,难吧。 |
|
返回顶楼 | |
发表时间:2005-06-24
dlee 写道 我没有用过 json-rpc,还有一个选择是 buffalo,你看过吗?说说你不选择 buffalo 的理由,应该不是仅仅因为它的底层使用了 XML 吧?
其实我个人倾向与使用XML。 关于http://www.iteye.com/viewtopic.php?t=13995中提到的 传回javascript对象。我试了试,代码调试很是困难,java对象到javascript的转化API很是复杂。就算得到javascript对象,调试,客户端编程太复杂。输出个大的表格,估计都晕了。重构、维护太困难。 另外,假如其它客户端要用我们的服务的话,xml可以很好的切换。 引用 还有一个选择是 buffalo,你看过吗?
1 关于buffalo,有必要说说Burlap。 第一次听说Burlap,是从spring文档里Remoting and web services using Spring这一章,里面也讲了些对象转化的限制。 性能问题。我做的项目是类似google map的webgis项目(集成复杂mis信息)。用户会频繁放大缩小地图。 Burlap感觉是应用与应用之间的协议,而 buffalo 只应用的 Burlap 的java对象到xml的转化功能。我还不如直接用XStream呢。 2、与现有框架集成。在BuffaloServiceServlet.java里,我看到 _service = Class.forName(serviceClazz).newInstance();每个服务层对象都要new 个实例。 假如我用spring框架,服务层都是单例的。显然作者只考虑的web这部分设计,整体纵向结构还有些欠缺。 3 javascript脚本作者些的比较精彩,还有注释可看,不错。 以上个人观点,不对指正。 学习ajax不短时间了,觉的有些方面还是不成熟。期望dlee把你们的架构show出来看看。 对webwork2对ajax的支持很是期待。希望他给我们带来新的东西。 |
|
返回顶楼 | |
发表时间:2005-06-24
zkj_beyond 写道 软件环境:
急需选择个AJAX框架,看了下jsonrpc。有几点疑问? 1、I18n问题: 通过escapeJSONString函数把客户端转化编码了。但是JSONRPCServlet.java中 String charset = request.getCharacterEncoding(); if(charset == null) charset = "UTF-8"; 必须为UTF-8格式。对于那些根本不需要国际化的 “国产项目”怎么办。 jsp中难道我们不用GBK吗,有点不现实。 AJAX的国际化问题还没有好的解决方案,希望大家讨论个好的解决办法。 第一: UTF-8 是很好的解决方案,为什么要抱着GBK不放呢? 把中文放到ResourceBundle不会增加太多工作量的。 第二: 国际化不应该是Ajax的问题范畴,不要试图用ajax做所有的事情。它只是一个改善用户体验的助手。 zkj_beyond 写道 2、javascript方法怎么与java方法匹配。 java : JSONRPCBridge.registerObject javascript addMethods 感觉不是很好用。服务器端象JSF,但没配置文件。session过期的话没有捕获这个异常。客户端更是让界面编写者晕,虽然实现很灵巧,但hello.js的编写者要看com.metaparadigm.jsonrpc.test.Hello的代码。晕!我想可以再加个“Action”层,注册由配置文件完成。类似webwork2的xwork.xml一样。假如要于如spring整和,写个spring-json-integration.jar就OK了。当web服务器启动时,把这个配置文件转化成javascript对象,注册到JSONRpcClient里面。在客户端“显式”的调用服务器端方法(对这些方法可见)。 JSONRPCServlet.java 作者实现得很简单,确实有很多需要改善的地方。很早就有人将JSONRPCServlet 转成Turbine的Action,其他的框架我想大同小异。如果不改的话,利用最新的jsonrpc 0.9的版本,也可以通过结合InvocationCallback和LocalArgResolver接口实现session及权限等控制。 集成方面,我以前正是使用你所说的的办法,利用一个配置文件,形如: services.JSONRPCService.registerClass.sqlmap = com.xyz.services.jsonrpc.JSONRPC4SqlMap 在系统启动的时候自动注册Class或者Object到 globalBridge 中去。我觉得将JSONRpcBridge 放到 session scope 中去没有太多必要,所以我全部使用globalBridge。在web.xml 中要配制如下(0.9版本): <servlet> <servlet-name>com.metaparadigm.jsonrpc.JSONRPCServlet</servlet-name> <servlet-class>com.metaparadigm.jsonrpc.JSONRPCServlet</servlet-class> <init-param> <param-name>auto-session-bridge</param-name> <param-value>0</param-value> </init-param> </servlet> zkj_beyond 写道 3、性能 如果有大量的<jsp:useBean id="hello" scope="session" class="com.metaparadigm.jsonrpc.test.Hello" /> 对于一个文件数多的项目来说对web服务器压力不小。这部分能不能放到JVM缓存里呢? 以上是我的一些浅见。不知道以后jsonrpc怎么发展。 同上,就我感觉来说,大量数据传输的时候,jsonrpc 没有parse xml的额外输出,效率还是不错。 |
|
返回顶楼 | |
发表时间:2005-06-24
zkj_beyond 写道 glassprogrammer 写道 引用 jsp中难道我们不用GBK吗,有点不现实。
JSP中需要使用UTF-8不现实吗? 现在哪个IDE不支持UTF-8编码的文本文件? 反正我常用的从Notepad到Eclipse都没有什么问题的 那JSP中的中文好办,javascript的中文怎么办。 所有都由标签输出,难吧。 javascript 中应该尽量避免包含中文,你可以做一个类似于properties的js文件,将js中可能用到的中文词组或者语句定义好。然后通过<script src='locale.js'></script>加载。 |
|
返回顶楼 | |
发表时间:2005-06-24
dlee 写道 我没有用过 json-rpc,还有一个选择是 buffalo,你看过吗?说说你不选择 buffalo 的理由,应该不是仅仅因为它的底层使用了 XML 吧?
jsonrpc 和 buffalo 各有所长。我们可以做一些简单的比较: 标准化: jsonrpc 基于 JSON, 是ECMAScript 的子集,参见http://www.javayou.com/showlog.jspe?log_id=641。 buffalo 基于 caucho 的 burlap 协议(http://www.caucho.com/burlap)。 ECMAScript 规范历史久远,个人感觉更权威些。 功能: 从buffalo的范例上看,buffalo倾向于调用服务端的方法,然后处理数据。和html element的简单绑定上支持很好。但好像在参数传递上不支持对象参数(1.0版本)。 jsonrpc 同buffalo 一样也是调用服务端的方法,但可以通过json的形式传递对象参数,同时还支持Reference参数(不推荐使用)。 jsonrpc 似乎功能更为强大,但是也因此带来了复杂性。 扩展性: buffalo 使用xml传输数据,感觉血统纯正,其他的Java 应用只要使用burlap的jar库编写简单的代码就可以与其通信。不过好象没有发现burlap的其他语言的实现。 jsonrpc 数据是JSON格式,除了 java 之外,jsonrpc 的C和php,甚至python的类库都已经出现。在跨语言方面,jsonrpc 略胜一筹。所以jsonrpc的应用范围会广些。 简易性: buffalo 代码小巧,在使用上更浅显易懂。 jsonrpc 对与不熟悉javascript的新手来说,需要更多的学习投入。 其他: buffalo 和 jsonrpc 都很优秀。在简单的java web 应用上,还是推荐使用buffalo。最重要的, buffalo 是中国人的作品,我衷心希望buffalo快速发展。 |
|
返回顶楼 | |
发表时间:2005-06-29
在adaptive path 定义AJAX 的文章中。有这么一段Q/A
Q. Some of the Google examples you cite don’t use XML at all. Do I have to use XML and/or XSLT in an Ajax application? A. No. XML is the most fully-developed means of getting data in and out of an Ajax client, but there’s no reason you couldn’t accomplish the same effects using a technology like JavaScript Object Notation or any similar means of structuring data for interchange. AJAX 中的X不一定指XML。 个人认为JSON是一个很好的方案,能够给程序员在客户端更大的便利性和灵活性。而且在一般情况下,能够支持JavaScript的环境中都可以直接使用JSON。 SWATO [https://swato.dev.java.net]提供了一个JavaScript与后台Java程序以JSON的方式进行交互的框架,与一些成熟的JS组件可以很好地结合。有兴趣的话,可以参见SWATO的Auto Suggest和Live Form的DEMO:) |
|
返回顶楼 | |
发表时间:2005-07-05
我Research了两天, Ajax Engine 倾向于DWR.
|
|
返回顶楼 | |