IIS / ASP.NET中的AppDomains
鉴于IIS中托管的ASP.NET WebForms门户以及使用ASP.NET MVC3编写的独立模块,在运行时执行模块时使用的适当API是什么?
背景
我们有一个遗留的自定义门户网站,其中包含许多使用C#/ WebForms编写的应用程序。目前,门户网站和所有应用程序都存在于一个项目中;它们都是同时部署的。我想将应用程序与门户分离,将它们作为模块实现到门户,并在运行时隔离每个模块的执行。我们想在ASP.NET MVC 3中移植/重写每个应用程序。
当我们移植每个应用程序时,我最初的想法是让门户网站处理每个请求,在appDomain中加载app /模块,将请求转发给模块,获取生成的html,并将其放在门户网站MasterPage的ContentPlaceHolder中。在我走这条路之前,我认为在基础知识上获得一些StackOverflow验证是明智的。
答案 0 :(得分:2)
当插件由第三方提供并且您希望对插件应用严格的安全限制时,将插件/模块隔离到单独的AppDomain中非常有用。当你自己编写插件时,这种隔离级别是不必要的,并且会适得其反。
您可以通过适当的项目参考实现必要的隔离级别。定义一个单独的项目,其中包含插件API的接口和任何关联的值对象。让你的插件引用这个项目并实现适当的API。然后您的主机应用程序应仅通过此API引用插件。这样,无需管理多个AppDomain即可实现代码分离和维护。