论坛首页 Web前端技术论坛

『讨论』jsonrpc的疑问

浏览 18207 次
精华帖 (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怎么发展。
   发表时间:2005-06-23  
我没有用过 json-rpc,还有一个选择是 buffalo,你看过吗?说说你不选择 buffalo 的理由,应该不是仅仅因为它的底层使用了 XML 吧?
0 请登录后投票
   发表时间:2005-06-23  
引用
jsp中难道我们不用GBK吗,有点不现实。


JSP中需要使用UTF-8不现实吗? 现在哪个IDE不支持UTF-8编码的文本文件? 反正我常用的从Notepad到Eclipse都没有什么问题的
0 请登录后投票
   发表时间:2005-06-24  
glassprogrammer 写道
引用
jsp中难道我们不用GBK吗,有点不现实。


JSP中需要使用UTF-8不现实吗? 现在哪个IDE不支持UTF-8编码的文本文件? 反正我常用的从Notepad到Eclipse都没有什么问题的

那JSP中的中文好办,javascript的中文怎么办。 所有都由标签输出,难吧。
0 请登录后投票
   发表时间: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的支持很是期待。希望他给我们带来新的东西。
0 请登录后投票
   发表时间: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的额外输出,效率还是不错。
0 请登录后投票
   发表时间: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>加载。
0 请登录后投票
   发表时间: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快速发展。
0 请登录后投票
   发表时间: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:)
0 请登录后投票
   发表时间:2005-07-05  
我Research了两天, Ajax Engine 倾向于DWR.
0 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics