最近接手一个以前的项目,无意间发现此项目开发接口的组件:Jayrock(接口组件估计用的少,用的最多的估计是这个Jayrock.json.dll,用于解析json)

以下是Jayrock的介绍官网:

https://atifaziz.github.io/projects/jayrock/

如果你在开发上使用了该组件,上面的官网会是一个不错的入门教程。

在研究的过程中,发现Jayrock有以下的特定,主要从开发角度方向进行分析。

优点如下:

1、接口开发和部署简单,直接继承组件的JsonRpcHandler,然后进行自己的业务开发,然而,你可以使用实体的ashx文件或者在web.config中全局接管httphandler的方式使用;

2、有接口的帮助页面和测试页面,这个方式其实非常适合移动端或者第三方需要调用的人员使用,能快速的了解接口的用途和测试数据返回的json格式;

3、本域调用后台的接口时,直接使用proxy模式,在html的页面自动生成一个接口js调用类直接使用方法的形式调用接口,抛弃的传统的写请求的方式(确实节省前端开发人员的工作量);

4、跨域时,只要在后台代码开发的接口上,标志跨域标识,直接使用getrpc模式,即可轻松的进行跨域调用(跨域的JS只能是GET方式获取),但是每一个接口的代码就得自己写了;

5、接口json格式采用了jsonrpc格式,对于json的定义,提供了统一性;

缺点,也是美中不足的吧:

1、由于整个组件采用jsonrpc格式,那么组件在封装的时候,就上传照片或者文件来说,完全没有考虑会使用流的形式,只能讲文件转成base64格式,然后装载进json字段中,一并提交;那么问题来了,base64讲图片转换之后,数据就会变的大很多,流量损失比较大;

2、虽然方法可以写注释,但是针对每个参数的注释确没有,可能是作者的思路是,参数命名直观即可;

3、接口的参数上,每个都是必须的,不能不传递,但是我们开发接口的时候,有些特定的需求,会使一些参数传递为null,比如搜索接口就是一个典型的例子;(此观点是错误的,经过深入研究,已经解决,详细请看此篇文章

4、整体采用jsonrpc协议后,流量上自然是大了那么一丁点的了,但是,对于一般的业务系统而言,这些可以忽略不计;

以下是我在开发上的一些图片流程:

1、接口的开发

  1)物理文件模式:

  

  2)web.config接管模式

  

2、接口的帮助页面和测试页面

  1)帮助页面,清晰了然

  

  2)接口的测试页面,自动展示出哪些参数,给移动端开发确实是不错选择

  

3、本域调用:

  

  是不是非常的简单,非常的爽;

4、跨域调用形式,这个算是我艰辛万苦在老外的一个网站上的一个问题上找到的

  使用非常的简单,只要在接口上标记Idempotent = true即可,然后如下调用即可:

  

5、JSON-RPC协议说明,直接引入网址:http://www.json-rpc.org/

  http://blog.csdn.net/hahahacff/article/details/29119077

总结:

  以上就是我对Jayrock组件的研究,其实,以上说到的优点mvc的web api就能全部实现了,帮助和测试页面只需在nuget上下载个扩展即可;

以下是组件的全部文件,包括一些例子也在里面,由于谷歌代码管理即将关闭(只是改为只读模式),所以我整理了一份最全的:

点击下载

如果要更好的开发体验,那么可以尝试以下升级版本:http://www.cnblogs.com/EasonJim/p/6027234.html

