.Net远程处理而不使用.Net远程处理?

时间:2009-05-21 23:25:03

标签: c# .net wcf remoting

我提出了一些建议。

我有以下示例:

Appication1.exe   - 具有对象MyList

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

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

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

4 个答案:

答案 0 :(得分:8)

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

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

答案 1 :(得分:3)

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

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

这个问题的变数太多,无法完全回答。您能否提供有关应用1和应用2的更多信息?他们在哪里跑?您感兴趣的对象经常更改吗?他们如何保持国家?

答案 2 :(得分:1)

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

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

答案 3 :(得分:0)

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