I keep getting asked about AppDomains in interviews, and I know the basics:
- they are an isolation level within an application (making them different from applications)
- they can have threads (making them different from threads)
- exceptions in one appdomain do not affect another
- appdomains cannot access each other's memory
- each appdomain can have different security
I still don't get what makes them necessary. I'm looking for a reasonable concrete circumstance when you would use one.
Answers:
- Untrusted code
- Core application protected
Untrusted/3rd party plugins are barred from corrupting shared memory and non-authorized access to registry or hard drive by isolation in separate appdomain with security restrictions, protecting the application or server. e.g. ASP.NET and SQL Server hosting component code
- Stability
Application segmented into safe, independent features/functionality - Architectural flexibility
Freedom to run multiple applications within a single CLR instance or each program in its own.
Anything else?
See Question&Answers more detail:os