精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

咖啡館的故事:FTP, RMI , XML-RPC, SOAP, REST一網打盡

開發
ftp老頭兒滿臉滄桑,喝了一口咖啡,說道:“簡單得很,機器A通過我,就是ftp, 上傳一個文件到機器B的指定路徑,然后再讓rexec 去調用機器B上的程序,這程序是程序員寫的,可以讀取FTP目錄下的文件,執行業務邏輯就行了。”

 [[253832]]

周末的咖啡館有點奇怪, 一群人圍著幾個老頭兒在聊天。

“快說說,你們那個時候沒有HTTP, 沒有JavaScript,到底是怎么讓這些機器上的程序進行'交談'的?”

ftp老頭兒滿臉滄桑,喝了一口咖啡,說道:“簡單得很,機器A通過我,就是ftp, 上傳一個文件到機器B的指定路徑,然后再讓rexec 去調用機器B上的程序,這程序是程序員寫的,可以讀取FTP目錄下的文件,執行業務邏輯就行了。”

 

“什么是rexec ? ”

“就是從一臺機器上遠程執行另外一個機器的命令嘛!” rexec老頭兒略帶怒氣地說道,自己雖然沒有ftp出名,但是不至于沒人知道吧!

rexec [remote_host] [command]

“切!騙誰呢,根本不可能,怎么會用這么笨的方式!”人群中傳來了表示不屑的聲音。

ftp和rexec相視苦笑,這些程序員不會想到,早些年真有這么做的系統,是真實的故事。

ftp招呼telnet一起喝咖啡,不再出聲。

RPC

門口傳來一陣喧囂,CORBA和Java RMI風風火火地走了進來。

人群呼啦一下子就圍了上去,拋棄了那三個老頭兒。

只聽見Java RMI說道:“所有的程序本質上都是函數調用,函數調用在一個進程內是無比自然的事情。 如果是跨越機器、跨越進程呢? 如果一個機器上的函數,能調用另外一個機器上的函數,就像調用本地方法一樣,會是什么樣子? ”

CORBA笑著說:“哈哈, 畫面太美不敢想象。 ”

人群中有人問道:“調用遠程方法就像調用本地方法一樣?怎么可能?”

Java RMI說道:“在概念上其實極其簡單,無非就是自動生成客戶端代理和服務器端代理,這兩個代理完成了大量的臟活和累活,比如:網絡通信,參數序列化...... ”

CORBA接著說道:“魔法都在這兩個代理當中,我們稱之為Stub(客戶端代理)和Skeleton(服務器端代理)。這個Stub代理提供了和服務器一模一樣的接口,客戶端程序只要調用它,它就會把請求發到服務器端的Skeleton代理進行處理。 所以對于客戶端程序來說,網絡不可見,就像是調用本地的方法一樣。”


 

Java RMI說道:“對,我們把這種方式稱為RPC。”

人群中發出一片驚嘆聲:“這RPC可真好啊,Stub和Skeleton代碼能自動生成,我們拿到以后,馬上就可以動手編程了,底層什么都不用關心。 ”

Java RMI說道:“底層可以采用二進制的協議,性能不要太好哦!”

人群中又是一陣歡呼:“太好了!”

那邊的ftp老頭兒警告到:“大家要小心,要注意平臺綁定,你想用Java RMI嗎? 對不起,客戶端和服務器都得用Java,都得安裝Java虛擬機, 什么Python, C#, 沒門兒, 連想都不要想。 ”

telnet接著說:“更重要的是客戶端和服務器緊密綁定,服務器端的變化,都必須得重新生成Stub和Skeleton 。 ”

沒想到這些老家伙們目光如炬。

“什么? 這也太無理了吧!” 人群呼啦一聲又涌到了三個老頭那里。

