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

Hprose與WCF在云計(jì)算平臺(tái)Azure上的對(duì)決

開發(fā) 后端
本文將為大家講述Hprose與WCF在微軟云計(jì)算平臺(tái)Azure上的對(duì)決,有利于大家更好的理解云計(jì)算的精髓。

Windows Azure Platform是一個(gè)運(yùn)行在微軟數(shù)據(jù)中心的云計(jì)算平臺(tái)。它包括一個(gè)云計(jì)算操作系統(tǒng)和一個(gè)為開發(fā)者提供的服務(wù)集合。開發(fā)人員創(chuàng)建的應(yīng)用既可以直接在該平臺(tái)中運(yùn)行,也可以使用該云計(jì)算平臺(tái)提供的服務(wù)。相比較而言,Windows Azure platform延續(xù)了微軟傳統(tǒng)軟件平臺(tái)的特點(diǎn),能夠?yàn)榭蛻籼峁┦煜さ拈_發(fā)體驗(yàn),用戶已有的許多應(yīng)用程序都可以相對(duì)平滑地遷移到該平臺(tái)上運(yùn)行。另外Windows Azure Platform還可以按照云計(jì)算的方式按需擴(kuò)展,在商業(yè)開發(fā)時(shí)可以節(jié)省開發(fā)部署的時(shí)間和費(fèi)用。

WCF(Windows Communication Foundation)是一個(gè)面向服務(wù)編程的綜合分層架構(gòu)。它使得開發(fā)者能夠建立一個(gè)跨平臺(tái)的安全、可信賴、事務(wù)性的解決方案,且能與已有系統(tǒng)兼容協(xié)作。

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

WCF與Hprose都支持在Windows Azure Platform上運(yùn)行。下面我們就來對(duì)它們?cè)谖④浽朴?jì)算平臺(tái)上運(yùn)行的各個(gè)方面做一個(gè)細(xì)致的比較。

語言支持

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

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

性能

性能圖

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

數(shù)據(jù)類型支持

在類型支持上WCF和Hprose各有千秋。對(duì)于基本類型、簡(jiǎn)單類型、簡(jiǎn)單對(duì)象,WCF和Hprose都提供支持。

但是對(duì)于DataSet這樣的.NET特有類型,則WCF支持,Hprose不支持,因?yàn)镈ataSet在非.NET語言環(huán)境下無法使用。

而對(duì)于復(fù)雜的帶有直接或間接自引用的對(duì)象數(shù)據(jù),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. 當(dāng)服務(wù)方法為:  
  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可以正確發(fā)布該服務(wù),并且所有語言的Hprose客戶端都可以正常調(diào)用。但如果用WCF來發(fā)布它,在用WCF客戶端調(diào)用時(shí),服務(wù)會(huì)崩潰。

因此如果發(fā)布的服務(wù)僅限于.NET平臺(tái),又非常喜歡傳輸數(shù)據(jù)集,而且不會(huì)傳輸復(fù)雜對(duì)象的話,那么WCF是個(gè)不錯(cuò)的選擇。而如果您發(fā)布的服務(wù)是跨語言跨平臺(tái)的,而且會(huì)傳輸復(fù)雜對(duì)象(復(fù)雜對(duì)象在游戲中非常多見)的話,則Hprose將是首先。

Visual Studio集成

WCF和Visual Studio都是微軟的,因此WCF跟Visual Studio有很密切的集成。但是WCF對(duì)于Azure平臺(tái)來說目前支持的還不算完善,雖然在Visual Studio中可以很方便的開發(fā)在Azure運(yùn)行的WCF服務(wù),但是Azure因?yàn)橛刑峁┴?fù)載平衡的功能,這個(gè)功能反而會(huì)給WCF服務(wù)部署帶來了一點(diǎn)小問題,需要使用一個(gè)hotfix并且手動(dòng)修改配置才能完成服務(wù)的正確發(fā)布。

Hprose沒有提供任何跟Visual Studio的集成,但是因?yàn)槠浔旧硎褂靡炎銐蚝?jiǎn)單,不像WCF那樣對(duì)服務(wù)需要進(jìn)行單獨(dú)編寫,Hprose可以直接發(fā)布現(xiàn)成的類、對(duì)象和方法,甚至連.NET中內(nèi)置的類和方法都可以直接發(fā)布為服務(wù)。在Visual Studio中發(fā)布Azure上的Hprose服務(wù)不會(huì)有負(fù)載平衡帶來的問題。

客戶端比較

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

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

