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

C# 如何使用应用程序域托管在Web或Windows应用程序中提供UI控件的第三方程序集?,c#,.net,applicationdomain,C#,.net,Applicationdomain,说: 隔离应用程序对于应用程序安全也很重要。例如,可以在单个浏览器进程中运行多个Web应用程序中的控件,使控件无法访问彼此的数据和资源 这将如何实现?如果我使用WebForm上程序集的控件作为UI的一部分,我将如何从单独的域加载该控件 另外,在Windows窗体中,是否可以在窗体上具有UI控件,这些控件来自加载在单独appdomain中的程序集?如果是,你会怎么做 我这样问是因为我使用了很多第三方UI控件库。我如何以“安全”的方式使用它们,从与我的主应用程序不同的应用程序域托管?如果您阅读,您可

说:

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

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

另外,在Windows窗体中,是否可以在窗体上具有UI控件,这些控件来自加载在单独appdomain中的程序集?如果是,你会怎么做

我这样问是因为我使用了很多第三方UI控件库。我如何以“安全”的方式使用它们,从与我的主应用程序不同的应用程序域托管?

如果您阅读,您可以看到您可以将流程中的程序集和程序集放入其中,或将程序集放入其中

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

您所写的引文谈到了一些场景,例如用户并发访问单个asp.net应用程序,或者在单个internet explorer中显示多个网页的多个“选项卡”。这些需要安全地分离,这可以通过为每个用户请求或选项卡创建一个全新的流程或创建单独的AppDomain来实现。appdomains在这里提供的好处是更好的可伸缩性/性能,因为为asp.net应用程序的每个请求创建一个新进程的成本太高

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