使用.NET远程注册对象_instances_而不是_types_?

时间:2009-01-05 10:34:03

标签: .net com remoting

我还没有得到关于.NET远程处理的东西。嗯,实际上有两件事:

  1. 为什么重点放在继承MarshalByRef的类而不是原始COM样式(我喜欢的)接口?

  2. 为什么.NET远程处理总是强迫您有效地创建某种对象池,而不是允许您将特定的实例与URL相关联?

  3. 服务器代码:

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

    客户代码:

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

    但是假设我想自己创建“Server”实例,然后将其绑定到端点?

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

    现在怎么办?如何将“myInstance”与URL“MyURL”相关联?

2 个答案:

答案 0 :(得分:1)

Nickd回答的问题:我想知道如何将已创建的实例与URL相关联,而不是如何让.NET远程处理为我这样做(我创建的一些实例没有默认值)构造函数,例如)。

我希望能有一些史诗般的回应来解释.NET远程处理背后的“哲学”,以及为什么它与类型系统有着千丝万缕的联系......

我所得出的结论仅仅是: a)这是因为.NET远程处理很糟糕。不要使用它 b)改为使用WCF

答案 1 :(得分:0)

我无法真正解决第1点和第2点,因为我没有COM的经验而且我不理解2,但是要回答您的具体最终问题,如果您使用system.Activator类,您可以这样做:

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

这意味着你必须在施工时绑定它,但它都是客户端。

查看我的similar question