最近接手一個以前的項目,無意間發現此項目開發接口的組件: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上下載個擴展即可;
以下是組件的全部文件,包括一些例子也在里面,由於谷歌代碼管理即將關閉(只是改為只讀模式),所以我整理了一份最全的:(鏈接: https://pan.baidu.com/s/1jIECHNK 密碼: nvee)
如果要更好的開發體驗,那么可以嘗試以下升級版本:http://www.cnblogs.com/EasonJim/p/6027234.html