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.
Hinweis: |
---|
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
Copyright © 2007 by Microsoft Corporation. Alle Rechte vorbehalten.