<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12
      代碼改變世界

      【C#|.NET】長話短說 分布式通信方案綜合測評

      2011-12-27 16:56  熬夜的蟲子  閱讀(4557)  評論(6)    收藏  舉報

      如果你應聘互聯網企業的架構師 分布式解決方案屬于必問環節 因為流行SOA 關于SOA就不廢話了 網上資源很多 重視4個字“基于消息”

      本篇只測評大家項目中常用的幾種

      Remoting(TCP,HTTP,IPC)

      WCF(basicHttpBinding,netTcpBinding)

      Hessian

      MSMQ

      WebService

      ......


      環境介紹

      客戶機 windows Xp   服務器 windows2003(虛擬機)

      帶寬2M

      測試環境和線上環境差距比較大 我們看相對性就可以了

      所有方案基于相同遠程對象

          public class DtoClass : MarshalByRefObject
          {
              public static Message GetMessageInfo(string param1, int param2, bool param3)
              {
                  var dto = new Message {Param1 = param1, Param2 = param2, Param3 = param3};
                  return dto;
              }
      
          }
      
          [Serializable]
          public class Message
          {
              public string Param1 { get; set; }
              public int Param2 { get; set; }
              public bool Param3 { get; set; }
      
          }
      
          public interface IMaoyaTest
          {
              Message GetDto(string param1, int param2, bool param3);
          }
      
          [ServiceContract]
          public interface IWcfMaoyaTest
          {
              [OperationContract]
              Message GetDto(string param1, int param2, bool param3);
          }
      

      不同的通信方案 客戶端請求相同的對象

      例如  remoting

        public Message TcpSingleCall()
              {
                  var proxy = (IMaoyaTest)Activator.GetObject(typeof(IMaoyaTest), "tcp://192.168.234.129:8001/MaoyaTestURL");
                  return proxy.GetDto("chongzi", 10, true);
      
              }
      

       hsssian

      public Message HessianTest()
              {
                  var factory = new CHessianProxyFactory("userName", "password");
                  const string url = "http://192.168.234.129/HessianService.hessian"; 
                  var hessianinstance = (IMaoyaTest)factory.Create(typeof(IMaoyaTest), url);
                  return hessianinstance.GetDto("chongzi", 10, true);
                
              }
      

       

      不同的通信方案對遠程對象進行不同的處理

      例如 remoting

       public class RemotingTest : MarshalByRefObject,IMaoyaTest
          {
              public Message GetDto(string param1, int param2, bool param3)
              {
                  return DtoClass.GetMessageInfo("remoting:"+param1,param2+1,param3);
              }
          }
      

       hsssian

       public class MaoyaService : CHessianHandler, IMaoyaTest
          {
              public Message GetDto(string param1, int param2, bool param3)
              {
                  return DtoClass.GetMessageInfo("HessianService:" + param1, param2 + 3, param3);
              }
          }
      

       


       Remoting

      NET Framework 遠程處理。這種技術可用于與呼叫中心應用程序進行通信,因為二者都是建立在 .NET Framework 之上的。遠程處理專門為緊密耦合的 .NET 到 .NET 通信而設計,因此它為本地網絡中的應用程序提供了無縫而直接的開發體驗。

      Remoting支持3種通道TCP HTTP IPC

      Remoting支持2種激活方式服務端激活與客戶端激活,服務端激活分為singlecall,sington區別為是否有狀態,sington給每個客戶端分配同一個對象實例,sington有狀態。客戶端激活為在激活每個對象實例的時候,會給每個客戶端激活的類型指派一個URI。其與singcall的主要區別在于客戶端激活方式對于對象周期的管理以及有狀態。

      了解使用場景,我們更關心性能。

      TCP:Transmission Control Protocol 傳輸控制協議TCP是一種面向連接(連接導向)的、可靠的、基于字節流的運輸層(Transport layer)通信協議

      HTTP(HyperText Transport Protocol)是超文本傳輸協議的縮寫,HTTP協議采用了請求/響應模型。客戶端向服務器發送一個請求,請求頭包含請求的方法、URL、協議版本、以及包含請求修飾符、客戶信息和內容的類似于MIME的消息結構。服務器以一個狀態行作為響應,響應的內容包括消息協議的版本,成功或者錯誤編碼加上包含服務器信息、實體元信息以及可能的實體內容。

      IPCChannel是.NET Framework 2.0 里面新增的,它使用 Windows 進程間通信 (IPC) 系統在同一計算機上的應用程序域之間傳輸消息。在同一計算機上的應用程序域之間進行通信時,IPC 信道比 TCP 或 HTTP 信道要快得多。但是IPC只在本機應用之間通信。所以,在客戶端和服務端在同一臺機器時,我們可以通過注冊IPCChannel來提高Remoting的性能。但如果客戶端和服務端不在同一臺機器時,我們不能注冊IPCChannel。

      remoting總結

      優點(相對于其他分布式方案) tcp方式效率相對較高 ipc王道  可以自定義宿主

      缺點  平臺限制

      應用場景(實例) 統一新聞系統中新建新聞的異步自動審核、邏輯報表 等  使用remoting可以有效分擔服務器硬件壓力并且不需要對外服務開放 各個模塊高效 緊密合作


      WCF

      Windows Communication Foundation (WCF) 是 Microsoft 為構建面向服務的應用程序而提供的統一編程模型。借助這一模型,開發人員可以構建既能跨平臺與現有投資集成又能與現有投資交互的安全、可靠的事務處理解決方案。

      wcf是WebService,Remoting,...之上的一層抽象,讓程序員們以一種統一的方式去編寫基于WebService或Remoting。。。的程序,而且它們之間的切換很簡單,只需要改一下配置。 也就是說,開始服務以WS向外提供,因為需求改變,改為Remoting向外提供,只需要修改配置。WCF封裝了各種不同實現的具體細節。WCF服務元數據是WCF服務的核心部分服務地址(Address)、綁定(通信協議Binding)、契約(服務、操作、數據Contract)的原始描述信息。

      我們這里只測試2中常用的case

      BasicHttpBinding不支持可靠性,BasicHttpBinding面向舊的ASMX Web服務,是不具有可靠性的;

      NetTcpBinding 支持可靠性,顯然使用TCP傳輸數據。以及各種WS綁定,默認情況下并不支持可靠性,允許啟用;    

      其他協議:

      NetMsmqBinding不支持可靠性,MSMQ協議,使用消息隊列,針對斷開調用,不存在傳輸會話;             

      MsmqIntegrationBinding不支持可靠性;支持WCF與MSMQ協議通信,不存在傳輸會話;

      NetPeerTcpBinding不支持可靠性。NetPeerTcpBinding則為廣播場景設計。

      WSDualHttpBinding支持可靠性的,建立兩個http會話通道,保持回調通道,確保基于HTTP協議的客戶端存在;

      NetNamedPipeBinding綁定總是擁有一個確定的從客戶端到服務的跳數,因而它的可靠性是綁定固有的;

      WSFederationHttpBinding支持可靠性,支持聯邦通信協議,支持在多個安全區域進行安全會話。

      WCF 總結

      優點 兼眾家之長 易用性、靈活性、易調試性、易部署

      缺點 和騰訊的口碑差不多 論tcp 比起remoting 你效率沒人高 論http 比起webservice 你沒人方便

      應用場景(實例) 事件調度中心 作為soa最常用的工具 wcf市場還是蠻大的


      Hessian

      這貨java程序員用的比較多 c#程序員估計有點茫然,這是神馬。傳輸二進制?和remoting比,自然比不上。關鍵是hessian是基于http協議,不過不是用的soap協議,咱們還是和webservice比吧。

      Hessian是一個輕量級的remoting onhttp工具,使用簡單的方法提供了RMI的功能. 相比WebService,Hessian更簡單、快捷。采用的是二進制RPC協議,因為采用的是二進制協議,所以它很適合于發送二進制數據。

      難怪c#沒人用了......

      hessian的處理過程 由客戶端、序列化到輸出流、遠程方法(服務端)、序列化到輸出流、客戶端讀取流、輸出。

      優點  開源 輕量級 可以自己擴展  相對webservice可以自定義宿主 減輕iis壓力

      缺點 目前的版本 性能比較差

      應用場景  一些開源軟件 框架


      MSMQ

      Message Queue(微軟消息隊列)是在多個不同的應用之間實現相互通信的一種異步傳輸模式,相互通信的應用可以分布于同一臺機器上,也可以分布于相連的網絡空間中的任一位置。它的實現原理是:消息的發送者把自己想要發送的信息放入一個容器中(我們稱之為Message),然后把它保存至一個系統公用空間的消息隊列(Message Queue)中;本地或者是異地的消息接收程序再從該隊列中取出發給它的消息進行處理。

      用于與基于 Windows 的合作伙伴應用程序進行通信,這些應用程序對數據傳送、工作量分離以及應用程序生存期均要求有保證。消息隊列提供持久穩定的消息傳送,這通常是間歇式連接的應用程序的最佳解決方案。

      優點: 穩定性 消息優先級 脫機能力 安全性

      缺點:比remoting更大的局限性 如果是遠程msmq 限于安全性 服務器需要在同一個域

      應用場景:(實例) 郵件系統 站內信系統


      WebService

      這個你們都懂的 不說了 直接看測試結果

      優點: 跨平臺

      缺點: 效率相對比較低

      應用場景: 很多 大家最常用的方式了 例如商城贈品服務等等


      其它

      Enterprise Service,wse等等不一一列舉了 有空大家自己玩了


      本篇到此 希望對大家有幫助

      主站蜘蛛池模板: 7m精品福利视频导航| 黄男女激情一区二区三区| 国产精品亚洲一区二区在| 国产精品深夜福利免费观看 | 河间市| 国产在线一区二区在线视频| 97久久综合亚洲色hezyo| 精品人妻久久久久久888| 91色老久久精品偷偷蜜臀| 国产一区二区三区免费观看| 精品国产欧美一区二区三区在线 | 久久99精品国产99久久6尤物| 亚洲av成人网在线观看| 国产av中文字幕精品| 久久久无码一区二区三区| 少妇人妻av毛片在线看| 久久亚洲精品中文字幕馆| 欧美日韩国产码高清| 91热在线精品国产一区| 92精品国产自产在线观看481页| 成人一区二区三区在线午夜| 国产精自产拍久久久久久蜜| 国产成人亚洲日韩欧美| 大又大又粗又硬又爽少妇毛片| 亚洲av无码牛牛影视在线二区| 成人又黄又爽又色的视频| 中文日产乱幕九区无线码| 一区二区亚洲人妻av| 亚洲综合无码明星蕉在线视频| 国产成人精品中文字幕| 北岛玲中文字幕人妻系列| 最新国产精品亚洲| 亚洲一区二区三区av无码| 久久精品国产一区二区蜜芽| 日日爽日日操| 国产短视频精品一区二区| 人妻中文字幕不卡精品| 大地资源免费视频观看| 午夜福利偷拍国语对白| 亚洲成av人片乱码色午夜| 国产成人无码|