在应用程序域隔离功能开始工作之前,它至少需要 7 个程序集并将我的外接程序的数据模型限制为远程处理可以处理的数据类型。太复杂了! System.AddIn 团队的博客对我来说意味着他们试图重新创建 COM 的心理模型,这个模型我一开始就不太理解,而且也不相信它的好处。 (如果 COM 这么好,为什么它死了?-反问。)如果我不需要与旧版 COM 镜像或互操作(就像 VSTO 使用 System.AddIn 所做的那样),是否可以只创建一些加载加载的类一个新的应用程序域?
我可以自己编写发现代码,我以前已经这样做过,并且简单的实现速度非常快,因为我不喜欢迭代 GAC 中的程序集!
所以我的具体问题是,我能否通过一些远程代码片段获得 AddIn 提供的 AppDomain 隔离,这些隔离会是什么?
最佳答案
我不完全确定您问题的任何答案是否符合网站条款 - 没有解决方案。
是的,远程处理更容易,因为它是为您完成的。然而,它是受到高度控制的,正如您所发现的,需要做一些工作才能将它们整合在一起。发现过程中产生的缓存文件也不受欢迎。
System.AddIn 擅长隔离,但以健壮、灵活的方式从头开始组合起来实际上有点麻烦。它支持跨进程托管以及用户 WPF 元素从一个域到另一个域的相当简单的传递。
但是要记住的一件事是,MAF 的目标受众不是那些尝试将两个应用程序连接在一起的人。它针对的是需要可插拔且安全的系统的开发人员(跨进程托管可保护根应用程序免受未处理异常的影响,应用程序域允许执行具有定义的安全性的潜在外部代码)。在大多数通信中,直接转向 System.Runtime.Remoting 或 WCF。
如果您想继续使用 System.AddIn,请考虑 pipeline builder plugin对于 Visual Studio !
总之 - 您可以使用远程处理获得 System.AddIn 隔离,但要获得一个像样的系统,您将需要多个片段。我试图自己复制它,但在远程接口(interface)组件上出现了问题 - System.AddIn 可以顺利完成。
关于remoting - System.AddIn 主要是为了让远程处理的使用变得更容易还是让使用变得更困难?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1736683/