【问题标题】:.NET Remoting: How to active (remote) object on the server right away?.NET Remoting:如何立即在服务器上激活(远程)对象?
【发布时间】:2011-01-20 22:06:59
【问题描述】:

我有一个托管在窗口服务中的远程对象,它可能需要一些时间来初始化。问题是第一个客户端请求大多失败,因为它花费的时间太长,但随后的请求成功。我想知道是否有一种方法可以在服务启动时立即创建远程对象。这是服务的 OnStart() 中的代码:

    ChannelServices.RegisterChannel(new HttpChannel(8080), false);
    RemotingConfiguration.RegisterWellKnownServiceType(typeof(MyService), "MyService", WellKnownObjectMode.Singleton);

【问题讨论】:

    标签: .net remoting


    【解决方案1】:

    您可以让您的服务的OnStart 生成一个执行空事务的进程——除了强制创建远程对象之外没有任何影响的无害的事情。

    您可以做的另一件事是让启动处理完成所有昂贵的初始化并将结果保存在某个对象中。远程对象的初始化将只是初始化对该预构造对象的引用。我想您可以说远程对象充当了您在启动时构造的对象公开的方法的代理。

    我记得(我玩远程处理已经有一段时间了,所以我可能错了),服务本身不可能充当客户端并调用初始化远程对象。

    【讨论】:

    • @miliu:你使用了哪个技巧?您是否生成了一个进程来进行初始化,或者您是否在 OnStart 中进行了昂贵的初始化部分?
    • 我在第二段中使用了您的建议:我将远程对象设为单例(幸运的是,在我的情况下这没问题)并在服务器启动后立即调用它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-11
    • 2017-05-17
    相关资源
    最近更新 更多