json json-rpc 如何在项目中便宜引入Ajax框架 (Joyrock开源项目)

简介:

 Joyrock简介: 

    Joyrock是一个基于LGPL协议的开源项目,实现了JSON和JSON-RPC,支持微软ASP.NET框架。它方便我们读取从浏览器流向服务器的JSON对象,也方便在响应流中写入JSON对象。
    Jayrock 远程方法要求写在一个ashx中,页面请求这个ashx的时候,在ProcessRequest 中根据Request对象中的参数信息,确定请求的服务器端方法名称和参数,然后进行调用,并返回结果。
    博客urlhttp://www.cnblogs.com/shanyou/archive/2007/07/01/802213.html
    官方简介urlhttp://jayrock.berlios.de/

    前面几篇博客中有几篇关于EXT的例子,其中有提到过,关于JSON对象在前后台的传递,以及项目业务逻辑类在JS中注册的方式。这些将以这篇文章作为契子,引出一系列相关的博客,它们是我最近学习的东西。

    当我有将产品的前台全部使用EXT的想法时,如何最大程度地利用到现有框架,便成了最迫切需要解决的问题:

    1. 现在框架集成了异常处理、日志、事务、工具类等模块,相对稳定。

    2. 如果使用AJAX,还需要重新写一套数据访问层,那是没人愿意做的事情。

    3. 客户端与服务端之间对象序列化与传递是个问题。

    第1、2个问题,就涉及到服务端业务逻辑类的远程调用,如JSON-RPC;而第3个问题,使用JSON封装吧。关于XML格式与JSON的比较,网上有很多文章,在此不獒叙。

    Joyrock示例:配置一个的例子非常简单,首先你需要下载到它的包,官方网站:http://developer.berlios.de/project/showfiles.php?group_id=4638,这是一个台湾的站点,速度可能有点慢。我把其中必须的Jayrock.dll、Jayrock.Json.dll与json.js放到csdn资源站点上,url为http://download.csdn.net/source/405504

    在项目中,将Jayrock.dll与Jayrock.Json.dll引用进来,在页面中,将json.js文件包含进来(<script type="text/javascript" src="filepath/json.js"></script>)。

    Jayrock的远程方法,需要写在一个“一般资源文件”(.ashx)内:

<% @ WebHandler Language = " C# "  Class = " Handler "   %>

using  System;
using  System.Web;
using  Jayrock.Json;
using  Jayrock.JsonRpc;
using  Jayrock.JsonRpc.Web;

public   class  Handler : JsonRpcHandler
{
    [JsonRpcMethod(
" greetings " )]
    
public   string  Greetings()
    {
        
return   " Welcome to Jayrock! " ;
    }
}

    你可以在这层访问你的业务逻辑。如此,页面上引入json.js与.ashx文件:

< script  type ="text/javascript"  src ="../Common/Js/json.js" ></ script >
< script  type ="text/javascript"  src ="Handler.ashx?proxy" ></ script >

    便可以在js中直接new Handler对象,并访问greetings方法了。

var  s  =   new  Handler(); 
        alert(
" sync: "   +  s.greetings()); 
        s.greetings(
function (response) { 
               alert(
" async: "   +  response.result) 
        }
);

 

    补充一:我朋友的公司开发一个开源产品,关键技术基于一个开源项目,在产品发布前才了解到,这个开源项目基于GPL协议,那么他们的产品也必须开源,必须继承GPL协议,如此,没有任何商机可言。

    如果你在开发项目或者产品时,对开源协议需要一定的了解。

    LGPL开源协议——LGPL 是GPL的一个为主要为类库使用设计的开源协议。和GPL要求任何使用/修改/衍生之GPL类库的的软件必须采用GPL协议不同。LGPL允许商业软件通过类库引用(link)方式使用LGPL类库而不需要开源商业软件的代码。这使得采用LGPL协议的开源代码可以被商业软件作为类库引用并发布和销售。

    GPL/LGPL都保障原作者的知识产权,避免有人利用开源代码复制并开发类似的产品。 

    常见的开源协议:BSD、GPL、LGPL、MIT(前面4种通过ISO批准)、Apach Licene 2.0

    来源:Javaeye上一篇关于开源协议的帖子《开源协议详解》,地址没有了,去javaeye搜索吧。

    补充二:常用的.net下ajax框架(动态连接库Ajax.dll),同样实现了远程调用,但B、S端之间的数据传递没有使用Json格式,而传递DataTable(在js端序列化成为了数组对象)。关于它的配置,将在后续博客中,放出来。

    与Jayrock的比较:个人觉得Jayrock需要一段时间熟悉它的API,而且相对来说网上的资料较少。Ajax.dll在序列化List(包含数据模型Model)时,处理比较麻烦,至少我现在还没能实现。

