应用程序域如何用于托管在Web或Windows应用程序中提供UI控件的第三方程序集?

时间:2011-04-12 16:23:24

标签: c# .net applicationdomain

MSDN说:

  

隔离应用程序对于应用程序安全性也很重要。例如,您可以在单个浏览器进程中运行来自多个Web应用程序的控件,使控件无法访问彼此的数据和资源。

这将如何实现?如果我在WebForm上使用程序集中的控件作为UI的一部分,我将如何从单独的域加载?

此外,在Windows窗体中是否可以在窗体上使用UI控件,这些控件来自在单独的应用程序域中加载的程序集?如果是这样,你会怎么做?

我问,因为我使用了许多第三方UI控件库。我如何以“安全”的方式使用这些,从我的主应用程序托管来自不同的应用程序域?

1 个答案:

答案 0 :(得分:1)

如果您阅读further,则可以看到您的流程中create multiple domainsLoad程序集中的Execute或其中的{{3}}程序集。

现在从你提出的问题来看,我认为你误解了这个概念。两个不同域中的程序集是完全分离的,它们无法相互访问,因此您无法实现将UI控件加载到单独的域并在原始域中使用它的目的。

您撰写的引文讨论了一些场景,例如对单个asp.net应用程序的并发用户访问,或者在显示多个网页的单个Internet Explorer中多个“标签”。这些需要安全地分开,这可以通过为每个用户请求或选项卡创建一个全新的流程或通过创建单独的appdomains来实现。 appdomains提供的增益是更好的可扩展性/性能,因为为asp.net应用程序的每个请求创建一个新进程的成本太高。

所以回答你的问题:如果你想使用第三方控件并希望它们与你的主应用程序进行交互,你就不能将它们加载到单独的域中,除非你可以让它们与您的应用程序通过网络,远程处理,管道等。