JavaRPC(Java Remote Procedure Call)是一種遠(yuǎn)程過(guò)程調(diào)用協(xié)議,用于在不同的計(jì)算機(jī)或進(jìn)程中調(diào)用遠(yuǎn)程方法。它允許應(yīng)用程序在網(wǎng)絡(luò)上進(jìn)行通信,以便在遠(yuǎn)程計(jì)算機(jī)上調(diào)用方法。
10年積累的網(wǎng)站建設(shè)、成都網(wǎng)站制作經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問(wèn)題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先建設(shè)網(wǎng)站后付款的網(wǎng)站建設(shè)流程,更有楊浦免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
SDK(Software Development Kit)是一個(gè)軟件開(kāi)發(fā)工具包,其中包含一組工具、庫(kù)和文檔,用于幫助開(kāi)發(fā)人員創(chuàng)建特定類型的應(yīng)用程序。通常,SDK包括編程語(yǔ)言、開(kāi)發(fā)環(huán)境、API、示例代碼和開(kāi)發(fā)人員文檔。
因此,JavaRPC和SDK是不同的概念。JavaRPC是一種協(xié)議,用于遠(yuǎn)程過(guò)程調(diào)用,而SDK是一種工具包,用于幫助開(kāi)發(fā)人員創(chuàng)建應(yīng)用程序。在Java開(kāi)發(fā)中,可以使用JavaRPC協(xié)議來(lái)實(shí)現(xiàn)遠(yuǎn)程調(diào)用,同時(shí)使用SDK中提供的工具和庫(kù)來(lái)開(kāi)發(fā)應(yīng)用程序。
Thrift 是由 Facebook 開(kāi)源的一個(gè) RPC 框架,現(xiàn)在已經(jīng)掛在 apache.org 下了。主要的幾個(gè)好處:
1. 支持非常多語(yǔ)言,包括在 WEB 開(kāi)發(fā)中很常用的 PHP,以及最重要的 C++/Python/Java 等 WEB后端常用語(yǔ)言,當(dāng)然,還包括很 cool 的 Ruby、Erlang。
2. 完整的 RPC 框架實(shí)現(xiàn),用腳本生成通訊相關(guān)的框架代碼,開(kāi)發(fā)者只需要集中精力處理好 業(yè)務(wù)邏輯。比如搭建一個(gè) Hello World Service 只需要幾分鐘。
3.擁有被 Facebook、Last.fm 等不少大規(guī)?;ヂ?lián)網(wǎng)應(yīng)用驗(yàn)證過(guò)的性能和可用性。
Hessian是一款基于HTTP協(xié)議的RPC框架,采用的是二進(jìn)制RPC協(xié)議,非常輕量級(jí) ,且速度較快。
當(dāng)然,還有Hetty,它是一款構(gòu)建于Netty和Hessian基礎(chǔ)上的高性能的RPC框架。
JSON-RPC-Java 由兩個(gè)對(duì)用戶可視化的組件構(gòu)成,它們是JSONRPCBridge和JSONRPCServlet,二者的協(xié)調(diào)實(shí)現(xiàn)了JSON服務(wù)器端對(duì)請(qǐng)求對(duì)象的處理,并響應(yīng)給用戶。
JSONRPCBridge是一個(gè)擁有服務(wù)器端導(dǎo)出給特定客戶端的對(duì)象的引用的session對(duì)象,它接收服務(wù)器(也就是JSONRPCServlet)傳來(lái)的JSON-RPC請(qǐng)求,然后其把JSON對(duì)象解碼(unmarshalling)為Java對(duì)象,再扮演方法調(diào)用的角色,還要把方法調(diào)用返回的Java對(duì)象結(jié)果組碼(marshall)為JSON對(duì)象傳給客戶端處理。而具體的從Java對(duì)象到Javascript對(duì)象的類型轉(zhuǎn)換由負(fù)責(zé)串行化的串行化類Serializer處理。
JSONRPCBridge必須放置在HttpSession對(duì)象中,并且注冊(cè)屬性名為“JSONRPCBridge”,以使JSONRPCServlet能夠定位負(fù)責(zé)調(diào)用導(dǎo)出到客戶端的Java對(duì)象的橋。為此,為了導(dǎo)出一個(gè)對(duì)象的所有實(shí)例和靜態(tài)方法到客戶端,應(yīng)該有如下的代碼: JSONRPCBridge.registerObject("myObject", myObject);
為了導(dǎo)出一個(gè)類的所有的靜態(tài)方法,應(yīng)該:JSONRPCBridge.registerClass(("myObject", myObject);
如果registerObject和registerClass被多次調(diào)用為有相同鍵值的對(duì)象使用,那么其將被最新賦值的對(duì)象所更新。
在JSON中,還可以使用單例模式的globalBridge來(lái)為所有的HTTP客戶端導(dǎo)出所有的實(shí)例方法。其可以用來(lái)注冊(cè)工廠類,但使用時(shí)要注意認(rèn)證與安全問(wèn)題。使用時(shí)如下標(biāo)識(shí):JSONRPCBridge.getGlobalBridge().registerObject("myObject",myObject); 同上其還可以導(dǎo)出所有的靜態(tài)方法。
該協(xié)議中最重要的一部分還有就是Servlet了,現(xiàn)在就來(lái)簡(jiǎn)單的介紹一下:
在該協(xié)議中,JSONRPCServlet充當(dāng)傳送器,處理通過(guò)HTTP傳輸過(guò)來(lái)的JSON