2009-01-05 40 views
0

有些東西我只是沒有得到關於.NET遠程處理。嗯,其實兩件事情:使用.NET Remoting註冊對象_instances_而不是_types_?

  1. 爲什麼強調回到繼承從MarshalByRef代替ALA原有的COM風格的接口(我喜歡)班?

  2. 爲什麼.NET遠程處理總是迫使您有效地創建某種對象池,而不是讓您將特定的實例與URL相關聯?

Server代碼:

RemotingConfiguration.RegisterWellKnownServiceType(typeof(RemotingTypes.Server), "MyURL", WellKnownObjectMode.Singleton); 

客戶端代碼:

RemotingConfiguration.RegisterWellKnownServiceType(typeof(RemotingTypes.Server), "MyURL", WellKnownObjectMode.Singleton); 

但是假設我要創建 「服務器」 比如我自己,然後就其綁定到一個終點?

RemotingTypes.Server myInstance = new RemotingTypes.Server(); 

現在是什麼?我如何將「myInstance」與URL「MyURL」關聯?

回答

1

尼克答案的問題:我想知道如何將已經創建的實例與URL相關聯,而不是如何讓.NET遠程處理爲我做這件事(我創建的某個實例沒有例如默認的構造函數)。

我希望有會是解釋「理念」的背後.NET遠程一些史詩般的響應,以及爲什麼它有着千絲萬縷的耦合到類型系統...

我已經得出結論,而不是簡單的是: a)這是因爲.NET Remoting很糟糕。不要使用它 b)使用WCF而不是

+0

我不知道它是什麼關於遠程處理,導致你轉儲批發。您可以使用接口來訪問您的遠程對象(實現必須是MarshalByRef對象),如您在1中所要求的那樣。012herLearning Remoting有點像在WPF世界中學習Winforms。或者也許ASP與ASP.NET! – nickd 2009-01-09 15:41:43

0

我不能真正解決第1點和第2點問題,因爲我沒有COM經驗,我不明白2,但要回答您的具體最終問題,如果您使用system.Ativator類,則可以這樣做:

RemotingTypes.Server myInstance = (RemotingTypes.Server) Activator.GetObject(typeof(RemotingTypes.Server), MyUrl); 

這意味着你必須在施工時綁定它,但它都是客戶端。

請參閱我的similar question