2009-01-05 14 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