成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Hprose與WCF在云計算平臺Azure上的對決

開發 后端
本文將為大家講述Hprose與WCF在微軟云計算平臺Azure上的對決,有利于大家更好的理解云計算的精髓。

Windows Azure Platform是一個運行在微軟數據中心的云計算平臺。它包括一個云計算操作系統和一個為開發者提供的服務集合。開發人員創建的應用既可以直接在該平臺中運行,也可以使用該云計算平臺提供的服務。相比較而言,Windows Azure platform延續了微軟傳統軟件平臺的特點,能夠為客戶提供熟悉的開發體驗,用戶已有的許多應用程序都可以相對平滑地遷移到該平臺上運行。另外Windows Azure Platform還可以按照云計算的方式按需擴展,在商業開發時可以節省開發部署的時間和費用。

WCF(Windows Communication Foundation)是一個面向服務編程的綜合分層架構。它使得開發者能夠建立一個跨平臺的安全、可信賴、事務性的解決方案,且能與已有系統兼容協作。

Hprose(High Performance Remote Object Service Engine)是一款高性能跨語言跨平臺的遠程對象服務引擎,它支持眾多語言和平臺,包括主流的.NET、Java、PHP、Python、Ruby、JavaScript、ActionScript、Delphi、FreePascal、Objective-C、ASP、Perl、C++等。通過Hprose可以在這些支持的語言之間實現方便且高效的互通,能夠有效的取代WebService實現跨語言跨平臺的分布式電信級的解決方案。

WCF與Hprose都支持在Windows Azure Platform上運行。下面我們就來對它們在微軟云計算平臺上運行的各個方面做一個細致的比較。

語言支持

