.NET Remoting 使開發者能跨應用程式域(AppDomain)使用遠端物件。兩種傳遞模式:
TcpChannel channel = new TcpChannel(8065); // 指定埠
ChannelServices.RegisterChannel(channel);
Type objType = new MyCoolObject().GetType();
RemotingConfiguration.RegisterWellKnownServiceType(
objType, "MyCoolObject", WellKnownObjectMode.Singleton
);
| 模式 | 物件建立時機 | 生命週期 | 適用場景 |
|---|---|---|---|
Singleton | 首次客戶端呼叫 | 單一實例共享,直到關閉 | 有狀態服務、共享資源 |
SingleCall | 每次客戶端呼叫 | 呼叫結束即銷毀 | 無狀態、高併發、可擴展 |
SingleCall 模式下,客戶端連線不會隨呼叫結束中斷,僅物件實例被銷毀。
public class MyCoolObject : MarshalByRefObject { // 繼承此類才能按參考傳遞
public string Hello(string name) {
return "Hello, " + name + " from server at " + DateTime.Now;
}
}
繼承 MarshalByRefObject 是按參考傳遞的必要條件;按值傳遞則標記 [Serializable] 且不繼承此類。