簡體   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