【问题标题】:.Net Remoting without using .Net remoting?.Net 远程处理而不使用 .Net 远程处理?
【发布时间】:2009-05-21 23:25:02
【问题描述】:

我寻求一些建议比什么都重要。

我有以下例子:

Appication1.exe - 有对象 MyList

Application2.exe - 需要访问 MyList 并与对象交互,就好像它是从 Application2 创建的一样。

我应该使用 .NET Remoting(即 2.0)还是 WCF 或其他技术堆栈?有哪些框架可以支持这一点?每个人的优点/缺点是什么?

我应该注意,这更像是一个“帮助”应用程序,不会被开发团队之外的任何人使用。

【问题讨论】:

    标签: c# .net wcf remoting


    【解决方案1】:

    如果不了解有关您的应用程序的更多详细信息,很难说,但我个人不会在这种情况下使用 WCF。 WCF 有一个非常重量级的管道,并且需要付出相当大的努力来设置和使用。它的 API 也非常适合 Web 服务,在您的情况下这似乎有点过头了。微软声称 WCF 取代了远程处理,因为他们不想再支持远程处理,但是在两者都使用之后,我可以说 WCF 不如远程处理在同类应用程序中移动数据。

    但是,将数据从一个应用程序移动到另一个应用程序的方法有很多种,各有优缺点。对所有这些方法的全面讨论超出了本评论的范围。你能添加更多关于你的使用场景的细节吗?这个列表中有什么样的数据,有多大,它来自哪里,正在进行什么样的修改,App 1 是否需要查看更改,App 2 是否会将数据发送到其他地方完成,等等......

    【讨论】:

      【解决方案2】:

      我假设应用程序 1 是生产应用程序,应用程序 2 是仅用于开发的帮助程序应用程序。如果是这种情况,您的目标应该是最小化或消除应用程序 1 中与支持应用程序 2 相关的任何额外开销。因此,非常重的 WCF 应该作为一个选项被消除。远程处理也会增加开销。

      您可以序列化对象 - 也许 XML 适合这个?

      这个问题有太多变数,无法完全回答。您能否提供更多关于应用程序 1 和应用程序 2 的信息?他们跑到哪里去?你感兴趣的对象经常变化吗?他们如何保存状态?

      【讨论】:

      • 我投票赞成,因为这似乎是访问列表最合乎逻辑的方式,无需任何远程处理或 WCF 开销。让 app1 简单地将列表序列化为 Xml 或二进制格式化程序。
      【解决方案3】:

      很难说。 WCF当然是一种可能性。当然,您必须控制这两个应用程序并更改 App1 以支持(在推送或拉取模型上)将数据传输到 App2。如果您不一定需要按需交换数据,则可以考虑将数据库作为传输数据的方法,尤其是。如果 App1 已经将一些数据写入数据库。然后你可以让 App2 从那里获取它需要的数据。或者,如果交换不经常发生,您甚至可以使用文件系统。序列化列表并使用 App2 抓取它。 (我只是建议这样做,因为这听起来像是您正在尝试将开发工具挂钩到已经存在的东西中)。

      Remoting 是一项较旧的技术,它充满了难以实施和部署的问题。 WCF 更干净,更容易实现。所以,如果它介于两者之间,我肯定会推荐 WCF 而不是远程处理。

      【讨论】:

        【解决方案4】:

        我认为合理的选择是使用 .NET 远程处理。您必须在 Application1 上启动一个 Web 服务,以便 Application2 与之通信。唯一真正的缺点是“MyList”需要用 MarshalByRefObject 标记。 MSDN 说 Remoting 现在是传统的东西(.NET 3.0),有利于 WCF。但据我所知,Remoting 是城里唯一的跨应用程序通信游戏。

        【讨论】:

        • “MyList”不应该也是可序列化的吗?还是它所在的类/对象?
        猜你喜欢
        • 1970-01-01
        • 2013-01-09
        • 2011-12-24
        • 2010-10-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多