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



MSDN显示:

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

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

此外,这是可能的在Windows窗体,有UI控件的窗体是从一个程序集加载在一个单独的应用程序域?如果有,你会怎么做?

我问这个问题是因为我使用了很多第三方UI控件库。我如何以一种"安全"的方式使用这些托管在与我的主应用程序不同的应用程序域?

如果您进一步阅读,您可以看到您可以在流程中创建多个域,并将程序集加载到其中或在其中执行程序集。

从你的提问来看,我认为你对这个概念有一点误解。两个不同域中的程序集是完全分开的,它们不能相互访问,所以你想做的是,将UI控件加载到一个单独的域中并在原始域中使用它,这是不可能的。

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

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


最新更新