【问题标题】:.Net Remoting - Serialisation of Delegates.Net Remoting - 代表序列化
【发布时间】:2009-11-24 14:34:11
【问题描述】:

我已经为一个已建立的应用程序编写了一个自定义的远程格式化程序接收器。格式化程序似乎适用于大多数情况,直到我尝试使用它来调用我将回调传递给 CAO 的远程方法。此时我得到一个 SerializationException,表明我正在尝试序列化 CAO,这显然不是我想要做的。 CAO 继承自 MBRO 并且对象生命周期在此阶段不发挥作用。

有谁知道我如何在格式化程序中序列化传入的 IMessage 以保留对 CAO 的引用?我假设我需要遍历对象图,将 CAO 转换为 ObjRef,然后可以对其进行序列化,但我的问题更为根本,因为我没有要序列化的具体“消息”,只有 IMessage。我宁愿不使用反射。

我知道 WCF,但由于应用程序非常大,因此不希望在此阶段迁移到它。

【问题讨论】:

    标签: c# .net serialization remoting


    【解决方案1】:

    Codeproject 上有一篇很棒的文章,可以为您提供您正在寻找的answers。在远程处理中实现事件/委托非常棘手,解决方法也很难实现。最好的阅读网站是这个家伙,Ingo Rammer,他撰写并撰写了一本关于远程处理的优秀书籍。我过去曾使用 GenuineChannels 来规避在标准 .NET 远程处理中发现的事件处理限制的使用,它确实有效。不过GenuineChannels 好像已经有麻烦了……

    希望这会有所帮助, 最好的祝福, 汤姆。

    【讨论】:

    • 感谢您的回答。但是,我的问题不在于使用远程处理。相反,当序列化包含远程方法调用的 IMessage 时,我的自定义格式化程序接收器的实现存在问题,其中一个或多个参数是 CAO 的委托(即对客户端的回调)。我有 Ingo 的书,虽然它是一本很好的参考书,但它并没有包含我的问题的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-26
    • 1970-01-01
    • 1970-01-01
    • 2023-03-04
    • 1970-01-01
    相关资源
    最近更新 更多