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)时,处理比较麻烦,至少我现在还没能实现。

时间: 2024-08-22 13:41:00

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

spring mvc-SpringMVC web项目中如何引入js,css等文件

问题描述 SpringMVC web项目中如何引入js,css等文件 在springmvc的web项目中,如何在html文件中引入本地的jscss等文件,试了很多种方法,发现路经都不对,都报404 Notfound的错.项目的目录结构:同时在springmvc-servlet.xml中添加了配置:在index.html中如此引用js: 然后每次都说找不到这个js文件. 解决方案 web项目js css静态文件缓存解决引入外部css ,js文件 解决方案二: 貌似要放在WebRoot底下新建一个文

visual studio-vs2013没能加载项目中的数据,显示是该项目需要用户输入。

问题描述 vs2013没能加载项目中的数据,显示是该项目需要用户输入. vs2013不能加载内容 解决方案 可能你打开的项目是.net 3.5的,你没有安装.net framework.或者缺少第三方的组件.

项目中布局文件怎么引用另一个项目自定义的组件

问题描述 项目中布局文件怎么引用另一个项目自定义的组件 如果我在一个项目里自定义了一个组件,我想在另一个项目的布局文件中加入这个组件,怎么配置呢?怎么让布局文件能够找到这个组件呢? 解决方案 参考这个例子:http://www.yiibai.com/android/simple_android_custom_component_using_xm.html 解决方案二: xml中include

如何将一个项目中的功能加到另一个项目中,实现一次操作运行两个项目的功能

问题描述 如题,有两个项目分别实现两个功能,如何将一个项目中的功能加到另一个项目中,实现一次操作运行两个项目的功能 解决方案 解决方案二:第三个项目(解决方案),它应用了两个项目,调用(系统集成)了两个项目.这种事情,自己多想想.不要怕出错.你若没有动手动手能力,你就总想着哄别人给你一个源代码.你若有动手能力,你就不怕出错,而用你自己的实践来提问(而不是在刚刚空白的状态下提问).解决方案三:新建一个解决方案,将这两个项目加至同一个解决方案,然后在你的主项目中引用其他项目,就可以直接调用其他项目的

React Native开源项目如何运行(附一波开源项目)

学习任何技术,最快捷的方法就是学习完基础语法,然后模仿开源项目进行学习,React Native也不例外.React Native推出了1年多了, 开源项目太多了,我们以其中一个举例子.给大家演示下如何运行开源项目.(前提是你已经搭建好React Native环境了) 下载开源项目 首先需要找到开源项目 ,比如下面这个. 地址: https://github.com/Bob1993/react-native-gank 进入github, clone到本地或者直接download到本地. 按照之前

go语言项目如何引用依赖Github上的开源项目

用go语言写项目时,难免会引用到一些Github上的开源项目,下面说说在开发时如何引用. 系统:windows Go:1.3.1 开发工具:LiteIDE 比如: 1 2 3 4 5 6 7 import ( "bytes" "fmt" "github.com/yankai913/go-tools/timetool" "net" "os" ) 当正确引用后,在写"timetool."时,

SharePoint项目中新建类库的错误处理及项目建设中的常见问题

第一次SP项目总监遇到各种问题,以下是总结: 问题1.创建SP项目的时候"场解决方案"跟"沙盒解决方案"是有区别的,具体可以看MSDN官方文档,这里简单摘抄如下: 1)场解决方案:承载与W3WP.exe中,其运行会影响整个场的代码,并可以附加W3WP.exe进程来调试(vs要以管理员身份运行). 2)沙盒解决方案:承载与SPUCWorkerProcess.exe中,so重启时IIS应用程序池和IIS服务器都不需要重启,不影响其他场的代码,并且沙盒的运行时受到监视的,

MVP模式在Android项目中的使用

  以前在写项目的时候,没有过多考虑架构模式的问题,因为之前一直做J2EE开发,而J2EE都是采用MVC模式进行开发的,所以在搭建公司项目的时候,也 是使用类似MVC的架构(严格来讲,之前的项目还算不上MVC模式,只是简单将网络请求与界面分离,然后通过Handle通知更新界面).这种写法,在后 面随着项目越来越大,Activty或者Fragment中代码也会越来越多,导致项目的维护变的越来越复杂.所以需要另外一种架构模式来解决这个问题, 在网上浏览了一圈,发现适合Android开发的架构模式非M

大数据-spark能在WEB项目中使用吗?

问题描述 spark能在WEB项目中使用吗? ssh的web项目中想使用spark大数据分析,导入spark的jar包 在初始化sparkconf时报求助啊.............大神在哪里 解决方案 用法有问题,根本不是包的问题.spark更像是操作系统,你的调用是在其上的,而不是平行调用以为加个包就可以了