Common uses and best practices for application domains in .NET?

牧云@^-^@ 提交于 2019-12-06 02:16:20

问题


What are some guidelines and best practices for when to create new application domains within an application?

Also, what are some common uses and examples of how multiple application domains are used whithin an application?


回答1:


The most common scenario I've seen is to be able to provide extensibility with a different security model than the main program.

Loading a plugin in a separate AppDomain allows two things:

  1. You can implement a more restricted security model
  2. You can prevent the plugin from tearing down your application if it's buggy

Another nice use of AppDomains are to load and inspect an assembly. Doing this in a separate AppDomain allows you to glean information (or run code) from a separate assembly, then unload the entire assembly from your process's space. If you load the assembly directly, there is no way to unload it. This is also useful if you want to be able to, at runtime, "upgrade" a type to a new version (ie: load a remote assembly, and reload it later).




回答2:


It is recommended to create new domain when you need to host 3-rd party components within your application that are unreliable or you do not trust them (like plug-ins) or you want to be able to unload them.




回答3:


A typical example is for plugin-/addin-like cases. Not only does it allow you to unload the DLL if required, it also gives you better security control over what the plugin is allowed to do.

Also, if you create temporary assemblies (code generation) which you want to unload again, this is a good way to do it. (LCG only allows implementing single methods, if you want to implement a complete class you need to emit to a "real" assembly).



来源:https://stackoverflow.com/questions/1639244/common-uses-and-best-practices-for-application-domains-in-net

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!