开发者

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

开发者 https://www.devze.com 2022-12-09 21:39 出处:网络
What are some guidelin开发者_运维问答es and best practices for when to create new application domains within an application?

What are some guidelin开发者_运维问答es 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?


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).


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.


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).

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号