只見ftp老頭兒在紙上寫到: 比如說有這么一個接口, 可以根據用戶ID查找用戶信息。

  1. public interface UserService extends Remote{ 
  2.     public User findUser(int  id) throws RemoteException; 

利用Java RMI的工具,可以生成Stub和Skeleton, 客戶端拿到Stub以后,可以開心地去編程了。

至于UserService的具體實現代碼,客戶端不用操心。

過了兩天,某個客戶端要求要給這個接口增加一個新的方法:按照名稱來查找用戶。

  1. public User findUser(String name) throws RemoteException; 

那對不起了,需要重新生成新的Stub和Skeleton, 所有的客戶端都會受到影響,即使你根本不需要新的方法。

大家紛紛唉聲嘆氣,這RPC實在是太煩人了!

有沒有一種辦法,讓服務器端獨立變化,而不影響客戶端,或者說盡量不影響客戶端呢?

XML-RPC

后面有個小伙字若有所思,他剛學會了XML, 他覺得既然XML的描述能力這么強,能不能用XML來描述一個方法調用和參數呢?

比如服務器端有個接口是getUser,需要提供的參數是用戶ID, 可以這么描述:

 

然后通過HTTP Post把這個XML發送到服務器端,服務器端進行解析,獲取方法名稱和參數的值,調用真正的方法,把結果也以XML形式返回, 客戶端收到以后再解析就可以得到結果了。

想到此處,他大聲叫道:“別生成什么Stub和Skeleton代理了,直接用HTTP和XML該多好啊。”

人群被他的奇異想法所吸引,呼啦一下又圍了過來。

小伙子畫了一張圖, 展示了這個處理的過程:

 

有人問道:“返回的數據格式可能很復雜, 怎么表示啊。”

小伙子說:“這正是XML的強項啊,圖中展示的是int型,還可以有double ,boolean ,string 等各種類型,甚至可以定義結構體。”

 

對XML來說,這樣的結構體就是小菜一碟。

“這樣客戶端和服務器端就變成松耦合的了,如果服務器端想添加一個新的接口,客戶端就不用做變化了。我打算把他叫做XML-RPC” 小伙子說道。

“這種辦法真好!” 人群中開始躁動起來,“我們都用XML-RPC吧!”

SOAP

“小伙子,你叫什么名字?” 狂熱的人群中有個人冷靜地問道。

“Dave Winer, 怎么了? ”

“Winner? 嗯,你的名字真不錯,天生贏家啊, 有沒有興趣和我們微軟一起制定一個新的RPC標準?”

“新標準? 我的XML-RPC已經很完善了,又簡單又好用。”

“No,No, 還欠缺不少東西,最要命的就是客戶端和服務器端沒有正式的協議約定,都是口頭約定,或者文檔約定,對吧?”

Dave Winer點點頭。

“你想想,如果我們把一個服務器對外提供的接口也用XML精確地描述下來,任何程序,只要讀取這個XML文件,就知道接口的方法名,參數名,該有多好?”

Dave Winer又點點頭。

“還有啊,你的XML-RPC只支持HTTP, 我們的新標準可以支持任意協議啊, HTTP, SMTP,TCP,UDP......都可以。”

“我還是覺得HTTP***!”

“想想看,如果我們的新協議搞成了,所有的B2B的電子商務系統都可以用這一套協議來自動通信,多么***的世界! 你仔細想想,你是想在這個破咖啡館喝一輩子咖啡,還是想和我們微軟一起改變世界?”

一年以后,Dave Winer 新的協議問世了,不,這其實是一套協議:

WSDL :用于描述一個服務的接口,參數......

UDDI : 實現服務的注冊和發現

SOAP : 和XML-RPC很像,但是更加規范,更加正式,更加復雜......

他們之間的關系如圖所示:

 

微軟的.NET戰略適時啟動,Web Service的宣傳鋪天蓋地:你只要用WSDL定義了接口,就可以選擇任何語言來實現! Java , Python, 甚至C語言都可以,當然,我們的Visual Studo, C#和它結合得更好,歡迎使用。

人們趨之若鶩。

幾年以后

Dave Winer又一次來到了咖啡館,這一次他選擇了一個角落坐下,要了一杯咖啡,靜靜地聽大家聊天。

“你們知道嗎,微軟太坑爹了,那個SOAP實在是太難用了!”

“沒錯沒錯,羅嗦,羅嗦,太羅嗦了。你看看,我每次發個SOAP請求得多麻煩:”

  1. <?xml version="1.0"?> 
  2. <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:m="http://www.example.org"
  3.   <soap:Header> 
  4.   </soap:Header> 
  5.   <soap:Body> 
  6.     <m:GetUser> 
  7.       <m:UserID>1001</m:UserID> 
  8.     </m:GetUser> 
  9.   </soap:Body> 
  10. </soap:Envelope> 

“這算什么,返回值也是同樣羅嗦的XML,解析起來實在是累死了。”

“是啊,如果沒有可視化工具的輔助,簡直是無法使用。”

Dave Winer一邊喝咖啡一邊想,沒辦法,這XML就是這樣,不過我們的SOAP搞得是不是有點過分了?

“我覺得這就是那些大廠商們為了賺錢而搞出的東西,都是為了賣他們的軟件,一點都不實用!”

“我們還是回歸最簡單的HTTP調用吧!” 有人提議。

比如想獲取一個用戶的信息,可以調用這樣的API http://xxx.com/getUser?id=1001

“服務器端還要返回又臭又長的XML嗎? ”

“不,我們可以用JSON這種數據格式,簡潔緊湊,對JavaScript非常友好,處理起來非常方便。”

大家都表示同意。

“大家別激動,如果用這種方式,和原來的XML-RPC本質上是一樣的,都是把服務器端看做是一堆函數的集合,然后客戶端去調用他們。Java RMI是通過Stub/Skeleton代理的方式,XML-RPC是通過XML的方式。” 一個叫做羅伊的小伙提醒道。

 

“那可不咋地,服務器端不就是一堆函數嗎?” 有人說道。

“大家轉換一下思路,別把他們當成函數,當成資源(Resource), 從動詞轉換成名詞試試。”

聽到羅伊這新奇的想法,一群人又圍了上來。

“名詞? 資源? ”

“是啊,比如說用戶,學生,訂單等等。他們天然可以用uri來表示。”

 

“有點意思, 那對這些資源怎么操作?”

“HTTP的方法GET,POST, DELETE,PUT,HEAD...... 可以充當動詞啊。”羅伊說道。

 

“我的媽啊,你竟然把HTTP的方法當成增刪改查了。”

話雖這么說,可是大家都覺得這種方式挺簡單的,充分利用了HTTP的特性,只要腦子里不要把服務器端看成函數,而是當作一堆名詞資源就可以了。

“這種方式叫什么名字?”

“RESTful API !”

“這RESTful看起來不錯啊,要不我們試試?”

“試試去!不行的話就找這個羅伊算賬!”

【本文為51CTO專欄作者“劉欣”的原創稿件,轉載請通過作者微信公眾號coderising獲取授權】

戳這里,看該作者更多好文

責任編輯:武曉燕 來源: 51CTO專欄
相關推薦

2024-04-26 00:25:52

Rust語法生命周期

2021-08-05 06:54:05

流程控制default

2024-02-27 10:11:36

前端CSS@規則

2021-10-11 07:55:42

瀏覽器語法Webpack

2010-08-25 01:59:00

2011-12-02 09:22:23

網絡管理NetQos

2013-08-02 10:52:10

Android UI控件

2024-08-26 10:01:50

2024-04-07 08:41:34

2024-06-12 00:00:05

2023-04-06 09:08:41

BPM流程引擎

2013-10-16 14:18:02

工具圖像處理

2019-07-24 15:30:00

SQL注入數據庫

2020-02-21 08:45:45

PythonWeb開發框架

2012-07-25 09:44:31

翼起來·創業咖啡館

2023-09-26 00:29:40

CSS布局標簽

2020-10-19 06:43:53

Redis腳本原子

2023-04-03 08:30:54

項目源碼操作流程

2009-04-02 10:17:00

交換機產品選購

2019-12-13 16:00:11

Dubbo面試題Java
點贊
收藏

51CTO技術棧公眾號

久久久久久激情| 久久6免费视频| 青青青免费视频在线2| 狂野欧美性猛交xxxx巴西| 亚洲日本欧美日韩高观看| 青青青在线视频免费观看| 欧美a在线看| 99久久久免费精品国产一区二区 | 成人自拍网站| 国产又爽又黄的视频| 日韩免费视频| 亚洲精品美女网站| 制服丝袜中文字幕第一页| 91在线三级| 欧美激情一区二区三区全黄| 不卡一区二区三区视频| 波多野结衣视频在线看| 亚洲特色特黄| 久久精品国产一区二区三区| 一二三不卡视频| 日本在线成人| 欧美日韩在线三级| 噜噜噜久久亚洲精品国产品麻豆| 欧美jizzhd69巨大| 国产亚洲综合色| 69174成人网| 又污又黄的网站| 午夜在线视频观看日韩17c| 久久影视免费观看| 天堂资源在线视频| 国产探花一区| 亚洲国产一区自拍| 色欲欲www成人网站| 婷婷激情成人| 欧美视频一区在线| 久久精品99国产| 波多野一区二区| 夜夜精品视频一区二区| 在线视频福利一区| av资源网在线观看| 久久久精品人体av艺术| 精品中文字幕一区| 天堂8在线视频| 懂色一区二区三区免费观看| 91中文字幕在线| 伊人亚洲综合网| 日韩电影在线看| 日本久久91av| 午夜毛片在线观看| 国产精品丝袜xxxxxxx| 欧美放荡办公室videos4k| 丝袜美腿小色网| 欧美激情理论| 久久精品中文字幕一区| 91 在线视频| 99九九热只有国产精品| 日韩在线欧美在线| 精品一区二区三孕妇视频| 日韩欧美高清| 日韩中文在线不卡| 精品人妻一区二区三区蜜桃视频| 亚洲国产精品嫩草影院久久av| 亚洲精品一区在线观看| 中文字幕第3页| 好吊妞视频这里有精品| 日韩欧美一级二级| 日韩无码精品一区二区| 欧美毛片免费观看| 亚洲午夜精品久久久久久久久久久久| 老鸭窝一区二区| 国产一区二区区别| 最近2019中文字幕在线高清 | 欧美大片aaaa| 欧美成人黑人xx视频免费观看| 欧美爱爱小视频| 在线观看日韩av电影| 久久久视频精品| 99久热在线精品996热是什么| 久久成人在线| 国产精品爽爽爽爽爽爽在线观看| 国产又粗又黄又爽| 国产电影一区二区三区| 久久99精品久久久久子伦| 日本五码在线| 国产精品蜜臀在线观看| 男人天堂网站在线| 涩涩视频在线播放| 欧美三级乱人伦电影| 精品人妻一区二区乱码| 日本午夜精品久久久| 中文字幕无线精品亚洲乱码一区 | 日本一级片免费| 午夜久久99| 欧美在线视频一区二区| 中文字幕人妻互换av久久| 国产精品性做久久久久久| 久久久精品动漫| 素人av在线| 五月婷婷欧美视频| 五月天av在线播放| 精品三级av| 少妇av一区二区三区| 精品视频一区二区在线观看| 天堂成人免费av电影一区| 亚洲a在线播放| 激情福利在线| 亚洲激情在线激情| 美女黄色片视频| 国产精品丝袜在线播放| www.亚洲男人天堂| 日本免费在线观看视频| 国产a级毛片一区| 亚洲v国产v在线观看| 2018av在线| 欧美日韩成人在线一区| 人妻少妇精品视频一区二区三区| 91精品一区国产高清在线gif | 97精品国产97久久久久久久久久久久 | 国产精品乱码人人做人人爱| 精品国产一区三区| 欧州一区二区三区| 日韩在线欧美在线国产在线| 精品人妻一区二区三区潮喷在线| 成人在线视频首页| 国产一二三四五| 成人全视频在线观看在线播放高清 | 欧美成人69av| 国产自产女人91一区在线观看| 色在线免费视频| 婷婷中文字幕一区三区| 蜜桃视频无码区在线观看| 日韩精品影视| 国产精品久久久久久久美男| 婷婷亚洲一区二区三区| 午夜欧美大尺度福利影院在线看| 日本成人在线免费观看| 五月婷婷亚洲| 国产欧美日韩免费看aⅴ视频| 国产在线高清| 色欧美片视频在线观看| 少妇光屁股影院| 国产欧美大片| 欧美成ee人免费视频| 国产精品蜜芽在线观看| 337p日本欧洲亚洲大胆精品| 国产污视频在线观看| 成人中文字幕合集| 蜜臀av色欲a片无码精品一区| 网站一区二区| 欧美激情a在线| 亚洲国产一二三区| 亚洲国产wwwccc36天堂| xxxx黄色片| 亚洲尤物精选| 欧美日韩在线一二三| 亚洲综合在线电影| 中文字幕日韩电影| 亚洲专区第一页| 亚洲色图都市小说| 潘金莲一级淫片aaaaaaa| 欧美午夜精品| 国产69精品久久久久9999apgf| 牛牛电影国产一区二区| 亚洲国产欧美一区二区三区久久| 日本va欧美va国产激情| 成人免费视频视频| 久久婷婷五月综合色国产香蕉| 要久久爱电视剧全集完整观看| 欧洲成人免费aa| 成人精品一区二区三区免费| 欧美丰满少妇xxxxx高潮对白 | 91网站免费视频| 日本一不卡视频| 午夜久久久久久久久久久| 中文字幕区一区二区三| 5278欧美一区二区三区| 第一页在线观看| 91精品国产色综合久久不卡蜜臀| 免费无码毛片一区二区app| 99麻豆久久久国产精品免费 | 国产一区二区三区四区五区入口| 超碰超碰超碰超碰超碰| 欧美日韩一本| 国产精品一区二区电影| 日本高清在线观看视频| 精品一区二区亚洲| 亚洲最大成人在线视频| 一区二区国产视频| 女人被狂躁c到高潮| 日本不卡在线视频| 国产91在线亚洲| 亚洲第一福利社区| 91欧美精品成人综合在线观看| 97蜜桃久久| 中文字幕av一区二区| 亚洲精品国产精品乱码不卡| 91久久香蕉国产日韩欧美9色| 亚洲区一区二区三| 91亚洲资源网| 日本黄色一级网站| 美女黄色成人网| 97在线免费视频观看| 少妇精品久久久| 成人性色av| 免费在线观看一区| 午夜精品一区二区三区在线| 一级日本在线| 国产午夜精品久久久| www.日韩高清| 欧美日韩一区二区欧美激情 | 男插女视频久久久| 日韩中文av在线| 免费黄网站在线观看| 日韩你懂的电影在线观看| 中文字幕欧美人妻精品| 欧美午夜www高清视频| 久草视频在线资源站| 亚洲国产成人一区二区三区| 亚洲男人在线天堂| 国产成人免费高清| 中文字幕一区二区在线观看视频 | 91免费高清视频| 日韩视频网站在线观看| 午夜精品国产精品大乳美女| √天堂8在线网| 日韩中文在线中文网在线观看| 加勒比一区二区三区在线| 日韩成人xxxx| 免费成人在线看| 日韩欧美亚洲另类制服综合在线| 91久久久久国产一区二区| 91成人免费在线| 久久国产视频一区| 欧美日韩视频免费播放| 国产无码精品在线观看| 亚洲一区在线视频| 中文字幕影音先锋| 一区二区三区日韩欧美精品| 黑鬼狂亚洲人videos| 国产精品白丝在线| 免费黄在线观看| 国产午夜亚洲精品理论片色戒 | 日本a口亚洲| 日韩精品另类天天更新| 久久成人高清| 日韩欧美三级电影| 国产一区不卡| 日韩在线电影一区| 成人激情电影在线| 午夜精品一区二区三区在线观看| 国产亚洲一卡2卡3卡4卡新区| 久久riav二区三区| 曰本一区二区三区视频| 日本成人黄色免费看| 国产乱码精品一区二区三区四区 | 欧美一区二区三区久久精品茉莉花 | 国产精品久久久久久久久久| 国产综合av| 国产欧美在线看| 免费一级欧美片在线观看网站| 亚洲最大福利视频网站| 超碰成人97| 久久精品中文字幕一区二区三区| 在线成人动漫av| 亚洲国产欧洲综合997久久| 99久久婷婷这里只有精品| 欧美性受xxxx黑人猛交88| 欧美视频官网| 成人在线免费在线观看| 日韩激情一区二区| 91欧美一区二区三区| 高清在线观看日韩| 欧美做受喷浆在线观看| 中文字幕欧美区| 国产精品视频一区二区三| 婷婷中文字幕一区三区| 少妇又紧又色又爽又刺激视频| 欧美精品在欧美一区二区少妇| 国内老熟妇对白xxxxhd| 亚洲国产精彩中文乱码av| 精品欧美不卡一区二区在线观看 | 99久久精品情趣| 无码国产69精品久久久久同性| 国产精品第五页| 日本污视频在线观看| 欧美亚洲一区二区在线| 亚洲第一页视频| 国产一区二区黄| av在线免费观看网址| 91精品国产精品| www.91精品| 欧美精品中文字幕一区二区| 国产精品久久占久久| 欧美三级在线观看视频| 理论片日本一区| 欧美在线一级片| |精品福利一区二区三区| 国产欧美一区二区三区在线看蜜臂| 欧美色窝79yyyycom| 日韩一级片免费在线观看| 中文字幕亚洲一区在线观看 | 97视频在线观看网站| 性欧美视频videos6一9| 在线免费观看亚洲| 奇米888一区二区三区| 激情婷婷久久| 亚洲视频在线不卡| 国产欧美日韩另类一区| 日韩xxx高潮hd| 日韩一区二区在线观看视频播放| 国产日产精品久久久久久婷婷| 欧美激情视频网| 日韩在线激情| 视频三区二区一区| 欧美亚洲一区| 人妻无码中文久久久久专区| 亚洲精品va在线观看| 一区二区日韩在线观看| 国产亚洲精品久久久久久| 丁香花视频在线观看| 亚洲综合社区网| 欧美a级成人淫片免费看| 国产成人精品无码播放| 99re成人精品视频| 日本a在线观看| 欧美大片国产精品| av片在线观看| 亚洲永久在线观看| 国产精品7m凸凹视频分类| 亚洲一区二区蜜桃| 国产视频一区在线播放| 黄色片免费观看视频| 亚洲电影成人av99爱色| www.综合网.com| 99一区二区三区| 国产一区久久| 中文字幕人妻一区| 夜夜嗨av一区二区三区网页 | 尤物yw午夜国产精品视频明星| 日韩深夜视频| 鲁片一区二区三区| 裸体一区二区| gv天堂gv无码男同在线观看| 欧洲视频一区二区| jizz在线观看视频| 国产精品亚洲第一区| 色婷婷综合网| jizz欧美性11| 亚洲欧美另类久久久精品| 99久久精品国产色欲| 欧美另类在线观看| 99久久香蕉| 5月婷婷6月丁香| 国产亚洲综合在线| 国产又黄又爽视频| 美女精品久久久| 精品国产影院| 丁香啪啪综合成人亚洲| 国产喷白浆一区二区三区| 影音先锋国产在线| 久久久精品视频成人| 欧美第一在线视频| 成 年 人 黄 色 大 片大 全| 91理论电影在线观看| 中文字幕+乱码+中文乱码www| 爱福利视频一区| 豆花视频一区二区| 农村妇女精品一二区| 国产欧美精品一区二区三区四区| 国产一区二区波多野结衣| 久久999免费视频| 色老板在线视频一区二区| 一级黄色香蕉视频| 亚洲精品视频在线观看免费| 日韩一级片免费看| 国产精品人人做人人爽| 欧美成人有码| 亚洲自拍偷拍一区二区| 欧美老人xxxx18| 狠狠操一区二区三区| 视频在线观看成人| 粉嫩aⅴ一区二区三区四区| 亚洲天堂一区在线| 久久综合色88| 思热99re视热频这里只精品| 蜜臀av免费观看| 午夜亚洲福利老司机| 爱久久·www| 国产美女精品久久久| 三级在线观看一区二区| 私库av在线播放| 亚洲天堂av图片| 五月亚洲婷婷| 欧美 日韩 国产 激情| 亚洲午夜久久久久| 天堂中文а√在线| 极品尤物一区二区三区| 精品无人区卡一卡二卡三乱码免费卡| 日韩精品成人在线| 久久国产精品免费视频|