項目管理者聯盟 | 中國工程管理網 | 中國研發管理網   會員中心 資料庫 項目管理者聯盟論壇 項目管理者聯盟博客

PMI-ACP®認證

適合敏捷開發項目
敏捷項目管理最佳實踐

1月開課 | 實戰課

PMI-PBA®認證

重視項目商業分析
商業價值與需求分析能力

4月開課 | 新聞

NPDP®認證

產品管理國際認證
全球產品管理最佳實踐

北京 | 上海 | 感受

PMP®認證

單項目管理經典指南
年輕項目經理首選

北京 | 杭州 | 網絡

PgMP®認證

大型復雜項目全球標準
定位高級項目管理層

20年計劃 | 北京 | 上海

PfMP®認證

鏈接戰略與項目
實現組織資源投資回報

2019年首期班 上海

軟考項目管理

信息系統項目管理師
系統集成項目管理工程師

計劃 | 報名 | 經驗

項目管理者聯盟圈子
志同道合,朋友再聚首
項目管理者聯盟PMP培訓
會員· 圈友
登錄ID
密   碼
 
圈子信息
圈名:深圳IT項目管理
加入方式: 允許任何人加入

深圳IT項目管理

打造深圳市IT業的項目管理交流平臺

圈主:lshcom    管理員:暫無管理員   
成員數:162
主題數:279
排名19
通訊錄
圈友列表
加入本圈
管理本圈
 
話題區 投票區 資料區 精華區
標題:軟件系統開發中的數據交換協議
樓主

fayjie
PMB:40955
省份:四川省
行業:工程設計安裝
注冊:2009/12/18
  
  
在很多地方都有“數據交換”這個概念,本文所說的“數據交換” 是指在計算機網絡中,一個系統把數據傳遞給另外一個系統。這非常類似于一個人要告訴另外一個人一件事情。
  當一個人要把一件事情告訴另外一個人的時候,我們可以通過電話、郵件、短信、IM工具或者當面說的方式來交流。這種方式類似于系統數據交換要通過 tcp、udp、管道等等的方式實現。當兩個人交流的時候,我們需要一種共同的語言才能明白對方的意思,同樣的,兩個系統要交換數據,也需要定義一種雙方都明白的協議,我們稱為“數據交換協議”。
  數據交換協議
  數據交換協議的目的是讓兩個系統進行正確的數據交互。所以幾乎各種開發語言都提供了方便使用的數據交換功能。比如說使用JAVA語言的開發的系統使用MySQL數據庫存儲數據,就是通過MySQL數據交換協議跟MySQL做數據交換;通過JAVA的RMI可以方便的做跨機器的分布式數據交換,RMI也就是一種數據交換協議。
  一般我們在不同的系統、不同的語言之間交換數據的時候,我們會選擇一種通用的交換協議或者自己定義一種容易使用的交換協議。 WebService曾經非常流行, 在Web 2.0時代,輕量級的REST協議又開始受到追捧。那么究竟在我們的系統中應該選擇什么樣的協議呢?
  如何選擇數據交換協議
  選擇什么樣的協議跟我們的應用場景有很大的關系。我們需要考慮我們開發是否方便、接口是否容易發布、是否需要考慮帶寬占用成本、序列化和反序列化的性能、接口協議的擴展性等等。下面我們看下幾個比較常用的交換協議實現。
協議 實現 跨語言 性能 傳輸量 RPC
xml 廣泛 幾乎所有 低 很大 N(可實現)
json 廣泛 大量 一般 一般 N(可實現)
php serialize PHPRPC 大量 一般 一般 Y
hessian hessian 大量 一般 小 Y
thrift thrift 大量 高 小 Y
protobuf protobuf 大量 高 小 N(可實現)
ice ice 大量 高 小 Y
avro Apache Avro 少量 高 小 Y
messagepack messagepack 大量 高 小 Y
  上面表格列出了一些常用數據交換協議的一些特性的比較。這里并沒有比較好壞,只是想說明不同數據交換協議是有區別的,所以我們需要在我們的應用場景中進行選擇。
  開放式
  像微博,SNS這種開放平臺、對靜態html頁面提供javascript接口調用的系統都屬于這種類型 。這種類型的特點是:
調用方不完全可控,而且是針對公網的,你可能不知道是誰、是什么語言、是什么方式在調用你提供的數據接口;
接口訪問量一般都非常大,要求具有很高的性能和吞吐量;
需要考慮安全問題,外部提交的數據可能不是合法的。
  所以在這種情況下,需要考慮數據傳輸的帶寬消耗和數據交換協議的易用性,以及多語言支持程度。以前對于html頁面使用的javascript接口調用一般都使用XML格式,最近幾年幾乎都轉成了json格式了,因為json傳輸量更小,比XML更加容易使用。 而對于開放平臺,由于使用的場景很多,所以需要提供多種交換協議格式。基本上都會提供XML和json。為了提高平臺本身的性能和客戶端的性能,也可以提供protobuf這種二進制交換協議并且增加壓縮支持,以節省帶寬傳輸和解析的性能消耗。
  內部服務
  對于一個大型系統來說,內部服務的數據交換無處不在。從最基本和常見的數據庫數據交換、memcached緩存數據交換、消息隊列的數據交換到系統之間使用的RPC服務框架等等,都可以算作內部服務的數據交換。內部服務的特點是不用考慮防火墻,不對外開放,速度快(基本無帶寬成本)。
  內部服務的數據交換協議的選擇空間非常大,一般需要考慮:
