青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

sherrylso

C++博客 首頁 新隨筆 聯系 聚合 管理
  18 Posts :: 0 Stories :: 124 Comments :: 0 Trackbacks
     一般來說,基于CS(client-server)軟件架構的開發技術有很多種。比較常用的有:基于socket的網絡編程、RPC、基于Java技術的RMI(當然C#也有類似技術)、CORBA等。在這里我們只是對基于socket的網絡編程與RMI作個對比,有助于我們了解它們各自的應用領域,幫助我們在面對一個具體問題的時候選用適合的技術。另外,本文所做的討論可以認為是脫離了語言層面的東西,只是對技術的本身做一個討論,無關乎你是用C++、C#或Java 在開發。
一、RMI技術簡介
        本文就以Java為例,簡單介紹一下RMI技術。
        從Java1.1開始,遠程方法調用作為Java分布式對象技術成為Java核心的API之一(在java.rmi.* 包)。RMI的引入,使得Java程序之間能夠實現靈活的,可擴展的分布式通信。RMI允許Java對象存在于多個不同的地址空間,分布在不同的Java虛擬機上。每一個地址空間可以在同一臺主機上或者網絡上不同的計算機上。由于遠程方法調用跨越不同的虛擬機邊界到不同的指定的地址空間,所以沒有對象共享的全局變量,這就需要對象序列化(Object Serialization)API,它使得Java對象能夠在不同的JVM之間傳遞。對象序列化是特別為Java的對象設計的,這就意味著Java程序中的對象可以作為對象參數存取(可序列化的對象必須實現Serializable接口)。結合RMI和對象序列化機制,就可以訪問越過本地Java虛擬機邊界的對象以及數據。通過RMI,可以調用遠程對象的遠程方法,而通過Java對象序列化機制可以將對象傳遞給這些方法。
        最基本的Java模型并沒有提供將遠程主機上的Java對象看作本地Java程序地址空間一部分的能力,而RMI禰補了這一不足。另外,由于Java與硬件平臺無關的特性,無論是同構的系統還是異構的系統,RMI不需移植就可以順利運行。
       RMI為Java平臺的分布式計算提供了一個簡單而直接的模型。因為Java的RMI技術是基于Java平臺的,所以它將Java平臺的安全性和可移植性等優點帶到了分布式計算中。RMI大大擴展Java的網絡計算能力,它為編寫基于分布式對象技術的企業級Internet/Intranet應用提供了強大的系統平臺支持。
      Java RMI體系結構如下圖:


二、基于socket的網絡編程
        當你使用socket進行網絡應用開發的時候,一般的思路是“消息驅動邏輯”,即這樣的軟件系統一般具有以下特點:
       (1) 客戶端與服務器端依靠消息進行通訊。
       (2) 客戶端或者服務器端都需要一個消息派遣器,將消息投遞給具體的massage handler
       (3) 客戶端或者服務器端利用massage handler進行邏輯事務處理
 見下圖:

        使用socket開發的軟件系統,從技術的本質上來講,有以下幾個特點:
        (1) 基于TCP協議的通訊
        (2) 應用程序本身需要提供對消息的序列化處理(所謂的序列化指的是將消息輸出到網絡流中)
        (3) 客戶端與服務器端需要事先商議好它們之間的通訊協議即它們交互的消息格式
        (4) 由于是消息驅動邏輯,從本質上決定了這樣的編程模式很難面向對象化
三、RMI Vs Sochet
        RMI技術比較socket的網絡編程主要有以下幾個方面:
        第一、.RMI是面向對象的,而后者不是。
        第二、.RMI是與語言相綁定的。比如當你使用Java RMI技術的時候,客戶端與服務器端都必須使用Java開發。而socket的網絡編程是使用獨立于開發語言的,甚至獨立于平臺。基于socket的網絡編程,客戶端與服務器端可以使用不同開發語言和不同的平臺。
       第三、從網絡協議棧的觀點來看,RMI與socket的網絡編程處于不同層次上。基于socket的網絡編程位于TCP協議之上,而RMI在TCP協議之上,又定義了自己的應用協議,其傳輸層采用的是Java遠程方法協議(JRMP)。可見,在網絡協議棧上,基于RMI的應用位置更高一些,這也決定了,與socket的網絡編程相比,RMI會喪失一些靈活性和可控性,但是好處是它帶給了應用開發者更多的簡潔,方便和易用。比如:如果你用的是RMI,你不需要關心消息是怎么序列化的,你只需要像本地方法調用一樣,使用RMI。代價是:應用開發者無法很好地控制消息的序列化機制。
      第四、這是最后一點不同,我認為也是比較重要的一點,就是兩種方法的性能比較,其往往決定著你將使用那種技術來開發你的應用。以下引用Adrian Reber在Network-programming with RMI文中對TCP和RMI所做的一個比較,其做的實驗主要是對兩者在網絡傳輸的帶寬上作的對比: 在網絡上傳輸2 byte的有效數據,對于TCP而言,總共有478 byte被額外傳輸,而對于RMI, 1645byte被額外傳輸。
以下是兩者的trace結果:
TCP:
46037 > 12345 [SYN] Seq=801611567 Ack=0 Win=5840 Len=0
12345 > 46037 [SYN, ACK] Seq=266515894 Ack=801611568 Win=10136 Len=0
46037 > 12345 [ACK] Seq=801611568 Ack=266515895 Win=5840 Len=0
12345 > 46037 [PSH, ACK] Seq=266515895 Ack=801611568 Win=10136 Len=1
46037 > 12345 [ACK] Seq=801611568 Ack=266515896 Win=5840 Len=0
12345 > 46037 [FIN, PSH, ACK] Seq=266515896 Ack=801611568 Win=10136 Len=1
46037 > 12345 [RST, ACK] Seq=801611568 Ack=266515898 Win=5840 Len=0
RMI:
42749 > rmiregistry [SYN, ECN, CWR]
Seq=3740552479 Ack=0 Win=32767 Len=0
rmiregistry > 42749 [SYN, ACK, ECN]
Seq=3749262223 Ack=3740552480 Win=32767 Len=0
42749 > rmiregistry [ACK] Seq=3740552480 Ack=3749262224 Win=32767 Len=0
JRMI, Version: 2, StreamProtocol
rmiregistry > 42749 [ACK] Seq=3749262224 Ack=3740552487 Win=32767 Len=0
JRMI, ProtocolAck
42749 > rmiregistry [ACK] Seq=3740552487 Ack=3749262240 Win=32767 Len=0
Continuation
rmiregistry > 42749 [ACK] Seq=3749262240 Ack=3740552506 Win=32767 Len=0
JRMI, Call
rmiregistry > 42749 [ACK] Seq=3749262240 Ack=3740552556 Win=32767 Len=0
JRMI, ReturnData
42749 > rmiregistry [ACK] Seq=3740552556 Ack=3749262442 Win=32767 Len=0
JRMI, Ping
JRMI, PingAck
42749 > rmiregistry [ACK] Seq=3740552557 Ack=3749262443 Win=32767 Len=0
JRMI, DgcAck
42749 > rmiregistry [FIN, ACK]
Seq=3740552572 Ack=3749262443 Win=32767 Len=0
rmiregistry > 42749 [FIN, ACK]
Seq=3749262443 Ack=3740552573 Win=32767 Len=0
42749 > rmiregistry [ACK] Seq=3740552573 Ack=3749262444 Win=32767 Len=0
        實驗的結果是:RMI與TCP based socket相比,傳輸相同的有效數據,RMI需要占用更多的網絡帶寬(protocol overhead)。從這里,我們可以得出一個一般性的結論:RMI主要是用于遠程方法的”調用“(RMI是多么的名符其實:)),其技術內涵強調的是“調用”,基于此,我能想到的是:移動計算,和遠程控制,當你的應用不需要在client與server之間傳輸大量的數據時,RMI是較好的選擇,它簡潔、易于開發。但是,一旦你的應用需要在client與server之間傳輸大量的數據,極端的,比如FTP應用,則RMI是不適合的,我們應該使用socket。