目录
相关文章
|
7天前
|
自然语言处理 负载均衡 API
gRPC 一种现代、开源、高性能的远程过程调用 (RPC) 可以在任何地方运行的框架
gRPC 是一种现代开源高性能远程过程调用(RPC)框架,支持多种编程语言,可在任何环境中运行。它通过高效的连接方式,支持负载平衡、跟踪、健康检查和身份验证,适用于微服务架构、移动设备和浏览器客户端连接后端服务等场景。gRPC 使用 Protocol Buffers 作为接口定义语言,支持四种服务方法:一元 RPC、服务器流式处理、客户端流式处理和双向流式处理。
|
2月前
|
JSON 资源调度 JavaScript
Vue框架中Ajax请求的实现方式:使用axios库或fetch API
选择 `axios`还是 `fetch`取决于项目需求和个人偏好。`axios`提供了更丰富的API和更灵活的错误处理方式,适用于需要复杂请求配置的场景。而 `fetch`作为现代浏览器的原生API,使用起来更为简洁,但在旧浏览器兼容性和某些高级特性上可能略显不足。无论选择哪种方式,它们都能有效地在Vue应用中实现Ajax请求的功能。
35 4
|
2月前
|
JSON 前端开发 JavaScript
JavaWeb基础8——Filter,Listener,Ajax,Axios,JSON
Filter过滤器、Listener监听器、AJAX、 同步、异步优点和使用场景、Axios异步框架、JSON、js和JSON转换、案例,Axios + JSON 品牌列表查询和添加
JavaWeb基础8——Filter,Listener,Ajax,Axios,JSON
|
3月前
|
Dubbo 网络协议 Java
RPC框架:一文带你搞懂RPC
这篇文章全面介绍了RPC(远程过程调用)的概念、原理和应用场景,解释了RPC如何工作以及为什么在分布式系统中广泛使用,并探讨了几种常用的RPC框架如Thrift、gRPC、Dubbo和Spring Cloud,同时详细阐述了RPC调用流程和实现透明化远程服务调用的关键技术,包括动态代理和消息的编码解码过程。
RPC框架:一文带你搞懂RPC
|
2月前
|
XML 负载均衡 监控
分布式-dubbo-简易版的RPC框架
分布式-dubbo-简易版的RPC框架
|
3月前
|
XML JSON Java
使用IDEA+Maven搭建整合一个Struts2+Spring4+Hibernate4项目,混合使用传统Xml与@注解,返回JSP视图或JSON数据,快来给你的SSH老项目翻新一下吧
本文介绍了如何使用IntelliJ IDEA和Maven搭建一个整合了Struts2、Spring4、Hibernate4的J2EE项目,并配置了项目目录结构、web.xml、welcome.jsp以及多个JSP页面,用于刷新和学习传统的SSH框架。
82 0
使用IDEA+Maven搭建整合一个Struts2+Spring4+Hibernate4项目,混合使用传统Xml与@注解,返回JSP视图或JSON数据,快来给你的SSH老项目翻新一下吧
|
3月前
|
XML 存储 JSON
(十二)探索高性能通信与RPC框架基石:Json、ProtoBuf、Hessian序列化详解
如今这个分布式风靡的时代,网络通信技术,是每位技术人员必须掌握的技能,因为无论是哪种分布式技术,都离不开心跳、选举、节点感知、数据同步……等机制,而究其根本,这些技术的本质都是网络间的数据交互。正因如此,想要构建一个高性能的分布式组件/系统,不得不思考一个问题:怎么才能让数据传输的速度更快?
|
3月前
|
XML JSON 前端开发
JSON与AJAX:网页交互的利器
JSON与AJAX:网页交互的利器
35 0
|
5月前
|
存储 缓存 Linux
【实战指南】嵌入式RPC框架设计实践:六大核心类构建高效RPC框架
在先前的文章基础上,本文讨论如何通过分层封装提升一个针对嵌入式Linux的RPC框架的易用性。设计包括自动服务注册、高性能通信、泛型序列化和简洁API。框架分为6个关键类:BindingHub、SharedRingBuffer、Parcel、Binder、IBinder和BindInterface。BindingHub负责服务注册,SharedRingBuffer实现高效数据传输,Parcel处理序列化,而Binder和IBinder分别用于服务端和客户端交互。BindInterface提供简单的初始化接口,简化应用集成。测试案例展示了客户端和服务端的交互,验证了RPC功能的有效性。
388 7
|
4月前
|
分布式计算 负载均衡 数据安全/隐私保护
什么是RPC?有哪些RPC框架?
RPC(Remote Procedure Call,远程过程调用)是一种允许运行在一台计算机上的程序调用另一台计算机上子程序的技术。这种技术屏蔽了底层的网络通信细节,使得程序间的远程通信如同本地调用一样简单。RPC机制使得开发者能够构建分布式计算系统,其中不同的组件可以分布在不同的计算机上,但它们之间可以像在同一台机器上一样相互调用。
148 8