數據交換協議的性能
是否需要跨語言支持
數據交換協議的消息體大小
  持久化存儲
  對于持久化存儲來說,每一種數據交換協議其實都可以實現。一般需要根據應用場景考慮:
是否人工可閱讀
存儲的空間消耗
序列化和反序列化的性能
是否經過壓縮
  跨語言
  假設我們的網站前端頁面展示層使用PHP語言開發,中間業務邏輯使用JAVA語言開發,那么就涉及到跨語言數據交換的問題。只要系統不是單純的使用一種語言,那么就必須考慮這個問題。事實上,考慮未來的擴展和需求變化問題,也最好考慮跨語言的數據交互協議。
  數據交換協議可升級
  在選擇數據交換協議的時候,我們同樣需要考慮類似于數據庫表的?schema設計時的擴展問題。比如一個提供用戶信息的數據交換協議接口,現在包含用戶名、性別、住址的信息,在升級過程中,增加了一個最后登錄的IP信息。如果不考慮數據交換協議升級帶來的影響,很可能會導致以前的客戶端出現異常或者舊的數據無法正確解析的問題。
  兼容協議的巧用
  兼容協議的巧用非常有用,新產品兼容提供現有成熟的數據交換協議,可以降低使用門檻和產品的開發速度。比如新浪開源的memcacheQ就使用了memcached協議。
  總結
  數據交換協議的各種通用開源實現非常多,數據交換協議只是一個非常寬泛的說法,其實只要實現了數據的序列化和反序列化 ,那么就可以說是一個可以交換數據的協議。數據交換協議的性能其實就是序列化和反序列化的性能,如果加上RPC,那么跟RPC實現本身的性能也有非常大的關系。
  我的新浪微博@sunli1223 ,歡迎與我討論。
  參考鏈接:
java序列化和反序列化性能比較:https://github.com/eishay/jvm-serializers/wiki
Java跨語言調用實現方案 http://rdc.taobao.com/team/jm/archives/389
回復 | 引用 發表時間:2014/1/22 16:20:16

偶然
PMB:29
省份:江蘇省
行業:綜合應用
注冊:2014/6/5
  
  
標題:Re:軟件系統開發中的數據交換協議
1 樓
不錯!以后或許能借鑒點!
回復 | 引用    回復時間:2014/6/5 16:12:21

sytm2014
PMB:45
省份:遼寧省
行業:IT軟件
注冊:2014/5/30
  
  
標題:Re:軟件系統開發中的數據交換協議
2 樓
數據交換協議的目的是讓兩個系統進行正確的數據交互。所以幾乎各種開發語言都提供了方便使用的數據交換功能。比如說使用JAVA語言的開發的系統使用 MySQL數據庫存儲數據,就是通過MySQL數據交換協議跟MySQL做數據交換;通過JAVA的RMI可以方便的做跨機器的分布式數據交換,RMI也就是一種數據交換協議。
一般我們在不同的系統、不同的語言之間交換數據的時候,我們會選擇一種通用的交換協議或者自己定義一種容易使用的交換協議。 WebService曾經非常流行, 在Web 2.0時代,輕量級的REST協議又開始受到追捧。
www.sytm.net/dingwei
回復 | 引用    回復時間:2014/6/19 10:08:53

zhj375772132
PMB:28
省份:北京市
行業:生產制造
注冊:2014/3/4
  
  
標題:Re:軟件系統開發中的數據交換協議
3 樓
rgegerg
回復 | 引用    回復時間:2015/4/9 1:50:35

zhj375772132
PMB:28
省份:北京市
行業:生產制造
注冊:2014/3/4
  
  
標題:Re:軟件系統開發中的數據交換協議
4 樓
rgerg
回復 | 引用    回復時間:2015/4/9 1:50:40

xtroger
PMB:24
省份:廣東省
行業:生產制造
注冊:2017/2/17
  
  
標題:Re:軟件系統開發中的數據交換協議
5 樓
分享有益,多謝借鑒
回復 | 引用    回復時間:2017/2/17 16:59:37
分頁:1/1 共5條 首頁 上一頁 下一頁 尾頁 查看頁 
!  您尚未登錄,不能回復主題。    現在 登錄  注冊
關于聯盟 | VIP會員 | 培訓服務 | PMP認證 | PgMP認證 | 刊物出版 | 沙龍會議 | 人才服務 | 廣告投放 | 聯系我們 | 友情鏈接
建設運營:共創時網絡
版權所有 京ICP證070584號 BBS業務許可2007第353號
猴子基诺客服
7码怎么倍投可以稳赚 时时彩 科乐麻将官方下载 邵阳市大米边碾边卖赚钱吗 免费农场赚人民币游戏 000600股票分析 广东快乐十分现场开奖 188足球即时比分网 时时彩怎么买稳赚不赔 炸金花豹子翻倍吗 河北的11选五开奖结果 天天捕鱼赢手机版下载 到底有没有北京时时开奖结果 可以开房间的炸金花游戏 下载微信都有什么软件可以赚钱的软件 心悦吉林手机麻将