【问题标题】:Does WCF really replace .NET Remoting?WCF 真的会取代 .NET Remoting 吗?
【发布时间】:2023-03-04 07:43:07
【问题描述】:

我可以理解 WCF 总体上比 Remoting 更好,但在我看来两者完全不同。 MS 制作了这张漂亮的图片来展示 WCF 有多棒(或者其他技术可能有多糟糕,每个只选中一个框):
(来源:microsoft.com

但是,WCF 以 SOA 为中心,我认为假设每个联网应用程序都希望公开服务是不正确的。

就我而言,我正在寻找在不同 PC 上的服务器应用程序的两个实例之间复制对象的方法。 WCF 似乎只是提供了现代版本的 COM... 获取对象并调用方法,然后它神奇地调用另一台 PC 上的版本。但是 Remoting 似乎做了一些完全不同的事情,我不清楚为什么它在没有被类似技术取代的情况下被弃用。

那么,MS 是否甚至声称 Remoting 已死?还是他们仍然支持它,承认它在 WCF 中占有一席之地?

【问题讨论】:

  • 参见 stackoverflow.com/questions/1294494/… ,另外 - 在您的应用程序中启动 WCF 端点并来回发送对象非常容易。
  • 我并不是说这是完全重复的,因为您对情况的具体描述。但是(就像上面发布的一样)这个问题讨论了远程处理是否被弃用stackoverflow.com/questions/1294494/…
  • @nos,要来回发送对象,您仍然需要一个 API,尽管像 newForumPos(ForumPost) 等...您必须编写代码来传输对象或其字段,而不是拥有这就像 XSTM 的工作方式一样自动完成 (xstm.net)
  • 是的,XSTM 与 .net 远程处理和 wcf 完全不同。
  • 现在 grpc 取代了 wcf...

标签: c# .net wcf .net-remoting


【解决方案1】:

它确实取代了 .Net 远程处理。您可以使用带有 Tcp 通道的二进制格式化程序,并获得与远程处理相同的体验。

对于您的情况,远程处理似乎并不是正确的选择。如果您想复制对象,例如在不同位置复制它们,那么您需要序列化它们并将它们作为一个包(WCF 术语中的“消息”)发送以加载到一个类型中(可能是相同的)在远程端点上键入相同的程序集,但部署在不同的服务器上)。这就是 WCF 擅长的地方。远程处理将为您提供从一个端点到另一个端点的“活动”对象的连接。

【讨论】:

  • 也许我误解了远程处理...它是复制对象还是保留远程访问的服务器副本?
  • @John:既不是也不是——WCF 就是发送序列化消息——消息只是数据,没有行为/代码/方法。在这方面,是的,WCF 不能取代远程处理,因为它实际上不是一种“远程控制对象”技术
  • @John - 使用 .Net Remoting,它是后者:您远程访问对象的状态,并且只是编组从端点到端点的调用。如果你想发送实际的对象,你想要的更多的是面向服务的东西,它将对象状态序列化并将其作为消息从端点发送到端点。 WCF 两者都可以,但发送消息更自然。原因是我们通过 DCOM 了解到,跨边界透明访问对象状态是一个糟糕的设计。
  • 好吧,这更有意义。我在想远程处理是关于保持同一个对象的副本同步,正如你所描述的那样,你是对的,它不适合我们的情况。
  • 如果你想保持副本同步,你可以看看同步框架:msdn.microsoft.com/en-us/sync/bb821992.aspx
猜你喜欢
  • 2010-11-20
  • 2012-04-21
  • 2012-10-12
  • 1970-01-01
  • 1970-01-01
  • 2011-05-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多