繁体   English   中英

IoC和Managed AddIn Framework(System.AddIn)可以与隔离的AppDomain一起工作吗?

[英]Can IoC and the Managed AddIn Framework (System.AddIn) work together with isolated AppDomains?

如果我使用Managed AddIn Framework(System.AddIn)并将其设置为使用单独的AppDomain,我可以使用主/默认AppDomain中的集中式IoC容器吗? IoC容器可以跨AppDomains解析吗?

我将通过忽略等式中的MAF部分来解决这个问题,并专注于AppDomain问题。 假设IoC入口点继承自MarshalByRefObject或由一个继承自MarshalByRefObject的类包装,理论上IoC容器可以执行您所描述的操作。 凭借29K +的得分,我相信你知道这一点但是:

1)从MarshalByRefObject继承的对象可以通过代理跨AppDomain边界访问(也就是说,所有调用都跨应用程序域边界编组到对象)。

2)可序列化的对象可以通过序列化传递到AppDomain边界,也就是说,您可以在另一个AppDomain中获取它们的另一个副本。

出于多种原因,您不希望序列化整个IoC容器并将其通过AppDomain边界发送。 首先,这样做的开销将是巨大的,其次,IoC容器背后可能存在许多不可序列化的管道。 因此,唯一可行的方法是:

1)IoC容器本身是MarshalByRef,或者被这样包裹

2)您从IoC容器中获取的对象都已正确设置以供跨域使用(可序列化或MBR继承)。

如果上述两种情况都属实,那么理论上你可以使用其他AppDomain主AppDomain中托管的IoC容器。 您可能通过定义特定于IoC容器的Resolve方法的MAF主机适配器(或您使用的IoC工具中的等效物)来实现此目的。

请记住,使用跨应用程序域通信也使用的相同代理API实现了大量IoC功能(尤其是AOP)。 如果你试图将IoC容器用于基本的可序列化结构和MBR继承服务以外的任何东西,我肯定会看到这种复杂的事情。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM