Registrar componentes con servicio
Un componente con servicio se aloja en una aplicación COM+ y debe estar accesible para esa aplicación. En cuanto a accesibilidad, los componentes con servicio tienen los siguientes requisitos de registro y configuración:
- El ensamblado debe tener un nombre seguro. Para obtener más información, vea Firmar un ensamblado con un nombre seguro.
- El ensamblado debe estar registrado en el Registro de Windows.
- Es necesario registrar e instalar definiciones de bibliotecas de tipos en una aplicación COM+ concreta.
- Los servicios agregados mediante programación se deben configurar en el catálogo de COM+.
La información de registro útil para los componentes con servicio es la siguiente:
- Identidad de la aplicación COM+
- Tipo de activación
- Información de descripción
Identidad de la aplicación COM+
Una aplicación COM+ de destino existente se puede identificar por nombre o por GUID. La herramienta Instalación de servicios de .NET Framework (Regsvcs.exe) proporciona la opción /appname: para especificar el nombre de una aplicación. En el ejemplo siguiente se muestra cómo se proporciona el nombre de la aplicación mediante el atributo ApplicationName del nivel de ensamblado.
Imports System.EnterpriseServices
<assembly: ApplicationName("BankComponent")>
Public Class Account
Inherits ServicedComponent
Shared Sub Main()
End Sub
End Class
[C#]
using System.EnterpriseServices;
[ assembly: ApplicationName("BankComponent")]
public class Account : ServicedComponent
{
static void Main()
{}
}
Si se aplica el atributo ApplicationID (o el atributo Guid) a un ensamblado, como en el ejemplo siguiente, todas las búsquedas de la aplicación se basan en ese GUID y no en el nombre de la aplicación.
Imports System.EnterpriseServices
<assembly: ApplicationName("BankComponent")>
< assembly: ApplicationID("4fb2d46f-efc8-4643-bcd0-6e5bfa6a174c")>
Public Class Account
Inherits ServicedComponent
Shared Sub Main()
End Sub
End Class
[C#]
using System.EnterpriseServices;
[ assembly: ApplicationName("BankComponent")]
[ assembly: ApplicationID("4fb2d46f-efc8-4643-bcd0-6e5bfa6a174c")]
public class Account : ServicedComponent
{
static void Main() {}
}
Nota En el registro dinámico, la única manera de especificar una aplicación de destino es la de aplicar los atributos ApplicationNameAttribute, ApplicationIDAttribute o GuidAttribute en tiempo de diseño. La herramienta de instalación de .NET (Regsvcs.exe) proporciona el modificador /appname: para especificar el nombre de la aplicación o el GUID en tiempo de compilación. Regsvcs.exe proporciona también el modificador /parname: para identificar una partición COM+ concreta. El servicio de particiones COM+ sólo está disponible en las plataformas Windows Server 2003.
Si no se identifica o no se encuentra la aplicación de destino, los mecanismos de registro crean una aplicación usando el nombre completo del ensamblado sin el número de versión.
PRECAUCIÓN No utilice el atributo ApplicationIDAttribute con el servicio de particiones COM+. Si está utilizando el servicio de particiones COM+, el hecho de aplicar el atributo ApplicationIDAttribute impide la configuración de la partición. El servicio de particiones COM+ sólo está disponible en las plataformas Windows Server 2003.
Tipo de activación
El tipo de activación determina si los componentes con servicio se crean en el proceso del llamador (biblioteca) o en un nuevo proceso (servidor). Para especificar el tipo de activación se puede aplicar el atributo ApplicationActivationAttribute.
**Nota **Si el atributo ApplicationActivationAttribute se establece en Server, se ha de agregar el ensamblado y cualquier ensamblado del que dependa a la caché de ensamblados global (GAC) mediante Windows Installer para poder usar la nueva aplicación de servidor; en caso contrario, la aplicación generará una excepción. Además, si el atributo ApplicationActivationAttribute está establecido en Server, todos los parámetros de los componentes con servicio deben marcarse como Serializable o derivarse de la clase MarshalByRefObject. Si no, la aplicación genera una excepción.
En el siguiente ejemplo se muestra cómo establecer el tipo de activación en "servidor".
Imports System.EnterpriseServices
< assembly: ApplicationActivation(ActivationOption.Server)>
Public Class Account
Inherits ServicedComponent
Shared Sub Main()
End Sub
End Class
[C#]
using System.EnterpriseServices;
[ assembly: ApplicationActivation(ActivationOption.Server)]
public class Account : ServicedComponent
{
static void Main() {}
}
Información de descripción
Una descripción es opcional, pero a veces resulta útil para distinguir ensamblados parecidos. En el ejemplo siguiente se muestra cómo aplicar el atributo DescriptionAttribute para establecer la descripción en un ensamblado.
Imports System.EnterpriseServices
< assembly: Description("BankComponent assembly")>
Public Class Account
Inherits ServicedComponent
Shared Sub Main()
End Sub
End Class
[C#]
using System.EnterpriseServices;
[ assembly: Description("BankComponent assembly")]
public class Account : ServicedComponent
{
static void Main()
{}
}
Los temas que siguen en esta sección describen los mecanismos de registro para implementar aplicaciones que usan los servicios COM+:
Los dos mecanismos de registro simplifican el proceso de registro combinando los pasos necesarios para registrar un componente con servicio. Los dos requieren que el usuario del componente sea miembro del grupo de los administradores. Para el registro dinámico, se puede proporcionar la información de registro (definida más adelante) en tiempo de diseño y, parte, en tiempo de compilación. Para el registro manual, se puede proporcionar esta información en tiempo de diseño, en tiempo de compilación y en tiempo de registro. Si se omite la información de registro, el proceso de registro genera sus propios metadatos. El proceso de registro detecta y, a veces, corrige combinaciones de atributos incompatibles.
Vea también
Escribir componentes con servicio | Información general sobre componentes con servicio ApplicationNameAttribute | ApplicationIDAttribute | GuidAttribute | ApplicationActivationAttribute | DescriptionAttribute | Aplicar atributos para configurar servicios | Ejemplo de componente con servicio | Resumen de servicios COM+ disponibles | Extender metadatos mediante atributos | System.EnterpriseServices (Espacio de nombres)