四、參考資料:
Network-programming with RMI, by Adrian Reber, URL:
http://42.fht-esslingen.de/~adrian/master/rmi.pdf
posted on 2007-07-28 19:06 愛上龍卷風 閱讀(5678) 評論(2)  編輯 收藏 引用

Feedback

# re: socket vs RMI, 選擇? 2007-07-29 12:32 pass86
恩,好文,支持。個人偏向于SOCKET,JAVA的效率問題,實在不讓人滿意。  回復  更多評論
  

# re: socket vs RMI, 選擇? 2007-07-30 22:22 愛上龍卷風
事實上,當你在開發一個cs架構的應用的時候,的確會有這樣兩難的選擇,是使用Socket network programming還是RMI,這樣的對比是有意義的,基于這一點,Socket network programming和RMI是對同一個問題的不同技術解決方案,當然有很多的可比性。  回復  更多評論
  


只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲一区二区成人在线观看| 亚洲精品在线免费观看视频| 亚洲欧美国产日韩天堂区| 最新国产精品拍自在线播放| 美女主播一区| 亚洲二区视频在线| 亚洲精品乱码久久久久久按摩观| 91久久精品美女| 亚洲性视频网址| 久久成人羞羞网站| 免费中文日韩| 国产精品男女猛烈高潮激情| 国产欧美一区二区三区视频| 在线精品高清中文字幕| 亚洲私人影院| 久久综合一区二区| 99天天综合性| a91a精品视频在线观看| 午夜精品久久久久久| 六月天综合网| 亚洲天堂av综合网| 快射av在线播放一区| 国产精品久久久一本精品| 国内视频精品| 亚洲一区二区成人在线观看| 免费久久99精品国产自| 牛夜精品久久久久久久99黑人| 宅男噜噜噜66一区二区 | 国产日韩欧美高清| 在线观看视频亚洲| 亚洲综合成人在线| 亚洲第一偷拍| 欧美主播一区二区三区美女 久久精品人| 久久视频免费观看| 国产精品日韩电影| 99国产精品99久久久久久粉嫩| 久久精品女人的天堂av| 亚洲人成高清| 猛男gaygay欧美视频| 国产色产综合产在线视频| 一区二区欧美在线| 欧美激情视频免费观看| 久久成人在线| 国产精品影片在线观看| 亚洲一区精品在线| 亚洲国产免费| 麻豆精品传媒视频| 精品999网站| 久久久久久久久久码影片| 亚洲视频精品| 国产精品国产三级国产专播精品人| 亚洲国产精品一区二区第一页| 久久精品国产精品亚洲| 亚洲综合色视频| 国产精品久久久久婷婷| 亚洲一区二区三区午夜| 欧美激情精品久久久久久免费印度| 欧美一区二视频在线免费观看| 国产女主播视频一区二区| 亚洲影院色无极综合| 亚洲最新视频在线| 国产精品激情电影| 欧美夜福利tv在线| 午夜电影亚洲| 极品日韩久久| 亚洲福利在线观看| 欧美日韩高清在线播放| 一本一本久久a久久精品综合麻豆| 最新国产成人av网站网址麻豆| 欧美精品自拍偷拍动漫精品| 在线午夜精品自拍| 亚洲五月婷婷| 国产一区二区日韩精品| 久久蜜桃资源一区二区老牛| 久久精品视频在线看| 亚洲二区精品| 亚洲啪啪91| 国产精品久久久久三级| 久久久www成人免费精品| 欧美一级一区| 亚洲黄色性网站| 亚洲久久一区| 国产伦精品一区二区三区视频孕妇 | 国产欧美丝祙| 欧美在线视频在线播放完整版免费观看 | 亚洲乱码国产乱码精品精| 亚洲第一综合天堂另类专| 欧美激情一二三区| 午夜精品久久久久久久久| 欧美一区国产二区| 日韩视频在线观看| 亚洲欧美乱综合| 亚洲精品国产品国语在线app| 99在线精品免费视频九九视| 国产在线精品自拍| 亚洲激情偷拍| 国产午夜精品理论片a级探花| 欧美成人精品福利| 国产精品成人免费| 蜜臀久久久99精品久久久久久| 欧美激情综合| 久久中文在线| 国产精品免费一区豆花| 亚洲高清网站| 国产偷国产偷精品高清尤物| 亚洲国产成人av| 国产欧美日韩亚洲精品| 亚洲国产成人精品女人久久久| 国产精品天天摸av网| 亚洲国产精品久久精品怡红院 | 裸体丰满少妇做受久久99精品| 亚洲网站在线播放| 久久中文字幕一区二区三区| 午夜在线a亚洲v天堂网2018| 欧美xart系列高清| 欧美一区国产一区| 欧美激情视频免费观看| 蜜桃伊人久久| 国产一二三精品| 亚洲一区日韩| 亚洲男人影院| 欧美日韩亚洲另类| 亚洲日本一区二区三区| 激情校园亚洲| 欧美中文字幕视频| 久久av老司机精品网站导航| 欧美性淫爽ww久久久久无| 亚洲日本理论电影| 99国产一区| 欧美高清视频在线观看| 欧美成人精品不卡视频在线观看| 禁久久精品乱码| 久久久精品国产免费观看同学| 久久精品国产久精国产一老狼| 国产精品久久久久久久久免费樱桃 | 欧美黄色影院| 1024亚洲| 日韩亚洲视频| 一本色道久久88综合日韩精品 | 免费91麻豆精品国产自产在线观看| 国产精品久久久久久久久免费 | 亚洲国产精品成人va在线观看| 久久精品视频在线观看| 老司机免费视频久久| 伊人久久男人天堂| 久久五月激情| 亚洲国产精品99久久久久久久久| 91久久精品日日躁夜夜躁欧美| 欧美日本精品一区二区三区| 亚洲乱码国产乱码精品精98午夜| 99热精品在线| 国产精品日韩欧美一区二区三区| 亚洲欧美福利一区二区| 久久精品人人做人人综合| 激情欧美日韩| 欧美日韩和欧美的一区二区| 中国成人在线视频| 久久精品在线视频| 亚洲国产精品999| 欧美日韩亚洲高清| 欧美在线资源| 亚洲精品少妇| 久久久999成人| 亚洲人成在线播放| 欧美小视频在线| 久久精品亚洲一区二区三区浴池| 欧美电影免费观看网站| 一区二区三区欧美激情| 国产日韩欧美在线视频观看| 久久亚洲电影| 亚洲深夜激情| 嫩草成人www欧美| 亚洲午夜国产成人av电影男同| 国产免费成人| 欧美成人精品在线| 亚洲欧美国产一区二区三区| 欧美成人激情视频| 亚洲欧美日韩中文视频| 亚洲成色777777在线观看影院| 欧美日韩免费一区二区三区视频| 校园激情久久| 日韩特黄影片| 麻豆精品在线视频| 亚洲影院一区| 亚洲精品中文字幕女同| 国产日韩欧美精品综合| 欧美久久久久久久久久| 久久国产婷婷国产香蕉| 一区二区三区精品视频| 欧美韩日一区二区| 久久精品国产第一区二区三区| 中文国产一区| 亚洲黄色成人| 尤物yw午夜国产精品视频| 国产精品五区| 国产精品久久久久久久久久免费看 | 农村妇女精品| 欧美在线亚洲一区| 亚洲素人在线| 亚洲福利一区|