Beginning with the introduction of the Component Object Model (COM) through the .NET model of today, the component is the fundamental building block of a Windows application. A component is an element of software reuse; it is the component concept that enables modular construction of large applications. Enterprise Component Services provides a container or host for components, and a set of runtime services for hosted components, to deliver additional capabilities. These services include queued invocation of components, object pooling, transactions, just-in-time activation, and more. Enterprise Component Services can extend additional capabilities and flexibility to designers of large applications.
| Overview of Enterprise Component Services | |
| Learn More | |
| Support Articles |
Component-based development has served the industry well for years. Developers can be more productive developing software that is organized into components, allowing simpler reuse and maintenance. In some cases, it is beneficial to extend additional runtime services to the components in a large-scale system. 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. For more on transactions, please see Transaction Management. |
| • | 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. |
Traditionally, the Enterprise Component Services have been available to components that are hosted in the Enterprise Services container. With Windows Server 2003 and Windows XP, it is also possible to take advantage of Enterprise Services outside of a configured component. This facility is called “Services without Components" and it adds to the flexibility of Enterprise Component Services.
Before the .NET Framework was introduced, and before the term Enterprise Services was coined, Microsoft used the term COM+ to refer to the set of extended component services, as well as to the hosting container that provides those services, and the programming interfaces to access those services. The new name, Enterprise Services, was adopted to indicate that these services are available not just for COM components, but also for application components written in .NET languages.
Going forward, all of the features of Enterprise Component Services, the component services, the hosting container, and all of the existing programmatic interfaces will continue to be supported in future versions of Windows. Enterprise Services is present in Windows Server 2003 R2 and will be available in Windows Vista, as well as the future Windows Server code-named “Longhorn."
Overview of Enterprise Services
This document describes Enterprise Component Services in greater detail, including component lifecycle (start and stop) services, transactional services, asynchronous component invocation, object pooling, and process pooling.
Writing Serviced Components
This section of the .NET Developer’s Guide describes how to use .NET to configure and register serviced components for access to COM+ services, through the classes and interfaces in the System.EnterpriseServices namespace.
Enterprise Services Frequently Asked Questions
A list of questions and answers obtained from newsgroups and mailing lists related to Enterprise Services.
Understanding Enterprise Services in .NET
Classes written using the Microsoft .NET Framework can leverage COM+ services. When used from .NET, COM+ services are referred to as Enterprise Services. This article describes some of the technical details behind the integration of .NET and COM+ Services.
INFO: Roadmap for .NET Enterprise Services
This article provides a roadmap to learn and to master Microsoft .NET Enterprise Services. Roadmap articles provide links to useful information, including online documentation, Microsoft Knowledge Base articles, and Microsoft white papers, to help you learn about a Microsoft product or technology.
How To Use Delegation in Windows 2000 with COM+
Microsoft Windows 2000 uses the Kerberos protocol for authentication. This article explains how to use Kerberos delegation in Windows 2000 with COM+.
How To troubleshoot error 1928 "Error registering COM+ application"
This article describes how to troubleshoot error 1928 "Error registering COM+ application." You may receive this error message when you run an .msi file (which is created when you export a COM+ application) on a client computer or another server computer.
BUG: Multithreaded applications can deadlock because of asynchronous cleanup
Under certain conditions, a class that is derived from the System.EnterpriseServices.ServicedComponent class that runs in a COM+ application may stop responding (deadlock).
FIX: COM+ application that uses the Global Interface Table (GIT) may deadlock
A COM+ process may appear to stop responding (hang) if multiple threads in the process access the Global Interface Table (GIT).