Registrazione dei componenti serviti
Il componente servito è contenuto in un'applicazione COM+ e deve essere accessibile da tale applicazione. Per l'accesso, i componenti serviti devono soddisfare i seguenti requisiti di registrazione e di configurazione:
- L'assembly deve avere un nome sicuro. Per ulteriori informazioni, vedere Firma di un assembly con nome sicuro.
- L'assembly deve essere registrato nel Registro di sistema di Windows.
- Le definizioni della libreria dei tipi devono essere registrate e installate in un'applicazione COM+ specifica.
- I servizi aggiunti a livello di codice devono essere configurati nel catalogo COM+.
Le informazioni sulla registrazione utili per i componenti serviti includono le seguenti:
- Identità delle applicazioni COM+
- Tipo di attivazione
- Informazioni sulla descrizione
Identità delle applicazioni COM+
È possibile identificare un'applicazione di destinazione COM+ esistente in base al nome o al GUID. Lo Strumento di installazione dei servizi .NET Framework (Regsvcs.exe) fornisce l'opzione /appname: che consente di specificare il nome di un'applicazione. Nell'esempio seguente viene illustrato come specificare il nome dell'applicazione utilizzando l'attributo a livello di assembly ApplicationName.
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()
{}
}
Se si applica l'attributo ApplicationID o Guid a un'assembly, come nell'esempio che segue, tutte le ricerche dell'applicazione verranno eseguite in base al GUID e non in base al nome dell'applicazione.
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 Per la registrazione dinamica, l'unico modo per specificare un'applicazione di destinazione è quello di applicare l'attributo ApplicationNameAttribute, ApplicationIDAttribute o GuidAttribute in fase di progettazione. Lo Strumento di installazione .NET (Regsvcs.exe) fornisce l'opzione /appname: che consente di specificare il nome o il GUID dell'applicazione in fase di compilazione. Regsvcs.exe fornisce anche l'opzione /parname: che consente di identificare una partizione COM+ specifica. Il servizio partizioni COM+ è disponibile solo su piattaforme Windows Server 2003.
Se l'applicazione di destinazione non viene identificata o rilevata, i meccanismi di registrazione ne creano una utilizzando il nome completo dell'assembly senza il numero di versione.
Attenzione Non utilizzare l'attributo ApplicationIDAttribute con il servizio partizioni COM+. Se si utilizza il servizio partizioni COM+, l'applicazione dell'attributo ApplicationIDAttribute impedirà la configurazione delle partizioni. Il servizio partizioni COM+ è disponibile solo su piattaforme Windows Server 2003.
Tipo di attivazione
Il tipo di attivazione determina se i componenti serviti vengono creati nel processo del chiamante, ovvero nella libreria, o in un nuovo processo, ovvero nel server. È possibile applicare l'attributo ApplicationActivationAttribute per specificare il tipo di attivazione.
**Nota **Se l'attributo ApplicationActivationAttribute è impostato su Server, sarà necessario aggiungere alla cache dell'assembly globale (GAC, Global Assembly Cache) l'assembly e tutti gli assembly da cui esso dipende tramite Windows Installer prima di poter utilizzare l'applicazione server. In caso contrario, verrà generata un'eccezione. Se l'attributo ApplicationActivationAttribute è impostato su Server, tutti i parametri per i componenti serviti dovranno inoltre essere contrassegnati come Serializable o derivati dalla classe MarshalByRefObject. In caso contrario, verrà generata un'eccezione.
Nell'esempio che segue viene illustrato come impostare il tipo di attivazione su "server".
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() {}
}
Informazioni sulla descrizione
La descrizione è facoltativa, ma in alcuni casi può risultare utile per distinguere assembly simili. Nell'esempio seguente viene illustrato come applicare l'attributo DescriptionAttribute per impostare la descrizione di un assembly.
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()
{}
}
Nelle due sezioni seguenti vengono descritti i meccanismi di registrazione per la distribuzione delle applicazioni che utilizzano i servizi COM+:
Entrambi i meccanismi di registrazione semplificano il processo di registrazione combinando le operazioni necessarie per registrare un componente servito. Per entrambi i meccanismi è necessario che l'utente del componente sia un membro del gruppo di amministratori. Nella registrazione dinamica, è possibile fornire alcune informazioni di registrazione (definite successivamente) in fase di progettazione e alcune in fase di compilazione. Nella registrazione manuale, è possibile fornire questo tipo di informazioni in fase di progettazione, di compilazione e di registrazione. Se non vengono specificate, le informazioni di registrazione vengono create dai metadati durante il processo di registrazione. Le combinazioni di attributi incompatibili vengono rilevate e, in alcuni casi, corrette automaticamente durante il processo di registrazione.
Vedere anche
Scrittura di componenti serviti | Cenni preliminari sui componenti serviti | ApplicationNameAttribute | ApplicationIDAttribute | GuidAttribute | ApplicationActivationAttribute | DescriptionAttribute | Applicazione di attributi per la configurazione dei servizi | Esempio di componente servito | Riepilogo dei servizi COM+ disponibili | Estensione di metadati mediante attributi | Spazio dei nomi System.EnterpriseServices