Freigeben über


Registrieren von Serviced Components

Eine Serviced Component wird über eine COM+-Anwendung bereitgestellt. Diese Anwendung muss auf die Komponente zugreifen können. Um den Zugriff auf Serviced Components zu ermöglichen, müssen folgende Registrierungs- und Konfigurierungsanforderungen erfüllt sein:

  • Die Assembly muss einen starken Namen haben. Weitere Informationen dazu finden Sie unter Signieren einer Assembly mit einem starken Namen.
  • Die Assembly muss in der Windows-Registrierung eingetragen sein.
  • Definitionen der Typbibliothek müssen registriert und in einer spezifischen COM+-Anwendung installiert sein.
  • Dienste, die programmgesteuert hinzugefügt wurden, müssen im COM+-Katalog konfiguriert werden.

Zu den für Serviced Components wichtigen Registrierungsinformationen gehören:

  • COM+-Anwendungsidentität
  • Aktivierungstyp
  • Beschreibungsinformationen

COM+-Anwendungsidentität

Vorhandene COM+-Zielanwendungen können über den Namen oder die GUID identifiziert werden. Das .NET Framework Services Installation-Tool (Regsvcs.exe) stellt die Option /appname: bereit, um einen Anwendungsnamen anzugeben. Im folgenden Beispiel wird gezeigt, wie der Anwendungsname durch Verwendung des ApplicationName-Attributs auf Assemblyebene bereitgestellt wird.

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

Wird, wie im folgenden Beispiel, das ApplicationID-Attribut (oder das Guid-Attribut) auf eine Assembly angewendet, erfolgt jede Suche nach der Anwendung auf Basis der GUID und nicht auf Basis des Anwendungsnamens.

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

Hinweis   Bei dynamischer Registrierung kann eine Zielanwendung nur angegeben werden, indem zur Entwurfszeit das ApplicationNameAttribute-Attribut, das ApplicationIDAttribute-Attribut oder das GuidAttribute-Attribut angewendet wird. Mit der Option /appname:, die im .NET Installation-Tool (Regsvcs.exe) zur Verfügung steht, kann zur Kompilierungszeit der Anwendungsname oder die GUID angegeben werden. Außerdem kann die Option /parname: in Regsvcs.exe zur Identifikation einer spezifischen COM+-Partition verwendet werden. Der Partitionsdienst von COM+ ist nur auf Windows Server 2003-Plattformen verfügbar.

Wird die Zielanwendung nicht identifiziert oder gefunden, wird durch die Registrierungsmechanismen mit Hilfe des vollständigen Namens der Assembly eine Anwendung ohne Versionsnummer erstellt

Vorsicht   Verwenden Sie das ApplicationIDAttribute-Attribut nicht mit dem Partitionsdienst von COM+. Wenn Sie den Partitionsdienst von COM+ verwenden, verhindert die Anwendung des ApplicationIDAttribute-Attributs die Konfiguration von Partitionen. Der Partitionsdienst von COM+ ist nur auf Windows Server 2003-Plattformen verfügbar.

Aktivierungstyp

Durch den Aktivierungstyp wird bestimmt, ob die Serviced Components im Prozess des Aufrufers (Bibliothek) oder in einem neuen Prozess (Server) erstellt werden. Der Aktivierungstyp wird mit Hilfe des ApplicationActivationAttribute-Attributs angegeben.

**Hinweis   **Wenn das ApplicationActivationAttribute-Attribut auf Server festgelegt ist, müssen vor Verwendung der Serveranwendung die Assembly und alle Assemblies, von denen sie abhängig ist, mit Hilfe von Windows Installer dem globalen Assemblycache hinzugefügt werden. Andernfalls wird durch die Anwendung eine Ausnahme ausgelöst. Wenn das ApplicationActivationAttribute-Attribut auf Server festgelegt ist, müssen darüber hinaus alle Parameter für Serviced Components als Serializable gekennzeichnet oder von der MarshalByRefObject-Klasse abgeleitet sein. Andernfalls wird durch die Anwendung eine Ausnahme ausgelöst.

Im folgenden Beispiel wird gezeigt, wie der Aktivierungstyp auf Server festgelegt wird.

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

Beschreibungsinformationen

Beschreibungen sind zwar optional, aber zum Zweck der Unterscheidung ähnlicher Assemblies sehr hilfreich. Im folgenden Beispiel wird gezeigt, wie das DescriptionAttribute-Attribut zum Festlegen der Beschreibung einer Assembly angewendet wird.

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

Unter den beiden folgenden Themen dieses Abschnitts werden die Registrierungsmechanismen für die Weitergabe von Anwendungen beschrieben, die COM+-Dienste verwenden:

Beide Registrierungsmechanismen vereinfachen den Registrierungsprozess, indem die geforderten Schritte zum Registrieren einer Serviced Component kombiniert werden. Bei beiden muss der Benutzer der Komponente Mitglied der Administratorgruppe sein. Bei der dynamischen Registrierung können Registrierungsinformationen (die weiter unten definiert werden) zur Entwurfszeit und teilweise auch zur Kompilierungszeit bereitgestellt werden. Bei der manuellen Registrierung können Registrierungsinformationen zur Entwurfszeit, zur Kompilierungszeit und zur Registrierungszeit bereitgestellt werden. Werden keine Registrierungsinformationen gegeben, werden diese durch den Registrierungsprozess aus den Metadaten generiert. Inkompatible Attributkombinationen werden durch den Registrierungsprozess ermittelt und mitunter auch korrigiert.

Siehe auch

Schreiben von Serviced Components | Übersicht über Serviced Components | ApplicationNameAttribute | ApplicationIDAttribute | GuidAttribute | ApplicationActivationAttribute | DescriptionAttribute | Anwenden von Attributen zum Konfigurieren von Diensten | Beispiel für eine Serviced Component | Zusammenfassung verfügbarer COM+-Dienste | Erweitern von Metadaten mit Hilfe von Attributen | System.EnterpriseServices-Namespace