The Enterprise Component Services in Windows provides these additional services:
Object pooling – Typically useful in server-based systems where a single type of component is used by multiple concurrent clients, Enterprise Component Services can maintain a pool of object instances for use by clients. This can raise performance and throughput by eliminating redundant object instantiation costs, and can also provide a way to constrain and control the resource consumption of a given type of component, by providing a way to limit the upper-bound of the number of objects to instantiate.
Just-in-time Activation – The Just-in-Time (JIT) Activation service allows server resources to be used more efficiently under load. When a component is configured for JIT Activation, the Enterprise Services container can deactivate an instance of the component while a client still holds an active reference to it. The container may do this to free up resources for other components or services when the system is under load. The next time the client calls a method on the object, Windows reactivates the object transparently to the client, just in time. This balancing act enables more efficient use of resources.
Queued Invocation – The Queued Invocation capability within Enterprise Services combines the familiar component-oriented programming model with asynchronous queue-based message delivery. It enables an application to invoke methods on components asynchronously, without needing to wait for a response. This is sometimes referred to as “fire and forget." In fact, the component being invoked may be remote, and need not even be running at the time the method is invoked. Queued Components automatically serializes and queues the message for delivery. As might be expected, Queued Components builds upon MSMQ to provide this capability.
Transactions – Automatic transaction processing allows developers to configure a class at design time to participate in a transaction at run time. Any operations the class performs on transactional resource managers are managed as part of one logical unit of work, with all-or-nothing commit/abort semantics.
Compensating Resource Managers – Enterprise Services provides a toolkit that allows developers to wrap transactional semantics around non-transactional resources. Suppose an application needs to read from a transactional message queue, and write to a non-transactional event log, as one logical unit of work. The CRM feature in Enterprise Services enables this, through a simple programmatic interface.
Role-Based Security-Enhanced Access Control – This service allows developers to apply declarative, role-based, and authorization enforcement on classes or methods. This is a simple way for developers to employ security-enhanced access control to particular methods in an application.