微軟的Azure云平臺上提供了直接發布WCF服務的Role,另外也可以通過創建ASP.NET Web Role方式自己添加WCF服務進行發布。但WCF服務只能使用.NET支持的語言(C#或VB.NET)來編寫。

Hprose在微軟的Azure云平臺上則支持使用更多語言來發布服務。除了可以通過ASP.NET Web Role方式發布C#、VB.NET編寫的Hprose服務,還可以通過CGI Web Role方式發布使用PHP編寫的Hprose服務,甚至可以通過Worker Role方式來發布Java編寫的服務。由此可見Hprose可以更充分的發揮微軟的Azure云平臺對多語言支持的功能。在通訊性能上的對比,如圖1所示。

性能

性能圖

上面的圖表是對三個不同服務各調用1000次的時間對比,花費的時間越少,性能越高。由此可見,Hprose在Azure云計算平臺上,以WebRole方式發布的服務,對比WCF來說沒有明顯的優勢,甚至比WCF在Azure上以BasicHttpBinding方式發布的服務還要慢。但是Hprose在Azure上以 WorkerRole方式發布的服務,效率則高出WCF數倍。另外,WCF的BasicHttpBinding方式比WsHttpBinding方式效率高出一倍,這也是為何微軟推薦大家采用BasicHttpBinding方式發布WCF服務的一個原因之一。

數據類型支持

在類型支持上WCF和Hprose各有千秋。對于基本類型、簡單類型、簡單對象,WCF和Hprose都提供支持。

但是對于DataSet這樣的.NET特有類型,則WCF支持,Hprose不支持,因為DataSet在非.NET語言環境下無法使用。

而對于復雜的帶有直接或間接自引用的對象數據,Hprose支持,而WCF不支持。例如下列類型:

  1. public enum Sex {  
  2.         Unknown, Male, Female, InterSex  
  3.     }  
  4.  
  5.     [Serializable]  
  6.     public class User {  
  7.         string name;  
  8.         int age;  
  9.         DateTime birthday;  
  10.         Sex sex;  
  11.         bool married;  
  12.         List<User> friends;  
  13.  
  14.         public string Name {  
  15.             get {  
  16.                 return name;  
  17.             }  
  18.             set {  
  19.                 name = value;  
  20.             }  
  21.         }  
  22.  
  23.         public int Age {  
  24.             get {  
  25.                 return age;  
  26.             }  
  27.             set {  
  28.                 age = value;  
  29.             }  
  30.         }  
  31.  
  32.         public DateTime Birthday {  
  33.             get {  
  34.                 return birthday;  
  35.             }  
  36.             set {  
  37.                 birthday = value;  
  38.             }  
  39.         }  
  40.  
  41.         public bool Married {  
  42.             get {  
  43.                 return married;  
  44.             }  
  45.             set {  
  46.                 married = value;  
  47.             }  
  48.         }  
  49.  
  50.         public Sex Sex {  
  51.             get {  
  52.                 return sex;  
  53.             }  
  54.             set {  
  55.                 sex = value;  
  56.             }  
  57.         }  
  58.  
  59.         public List<User> Friends {  
  60.             get {  
  61.                 return friends;  
  62.             }  
  63.             set {  
  64.                 friends = value;  
  65.             }  
  66.         }  
  67.     }  
  68.  
  69. 當服務方法為:  
  70.         public List<User> GetUsers() {  
  71.             User user = new User();  
  72.             user.Name = "張三";  
  73.             user.Age = 30;  
  74.             user.Birthday = new DateTime(1980, 12, 1);  
  75.             user.Sex = Sex.Male;  
  76.             user.Married = true;  
  77.             User user2 = new User();  
  78.             user2.Name = "李四";  
  79.             user2.Age = 28;  
  80.             user2.Birthday = new DateTime(1982, 2, 18);  
  81.             user2.Sex = Sex.Male;  
  82.             user2.Married = false;  
  83.             User user3 = new User();  
  84.             user3.Name = "王五";  
  85.             user3.Age = 38;  
  86.             user3.Birthday = new DateTime(1972, 6, 14);  
  87.             user3.Sex = Sex.Male;  
  88.             user3.Married = true;  
  89.             User user4 = new User();  
  90.             user4.Name = "趙六";  
  91.             user4.Age = 1;  
  92.             user4.Birthday = new DateTime(2008, 11, 23);  
  93.             user4.Sex = Sex.Male;  
  94.             user4.Married = false;  
  95.  
  96.             // 以下注釋掉的代碼 WCF 不支持,但 Hprose 支持  
  97.             /*  
  98.             user.Friends = new List<User>();  
  99.             user.Friends.Add(user2);  
  100.             user.Friends.Add(user4);  
  101.  
  102.             user2.Friends = new List<User>();  
  103.             user2.Friends.Add(user);  
  104.             user2.Friends.Add(user3);  
  105.  
  106.             user3.Friends = new List<User>();  
  107.             user3.Friends.Add(user2);  
  108.  
  109.             user4.Friends = new List<User>();  
  110.             user4.Friends.Add(user);  
  111.             */ 
  112.  
  113.             List<User> users = new List<User>();  
  114.             users.Add(user);  
  115.             users.Add(user2);  
  116.             users.Add(user3);  
  117.             users.Add(user4);  
  118.             return users;  
  119.         } 

如果將上面注釋掉的代碼取消注釋,則Hprose可以正確發布該服務,并且所有語言的Hprose客戶端都可以正常調用。但如果用WCF來發布它,在用WCF客戶端調用時,服務會崩潰。

因此如果發布的服務僅限于.NET平臺,又非常喜歡傳輸數據集,而且不會傳輸復雜對象的話,那么WCF是個不錯的選擇。而如果您發布的服務是跨語言跨平臺的,而且會傳輸復雜對象(復雜對象在游戲中非常多見)的話,則Hprose將是首先。

Visual Studio集成

WCF和Visual Studio都是微軟的,因此WCF跟Visual Studio有很密切的集成。但是WCF對于Azure平臺來說目前支持的還不算完善,雖然在Visual Studio中可以很方便的開發在Azure運行的WCF服務,但是Azure因為有提供負載平衡的功能,這個功能反而會給WCF服務部署帶來了一點小問題,需要使用一個hotfix并且手動修改配置才能完成服務的正確發布。

Hprose沒有提供任何跟Visual Studio的集成,但是因為其本身使用已足夠簡單,不像WCF那樣對服務需要進行單獨編寫,Hprose可以直接發布現成的類、對象和方法,甚至連.NET中內置的類和方法都可以直接發布為服務。在Visual Studio中發布Azure上的Hprose服務不會有負載平衡帶來的問題。

客戶端比較

WCF客戶端采用代碼生成方式工作,可以使用命令行來生成客戶端代理類,也可以在Visual Studio提供的環境下采用圖形界面來生成客戶端代理類,尤其是在Vistual Studio下使用非常方便。

Hprose客戶端采用動態調用方式工作,無需生成客戶端代理類,但也可以通過自己編寫服務接口方式來創建客戶端服務代理對象。自己編寫服務接口的方式當然沒有像WCF那樣自動生成一樣方便,但卻提供了更多的靈活性,例如你可以在客戶端定義跟服務器端服務不同的接口,只要類型相容,就可以正常調用,而不像WCF那樣對接口類型有嚴格的約束。

WCF和Hprose都支持同步調用和異步調用。WCF的異步調用采用Begin、End方式,從功能上來說比較強,可以異步調用轉同步,但缺點是使用比較繁瑣,對于構建復雜應用來說比較困難。而Hprose的異步調用采用回調方式,從功能上來說不如WCF的異步調用那樣強大,沒有異步調用轉同步的功能,但是優點是使用比較方便,尤其是配合匿名函數或者Lambda表達式使用時,能夠充分發揮必包的優勢,可以輕松構建復雜應用。

在Azure平臺上,不論是WCF客戶端還是Hprose客戶端都可以使用。尤其是Hprose客戶端不但可以在Azure的.NET應用中使用,也可以在Azure支持的其它語言中使用,例如直接在javascript中使用Hprose可以輕松實現跨域調用,配合jquery就可以實現很酷炫的ajax應用了。

總結

Windows Azure Platform為我們提供了一個很棒的云計算平臺,除了可以在上面部署微軟自己的WCF服務以外,對其它語言和服務也提供了很好的支持,如果要基于微軟的云計算平臺開發跨語言跨平臺服務的話,Hprose為我們增加了另一種選擇。

源碼下載:http://files.cnblogs.com/xiaoyin_net/Benchmark.rar

原文標題:WCF與Hprose在微軟云計算平臺Azure上的對決

鏈接:http://www.cnblogs.com/xiaoyin_net/archive/2010/05/27/1744948.html

【編輯推薦】

  1. 簡單Silverlight應用程序五步走
  2. 完美呈現Silverlight各種開發工具包
  3. 錦上添花 Silverlight點亮WinCE R3
  4. 細數2009年Silverlight十大流行應用
  5. Silverlight中連接MySQL數據庫實例詳解
責任編輯:彭凡 來源: 博客園
相關推薦

2012-08-13 09:33:28

Windows AzuAmazonEC2

2010-03-25 09:46:51

云計算

2013-08-29 10:15:08

VMware紅帽云管理平臺

2020-07-30 14:21:37

微軟智能云Azure

2011-03-15 15:43:39

Windows AzuWCF

2010-05-18 09:58:09

云計算Azure微軟

2009-01-08 18:05:27

服務器微軟云計算

2013-01-24 09:55:46

微軟Windows Azu流視頻服務

2013-04-09 10:53:17

Windows Azu云計算教學

2014-09-16 11:40:03

微軟用友Windows Azu

2010-12-16 20:54:07

Windows Azu

2012-05-14 13:27:18

云計算云開發

2010-07-13 09:47:10

微軟云計算Azure

2015-04-30 14:33:35

微軟Build2015云計算Azure云平臺

2009-08-27 11:43:46

ibmdw云計算

2013-10-15 10:44:29

Amazon AWSWindows Azu

2025-02-10 00:00:01

2012-06-07 13:44:54

微軟Azure云計算

2011-03-24 13:02:35

WCF服務角色Azure

2010-04-02 09:42:47

Windows云計算IPAD
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲成人精品一区 | 欧美精品一区二区三区在线播放 | 99精品视频一区二区三区 | 亚洲一区二区中文字幕 | 一区二区三区四区视频 | 国产精品99精品久久免费 | 国产精品美女久久久久久免费 | 国产精品亚洲一区二区三区在线观看 | h在线| 国产色婷婷久久99精品91 | 一区二区三区中文字幕 | 亚洲免费人成在线视频观看 | 一级黄色播放 | 久久久网 | 一二三四在线视频观看社区 | 国产ts一区| 中文字幕在线观看一区 | 亚洲国产成人精品久久久国产成人一区 | 国产精品久久久久久久久久免费 | 男人久久天堂 | 日韩不卡一区二区 | 久久大 | 亚洲成人高清 | 国产99久久久国产精品下药 | 91porn成人精品| 天天干com | 亚洲二区视频 | 在线观看中文字幕视频 | 国产免费一区二区 | 日韩三级一区 | 亚洲综合色站 | 91看国产 | 国产精品毛片久久久久久久 | 午夜爱爱毛片xxxx视频免费看 | 国产欧美一区二区三区国产幕精品 | 99精品在线观看 | 一区二区成人 | 91视频精选 | 国产一区二区电影 | 一区二区三区免费观看 | 蜜桃五月天 |