WCF和Hprose都支持同步調(diào)用和異步調(diào)用。WCF的異步調(diào)用采用Begin、End方式,從功能上來說比較強(qiáng),可以異步調(diào)用轉(zhuǎn)同步,但缺點(diǎn)是使用比較繁瑣,對(duì)于構(gòu)建復(fù)雜應(yīng)用來說比較困難。而Hprose的異步調(diào)用采用回調(diào)方式,從功能上來說不如WCF的異步調(diào)用那樣強(qiáng)大,沒有異步調(diào)用轉(zhuǎn)同步的功能,但是優(yōu)點(diǎn)是使用比較方便,尤其是配合匿名函數(shù)或者Lambda表達(dá)式使用時(shí),能夠充分發(fā)揮必包的優(yōu)勢(shì),可以輕松構(gòu)建復(fù)雜應(yīng)用。

在Azure平臺(tái)上,不論是WCF客戶端還是Hprose客戶端都可以使用。尤其是Hprose客戶端不但可以在Azure的.NET應(yīng)用中使用,也可以在Azure支持的其它語言中使用,例如直接在javascript中使用Hprose可以輕松實(shí)現(xiàn)跨域調(diào)用,配合jquery就可以實(shí)現(xiàn)很酷炫的ajax應(yīng)用了。

總結(jié)

Windows Azure Platform為我們提供了一個(gè)很棒的云計(jì)算平臺(tái),除了可以在上面部署微軟自己的WCF服務(wù)以外,對(duì)其它語言和服務(wù)也提供了很好的支持,如果要基于微軟的云計(jì)算平臺(tái)開發(fā)跨語言跨平臺(tái)服務(wù)的話,Hprose為我們?cè)黾恿肆硪环N選擇。

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

原文標(biāo)題:WCF與Hprose在微軟云計(jì)算平臺(tái)Azure上的對(duì)決

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

【編輯推薦】

  1. 簡(jiǎn)單Silverlight應(yīng)用程序五步走
  2. 完美呈現(xiàn)Silverlight各種開發(fā)工具包
  3. 錦上添花 Silverlight點(diǎn)亮WinCE R3
  4. 細(xì)數(shù)2009年Silverlight十大流行應(yīng)用
  5. Silverlight中連接MySQL數(shù)據(jù)庫(kù)實(shí)例詳解
責(zé)任編輯:彭凡 來源: 博客園
相關(guān)推薦

2012-08-13 09:33:28

Windows AzuAmazonEC2

2010-03-25 09:46:51

云計(jì)算

2013-08-29 10:15:08

VMware紅帽云管理平臺(tái)

2020-07-30 14:21:37

微軟智能云Azure

2010-05-18 09:58:09

云計(jì)算Azure微軟

2009-01-08 18:05:27

服務(wù)器微軟云計(jì)算

2011-03-15 15:43:39

Windows AzuWCF

2013-01-24 09:55:46

微軟Windows Azu流視頻服務(wù)

2013-04-09 10:53:17

Windows Azu云計(jì)算教學(xué)

2014-09-16 11:40:03

微軟用友Windows Azu

2010-12-16 20:54:07

Windows Azu

2012-05-14 13:27:18

云計(jì)算云開發(fā)

2010-07-13 09:47:10

微軟云計(jì)算Azure

2009-08-27 11:43:46

ibmdw云計(jì)算

2015-04-30 14:33:35

微軟Build2015云計(jì)算Azure云平臺(tái)

2013-10-15 10:44:29

Amazon AWSWindows Azu

2025-02-10 00:00:01

2011-03-24 13:02:35

WCF服務(wù)角色Azure

2012-11-12 09:44:06

Windows Azu云服務(wù)PaaS

2012-06-07 13:44:54

微軟Azure云計(jì)算
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 无人区国产成人久久三区 | 欧美日韩中文在线 | 人妖videosex高潮另类 | 国产精品一区一区 | 欧美无乱码久久久免费午夜一区 | 亚洲欧洲综合av | 在线一区二区国产 | 九九热在线观看视频 | 亚洲三区在线 | 三级免费毛片 | 天堂一区在线观看 | 在线精品亚洲欧美日韩国产 | 国产在线精品一区二区三区 | 欧美xxxx黑人又粗又长 | 伦理片97| 日韩一区二区三区在线观看 | 亚洲精品乱码久久久久久9色 | 国产综合在线视频 | 亚洲aⅴ| 99精品欧美一区二区三区综合在线 | 国产传媒视频在线观看 | 91免费入口 | 91麻豆精品一区二区三区 | 啪啪精品 | 成人免费av在线 | av喷水| 亚洲欧美日韩电影 | 日本三级电影在线免费观看 | 一区二区中文字幕 | 国产精品久久久久久久7电影 | 日韩在线小视频 | 亚洲人人舔人人 | 二区av| 91大神新作在线观看 | 做a视频 | 视频一区在线播放 | 欧美日韩中文字幕在线 | 精品欧美一区二区在线观看视频 | 成人一区在线观看 | 久久久久成人精品亚洲国产 | 不卡一区二区三区四区 |