Partager via


Inscription de composants de service

Un composant de service est hébergé par une application COM+ et doit être accessible à cette application. Aux fins d'accessibilité, les composants de service sont soumis aux contraintes suivantes en termes d'inscription et de configuration :

  • L'assembly doit avoir un nom fort. Pour plus d'informations, consultez Signature d'un assembly avec un nom fort.
  • L'assembly doit être inscrit dans la base de registres Windows.
  • Des définitions de bibliothèque de types doivent être inscrites et installées dans l'application COM+ spécifique.
  • Les services ajoutés par programme doivent être configurés dans le catalogue COM+.

Informations d'inscription utiles pour les composants de service :

  • Identité de l'application COM+
  • Type d'activation
  • Informations de description

Identité de l'application COM+

Vous pouvez identifier une application cible COM+ existante par son nom ou par son GUID. L'outil .NET Framework Services Installation Tool (Regsvcs.exe) fournit l'option /appname: destinée à spécifier le nom d'une application. L'exemple suivant montre comment fournir le nom de l'application à l'aide de l'attribut ApplicationName au niveau de l'assembly.

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 vous appliquez l'attribut ApplicationID (ou l'attribut Guid) à un assembly, comme dans l'exemple suivant, toutes les recherches de l'application sont fondées sur ce GUID, et non sur le nom de l'application.

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() {}
} 

Remarque   Dans le cas de l'inscription dynamique, la seule manière de spécifier une application cible consiste à appliquer l'attribut ApplicationNameAttribute, ApplicationIDAttribute ou GuidAttribute au moment du design. L'outil .NET Installation (Regsvcs.exe) comprend un commutateur /appname:, qui permet de spécifier le nom de l'application ou son GUID au moment de la compilation. Il comporte en outre un commutateur /parname:, destiné à identifier une partition COM+ spécifique. Les partitions COM+ ne sont disponibles que sur les plates-formes Windows Server 2003.

Si l'application cible n'est pas identifiée ou est introuvable, les mécanismes d'inscription créent une application en utilisant le nom complet de l'assembly sans son numéro de version.

ATTENTION   N'utilisez pas l'attribut ApplicationIDAttribute avec les partitions COM+. Si vous utilisez les partitions COM+, l'application de l'attribut ApplicationIDAttribute empêche la configuration des partitions. Les partitions COM+ ne sont disponibles que sur les plates-formes Windows Server 2003.

Type d'activation

Le type d'activation détermine si les composants de service sont créés dans le processus de l'appelant (bibliothèque) ou dans un nouveau processus (serveur). Vous pouvez appliquer l'attribut ApplicationActivationAttribute pour spécifier le type d'activation.

**Remarque   **Si la valeur Server est affectée à l'attribut ApplicationActivationAttribute, l'assembly et tous les assemblys dont il dépend doivent être ajoutés au cache de l'assembly global (GAC, Global Assembly Cache) en utilisant Windows Installer avant que l'application serveur puisse être utilisée ; sinon, l'application génère une exception. De plus, si la valeur Server est affectée à l'attribut ApplicationActivationAttribute, tous les paramètres des composants de service doivent être marqués en tant que Serializable ou dérivés de la classe MarshalByRefObject. Sinon, l'application génère une exception.

L'exemple suivant montre comment définir le type d'activation avec la valeur « serveur ».

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() {}
}

Informations de description

Une description est facultative, mais elle est parfois utile pour distinguer des assemblys similaires. L'exemple suivant indique comment appliquer l'attribut DescriptionAttribute pour associer une description à 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() 
{}
}

Les rubriques suivantes de cette section décrivent les mécanismes d'inscription requis pour déployer des applications utilisant des services COM+ :

Ces deux mécanismes d'inscription simplifient le processus d'inscription en combinant les étapes requises pour inscrire un composant de service. Dans les deux cas, l'utilisateur du composant doit être un membre du groupe Administrateurs. L'inscription dynamique vous autorise à fournir certaines informations d'inscription (définies ultérieurement) au moment du design et certaines au moment de la compilation. Dans le cas de l'inscription manuelle, vous pouvez spécifier ces informations au moment du design, de la compilation et de l'inscription. Si vous omettez les informations d'inscription, le processus d'inscription les génère à partir de métadonnées. Il détecte et, parfois, corrige les combinaisons d'attributs incompatibles.

Voir aussi

Écriture de composants de service | Vue d'ensemble des composants de service | ApplicationNameAttribute | ApplicationIDAttribute | GuidAttribute | ApplicationActivationAttribute | DescriptionAttribute | Application des attributs pour configurer des services COM+ | Exemple de composant de service | Résumé des services COM+ disponibles | Extension des métadonnées à l'aide des attributs | System.EnterpriseServices, espace de noms