ALERT

[WEBINAR] Building a Business-Driven Data Architecture

Application Domain

Definition - What does Application Domain mean?

An application domain is a logical isolation boundary created around .NET applications so that applications do not access or affect each other. It is a light-weight process having its own set of code, data, and configuration settings. Application domains are created by the runtime hosts, which are invoked by the common language runtime (CLR) to load the applications that need to be executed.

Prior to .NET, the isolation boundary between applications was the processes in which they were loaded. Every process had its own private virtual memory and can not access the memory of another process directly. Application domain has features similar to that of a process.

Application domains have the following features:

  1. Optimum utilization of system resources by using fewer processes to execute multiple applications.
  2. Reliability by using isolation of tasks in situations where data cannot be shared and for unstable tasks that need to be unloaded without affecting the process.
  3. Better efficiency by executing long-running processes that rarely use large extensions with optimal memory.
  4. Application security by restricting the direct access to the code running in one application from the code or resources of another application.
  5. Security control by specifying configuration details along for each application domain.

Techopedia explains Application Domain

Application domain differs in the manner in which the CLR loads and executes multiple .NET applications in one single process. It does not allow direct access to the memory of loaded applications. It is managed by the CLR of the .NET Framework whereas a process is managed by the OS. The CLR provides fault isolation between application domains with less overhead than processes, due to its inherent feature of verifiable type-safety of managed code. Also, multiple threads can reside in an application domain, they are free to cross application domain boundaries.

For example, ASP.NET is a runtime host that creates multiple application domains for each user accessing a web site. They can also be created and configured for applications that need to isolate code or to load extensions only while using them. This fact makes application domains useful in situations where plug-ins and other untrusted code is used. They are also useful in minimizing the working set of applications that use large DLLs.

To enable communication between objects in different application domains one of the following three types of objects is used:

  1. Marshal-By-Value: Complete copy of the object passed to the calling application domain. This is used when the state of object can be moved for performance reasons.
  2. Marshal-By-Reference-Reference (MBR): A proxy of the object is passed to the client; used when the state of the object has to stay within the application domain.
  3. Context-bound: MBR object used across domains or within the context of its own application domain.
This definition was written in the context of .NET

Connect with us

Techopedia on Linkedin
Techopedia on Linkedin
Tweat cdn.techopedia.com
"Techopedia" on Twitter


'@Techopedia'
Sign up for Techopedia's Free Newsletter!

Email Newsletter

Join thousands of others with our weekly newsletter

Resources
Free Whitepaper: The Path to Hybrid Cloud
Free Whitepaper: The Path to Hybrid Cloud:
The Path to Hybrid Cloud: Intelligent Bursting To Amazon Web Services & Microsoft Azure
Free E-Book: Public Cloud Guide
Free E-Book: Public Cloud Guide:
This white paper is for leaders of Operations, Engineering, or Infrastructure teams who are creating or executing an IT roadmap.
Free Tool: Virtual Health Monitor
Free Tool: Virtual Health Monitor:
Virtual Health Monitor is a free virtualization monitoring and reporting tool for VMware, Hyper-V, RHEV, and XenServer environments.
Free 30 Day Trial – Turbonomic
Free 30 Day Trial – Turbonomic:
Turbonomic delivers an autonomic platform where virtual and cloud environments self-manage in real-time to assure application performance.