【问题标题】:Is it possible to share Objects between applications without serialization?是否可以在没有序列化的情况下在应用程序之间共享对象?
【发布时间】:2010-12-01 12:22:45
【问题描述】:

是否可以在没有序列化的情况下在 C# 应用程序之间共享对象?

我需要三个应用程序来共享同一个对象的一个​​实例,但对象本身不支持序列化。

范围是:我正在开发一些应用程序以在 SVN 和 TFS 存储库之间创建某种互操作性。但是我不想在三个应用程序上连接到 tfs 服务器(浪费时间),因为其中一个只是一组小型实用程序,我不希望它加载缓慢。

所以我正在考虑使用 RemotingServices.Marshal,在 tcp 通道中临时注册连接对象,并在其他应用程序中需要时调用该对象。

但事情就是这样。 TeamFoundation.Client 中的许多对象不可序列化,因此在尝试检索对象时出现错误。

我该如何解决这个问题?

【问题讨论】:

    标签: c# serialization object remoting marshalling


    【解决方案1】:

    序列化的直接替代方法是远程处理,但也需要更改类型,因此不起作用。

    与其尝试序列化 TFS 对象,我会编写一个 类似 TFS 对象的对象模型(或者更好的是:您想要执行的请求等),然后发送 。然后根据需要进行重构。本质上是 实际 对象之上的浅层 DTO。

    显然,您需要根据需要重建 TFS 模型(基于 DTO 状态),但这就是生活。

    【讨论】:

    • 我明白了,我想这会有点麻烦......只是好奇,有没有办法通过获取内存地址或其他东西来“访问”位于另一个进程中的对象?跨度>
    • Marshaling 是你的答案,伙计,但要具体参考 Marshaling
    • 但是我不需要使用可序列化的对象才能使用编组吗?
    • @Conrad - 如果他们是 MarshalByRefObject,那么不 - 因为对象永远不会离开;但它必须是MarshalByRefObject,这是更多的开销。
    • 感谢您的回复。所以我有点回到原点:我不能通过序列化共享,因为我的对象不可序列化。而且我无法通过引用编组进行共享,因为我的对象不是 MarshalByRefObject。任何其他选项似乎都足够复杂......我开始认为我应该在一个应用程序中完成所有事情(单个所有内容都可以在本地工作)并且忘记将事情分开。除非有某种“技巧”来做到这一点
    猜你喜欢
    • 2013-05-02
    • 2019-04-05
    • 2011-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-24
    • 1970-01-01
    相关资源
    最近更新 更多