使用Jayrock开源组件开发基于JSON-RPC协议的接口的更多相关文章

  1. 使用Jayrock开源组件创建参数可为空的接口

    经过上一篇文章对Jayrock开源组件的分析,我发现了一个问题,就是在写接口的时候,可以设置某个参数为空,可以不需要进行参数的传递,具体写法如下: 图上的test参数就是可空类型,只需标识为int?类 ...

  2. [js开源组件开发]query组件,获取url参数和form表单json格式

    query组件,获取url参数和form表单json格式 距离上次的组件[js开源组件开发]ajax分页组件一转眼过去了近二十天,或许我一周一组件的承诺有了质疑声,但其实我一直在做,只是没人看到……, ...

  3. 【2015上半年总结】js开源组件开发系列索引

    js开源组件开发系列一索引 2015.8 by 田想兵 个人网站 从3月份进入新公司以来,时经五个月,我以平均每周1个小组件的速度,已经完成的js组件有22个之余了,已基本上全部用到实际项目中,这些小 ...

  4. [js开源组件开发]network异步请求ajax的扩展

    network异步请求ajax的扩展 在日常的应用中,你可能直接调用$.ajax是会有些问题的,比如说用户的重复点击,比如说我只希望它成功提交一次后就不能再提交,比如说我希望有个正在提交的loadin ...

  5. [js开源组件开发]数字或金额千分位格式化组件

    数字或金额千分位格式化组件 这次距离上一个组件<[js开源组件开发]table表格组件>时隔了一个月,由于最近的项目比较坑,刚挖完坑,所以来总结性提出来几个组件弥补这次的空缺,首先是金额和 ...

  6. 如何开发基于Dubbo RPC的分布式服务?

    什么是Dubbo? Dubbo能做什么? 在Crystal框架下,如何开发基于Dubbo RPC的服务? 在Crystal框架下,如何调用Dubbo RPC服务? 相关的文章 什么是Dubbo? Du ...

  7. AspNetCore 目前不支持SMTP协议(基于开源组件开发邮件发送,它们分别是MailKit 和 FluentEmail )

    net所有的功能都要重新来一遍,集成众多类库,core任重道远,且发展且努力!! 我们都知道,很多的邮件发送都是基于这个SMTP协议,但现在的.net core对这方面还不太支持,所以我们选择这两个组 ...

  8. [js开源组件开发]localStorage-cache本地存储的缓存管理

    localStorage-cache本地存储的缓存管理 距离上次的组件开发有近三个月的时间了,最近一直在做一些杂事,无法静下心来写写代码,也是在学习emberjs,在emberjs中有一个很重要的东西 ...

  9. [js开源组件开发]table表格组件

    table表格组件 表格的渲染组件,demo请点击http://lovewebgames.com/jsmodule/table.html,git源码请点击https://github.com/tian ...

随机推荐

  1. ASP.NET中获取当日,当周,当月,当年的日期

     ASP.NET中获取当日,当周,当月,当年的日期 在ASP.NET开发中,经常会碰到要获取当日,当周,当月,当年的日期. 以下将源码贴出来和大家分享. aspx中代码如下: <table ce ...

  2. Tomcat6配置webdav协议

    Tomcat6默认是支持webdav协议的,只是webapps目录中不带例子而已.要添加支持很简单,在webapps目录中建立webdav目录,在webdav目录中建立WEB-INF目录,加入web. ...

  3. [转]Gson过滤字段

    原文地址:http://my.oschina.net/orgsky/blog/368768 摘要 Gson过滤字段 Gson过滤字段 Gson 过滤 字段 属性 目录[-] 最简单的用法 方法1:排除 ...

  4. Android 中的 Service 全面总结

    1.Service的种类   按运行地点分类: 类别 区别  优点 缺点   应用 本地服务(Local) 该服务依附在主进程上,  服务依附在主进程上而不是独立的进程,这样在一定程度上节约了资源,另 ...

  5. android中按电源键锁屏然后解锁导致Activity调用onDestory以及如何防止锁屏

    今天在android项目中按电源键锁屏,然后解锁,发现子Activity关闭了,回到了主页,这个问题困扰了我很久,最后打log发现,在按电源键的时候,调用了子Activity的onDestroy()方 ...

  6. 向jboss写入服务器日志

    实际开发中,记录日志是常用的功能,jboss默认情况下已经记录了很多运行日志,如果开发人员要手动在server.log中写入日志,可以参考下面的方法: package utils; import ja ...

  7. 基于ASP.NET MVC的热插拔模块式开发框架(OrchardNoCMS)--BootStrap

    按照几个月之前的计划,也应该写一个使用Bootstrap作为OrchardNoCMS的UI库.之前这段时间都是在学习IOS开发,没顾得上写,也没顾得上维护OrchardNoCMS代码.看看我的活动轨迹 ...

  8. React Native 在现有项目中的探路

    移动开发中,native开发性能和效果上无疑是最好的. 但是在众多的情况下,native开发并不是最优的选择.当需求经常改动的时候,当预算有限的时候,当deadline很近的时候,native开发的成 ...

  9. MC700 安装双系统

    2011年买的MBP MC700给老婆用了一段时间后,老婆还不习惯不了Mac OS或是虚拟机,要求必须给安装windows,无奈时隔四年后,只能重新尝试在MC700上用bootcamp安装Window ...

  10. nios II--实验5——定时器软件部分

    软件开发 首先,在硬件工程文件夹里面新建一个software的文件夹用于放置软件部分:打开toolsàNios II 11.0 Software Build Tools for Eclipse,需要进 ...