Información general sobre componentes con servicio
Un componente con servicio es una clase escrita en un lenguaje compatible con CLS y derivada directa o indirectamente de la clase System.EnterpriseServices.ServicedComponent. Las clases configuradas de esta manera pueden estar alojadas en una aplicación COM+ y puede utilizar los servicios COM+ por medio del espacio de nombres EnterpriseServices. Para obtener una lista de los servicios admitidos, vea Resumen de servicios COM+ disponibles.
Los servicios COM+, como las transacciones automáticas o los componentes en cola se pueden configurar de forma declarativa. Los atributos relacionados con el servicio se aplican en tiempo de diseño y se crean las instancias de clases que utilizan esos servicios. Algunos servicios se configuran llamando a métodos en clases o interfaces relacionadas con el servicio. Ciertos servicios pueden pasar de un objeto a otro. Por ejemplo, un objeto configurado de manera que requiera una transacción puede extender esa transacción a un segundo objeto que también admita o requiera transacciones.
El catálogo COM+ guarda la información de configuración que se aplica a la implementación de una clase. En tiempo de ejecución, en función de los atributos que aplique al código, COM+ crea una capa de servicio del contexto. La siguiente ilustración muestra una transacción automática que pasa entre dos objetos administrados alojados en COM+.
Aplicación COM+ con componentes con servicio alojados
Los servicios pueden fluir también entre objetos de COM+ y .NET Framework. Cada entorno controla la implementación y ejecución de su código nativo; COM+ proporciona siempre el contexto del objeto.
Para crear un componente con servicio
Defina una clase derivada directa o indirectamente de la clase ServicedComponent. Por ejemplo, con el código siguiente se garantiza que la clase
Account
está alojada en una aplicación COM+.Imports System.EnterpriseServices Public Class Account Inherits ServicedComponent Shared Sub Main() End Sub End Class [C#] using System.EnterpriseServices; public class Account : ServicedComponent { static void Main() {} }
Con el código siguiente se aplican atributos de servicio al ensamblado, clase o método.
Imports System.EnterpriseServices <Transaction(TransactionOption.Required)> Public Class Account Inherits ServicedComponent <AutoComplete()> Shared Sub Main() End Sub End Class [C#] using System.EnterpriseServices; [Transaction(TransactionOption.Required)] public class Account : ServicedComponent { [AutoComplete] static void Main() {} }
Nota En la versión 1.1 de .NET Framework, la configuración de seguridad COM+ está habilitada de forma predeterminada si el atributo ApplicationAccessControlAttribute no está presente en el ensamblado. Se trata de un cambio de comportamiento en relación con la versión 1.0 de .NET Framework.
El ejemplo se puede compilar así:
Makefile.bat
vbc /t:exe /r:System.EnterpriseServices.dll Demo.vb [C#] csc /t:exe /r:System.EnterpriseServices.dll Demo.cs
Implemente la aplicación de componente con servicio registrando su ensamblado de manera dinámica o manual. Para obtener más información, vea Registro dinámico y Registro manual.
Una vez que se ha registrado un componente con servicio, los clientes pueden crear instancias del componente igual que lo hacen de cualquier otro componente. Para obtener un ejemplo completo, vea Ejemplo de componente con servicio.
Nota En las plataformas de Windows 2000, COM+ carga siempre la versión más reciente de Common Language Runtime para el componente que esté creando. Esto significa que en un equipo en el que estén instaladas tanto la versión 1.0 como la versión 1.1 de .NET Framework, la versión 1.1 de .NET Framework siempre está cargada. Para solucionarlo, puede crear un archivo de configuración dllhost.exe. de COM+ que le permita "bloquear" todas las aplicaciones a una versión específica de .NET Framework. En las plataformas Windows XP y Windows Server 2003, la configuración del directorio raíz de la aplicación puede utilizarse para hacer que COM+ apunte a un directorio adecuado para su archivo de configuración.
Vea también
Escribir componentes con servicio | Aplicar atributos para configurar servicios | Registrar componentes con servicio Ejemplo de componente con servicio | Resumen de servicios COM+ disponibles | System.EnterpriseServices.ServicedComponent