首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 遠端執行與分散式計算:Remoting 基礎與伺服器建立(一)

     編輯:關於C語言

遠端物件核心概念

.NET Remoting 使開發者能跨應用程式域(AppDomain)使用遠端物件。兩種傳遞模式:

  • 按參考傳遞: 物件駐留於伺服器應用程式域,客戶端持有 Proxy,方法呼叫透過通道跨域轉發,物件狀態維持於伺服器。
  • 按值傳遞: 物件完整序列化傳輸至客戶端應用程式域,在本地執行,原伺服器端物件不再參與。

建立物件主機(伺服器端)

  1. 建立通道: TCP 通道效能佳、適合區域網;HTTP 通道穿透防火牆、適合 Internet。
    TcpChannel channel = new TcpChannel(8065); // 指定埠
    ChannelServices.RegisterChannel(channel);
    
  2. 註冊 Well-Known 服務型別:
    
    Type objType = new MyCoolObject().GetType();
    RemotingConfiguration.RegisterWellKnownServiceType(
      objType, "MyCoolObject", WellKnownObjectMode.Singleton
    );
    

兩種啟動模式

模式物件建立時機生命週期適用場景
Singleton首次客戶端呼叫單一實例共享,直到關閉有狀態服務、共享資源
SingleCall每次客戶端呼叫呼叫結束即銷毀無狀態、高併發、可擴展

SingleCall 模式下,客戶端連線不會隨呼叫結束中斷,僅物件實例被銷毀。

MyCoolObject 範例類別


public class MyCoolObject : MarshalByRefObject { // 繼承此類才能按參考傳遞
  public string Hello(string name) {
    return "Hello, " + name + " from server at " + DateTime.Now;
  }
}

繼承 MarshalByRefObject 是按參考傳遞的必要條件;按值傳遞則標記 [Serializable] 且不繼承此類。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved