Freigeben über


Beispiel für Serviced Components

Das folgende Beispiel ist eine Serviced Component, die aus zwei Teilen besteht, einem Client und einem Server. In dem Beispiel wird die Account-Klasse von der ServicedComponent-Klasse abgeleitet, wodurch sichergestellt ist, dass die Kontexte der Account-Objekte in COM+ gehostet werden. Die folgenden Attribute werden in diesem Beispiel angewendet:

  • TransactionAttribute   Wird auf die Account-Klasse angewendet, um die Transaktion auf Required festzulegen. Dies entspricht der Verwendung des Komponentendienste-Verwaltungstools (verfügbar in der Windows-Systemsteuerung) zum Festlegen der Transaktionsunterstützung für eine COM+-Komponente.

  • AutoCompleteAttribute   Wird auf die Post-Methode angewendet. Dieses Attribut weist die Runtime an, die SetAbort-Funktion für die Transaktion automatisch aufzurufen, wenn eine nicht behandelte Ausnahme während der Ausführung der Methode generiert wird. Andernfalls ruft die Runtime die SetComplete-Funktion auf.

Neben den in diesem Beispiel verwendeten Attributen werden ebenfalls verschiedene Attribute auf Assemblyebene verwendet, um COM+-Registrierungsinformationen bereitzustellen. Eine Serviced Component muss über einen starken Namen verfügen und für eine manuelle Registrierung im globalen Assemblycache (GAC) abgelegt werden. Weitere Informationen zu Assemblys finden Sie unter Assemblys mit starkem Namen.

NoteHinweis:

Im GAC abgelegte Assemblys können keine dynamische Registrierung verwenden. Wenn Sie eine Serveranwendung erstellen, müssen die Assembly sowie alle Assemblys, von denen diese abhängt, mithilfe von Windows Installer dem globalen Assemblycache (Global Assembly Cache, GAC) hinzugefügt werden, bevor die Serveranwendung verwendet werden kann. Andernfalls generiert die Anwendung eine Ausnahme.

BankComponent-Server

Imports System.EnterpriseServices
Imports System.Runtime.CompilerServices
Imports System.Reflection

' Supply the COM+ application name. 
<assembly: ApplicationName("BankComponent")>
' Supply a strong-named assembly.
<assembly: AssemblyKeyFileAttribute("BankComponent.snk")>

Namespace BankComponent
      <Transaction(TransactionOption.Required)> _
      Public Class Account 
Inherits ServicedComponent
            <AutoComplete()> _
            Public Sub  Post(accountNum As Integer, amount As Double)
                  ' Updates the database; no need to call SetComplete.
                  ' Calls SetComplete automatically if no exception is generated.
            End Sub 
      End Class 
End Namespace 
using System.EnterpriseServices;
using System.Runtime.CompilerServices;
using System.Reflection;

// Supply the COM+ application name.
[assembly: ApplicationName("BankComponent")]
// Supply a strong-named assembly.
[assembly: AssemblyKeyFileAttribute("BankComponent.snk")]

namespace BankComponent
{
      [Transaction(TransactionOption.Required)]
      public class Account : ServicedComponent
      {
            [AutoComplete] 
            public bool Post(int accountNum, double amount)
            {
                /* Updates the database; no need to call SetComplete.
                   Calls SetComplete automatically if no exception is
                   generated. */
            return false;     
            } 
      }
}

BankComponent-Client

Imports BankComponent
Public Class Client 
   Shared Sub Main()
      Dim Account As New Account()
      ' Post money into the account. 
      Account.Post(5, 100)
   End Sub
End Class
using BankComponent;
namespace BankComponentConsoleClient
{
      class Client
      {
            public static int Main() 
            {
                  try
                  {
                        Account act = new Account();
                        // Post money into the account.
                        act.Post(5, 100);
                        return(0);
                  }
                  catch
                  {
                        return(1);
                  }
            }
      }
}

Makefile.bat

Server und Client können wie folgt kompiliert werden:

sn –k BankComponent.snk
vbc /t:library /r:System.EnterpriseServices.dll Bank.vb
vbc /r:Bank.dll /r:System.EnterpriseServices.dll BankClient.vb
sn –k BankComponent.snk
csc /t:library /r:System.EnterpriseServices.dll Bank.cs
csc /r:Bank.dll BankClient.cs

Siehe auch

Aufgaben

Verfahrensweise: Erstellen einer Serviced Component

Referenz

ServicedComponent
System.EnterpriseServices Namespace

Konzepte

Serviced Components – Übersicht
Anwenden von Attributen zum Konfigurieren von COM+-Diensten
Registrieren von Serviced Components
Zusammenfassung der verfügbaren COM+-Dienste

Weitere Ressourcen

Schreiben von Serviced Components

Footer image

Copyright © 2007 by Microsoft Corporation. Alle Rechte vorbehalten.