【发布时间】:2012-04-21 07:23:26
【问题描述】:
我正在做一个需要跨 AppDomain-intra-process 和 inter-process-intra-machine 通信的项目。是的...我知道... NET Remoting 被广泛认为是一种遗留技术,但我面临两个非常特殊的问题,在这些情况下,WCF 可能不能完全替代 NET Remoting。
1) 跨AppDomain-进程内通信
我正在开发的应用程序启动,需要在更多插件上搜索和加载一个。我希望将每个插件加载到单独的 AppDomain 中。我需要一种方法来在他的 AppDomain 中创建每个 Addin 实例,并在某个时候调用该实例的一些接口方法。这里 NET Remoting 是唯一的方法,对吧?此外,如果我们希望应用 System.Addins 范式,显然仅基于 NET Remoting 并且没有标记为过时...
2) 进程间机器内通信
在这里,我可以肯定地从我的应用程序公开 WCF 服务,并使用命名管道从我的客户端调用此服务。
我真正想做的是从我的应用程序中公开一个对象模型,以便我的应用程序可以从一些 NET 客户端自动化,就像 Excel 公开的 OLE/COM 自动化对象模型一样。任何 COM 客户端都可以获取对 Excel.Application 的对象引用并查询打开的文档、打开一些新文档等等。
我认为 WCF 很适合以独立于平台的方式进行通信。但在这种情况下,我只需要在同一台机器上从 Net 客户端与 Net 应用程序进行通信。我认为,WCF 服务理念不允许公开具有对象、集合、字段、静态成员、方法重载的丰富对象模型......还是我错了?
请原谅我糟糕的英语和我可能是新手的问题。
【问题讨论】: