Sie sind zurzeit offline. Es wird auf die erneute Herstellung einer Internetverbindung gewartet.

SO WIRD´S GEMACHT: Erstellen einer Dienste in Anspruch nehmenden .NET-Komponente in Visual C# .NET

Dieser Artikel wurde zuvor veröffentlicht unter D306296
Dieser Artikel ist eine Übersetzung des folgenden englischsprachigen Artikels der Microsoft Knowledge Base:
306296 HOW TO: Create a Serviced .NET Component in Visual C# .NET
In Artikel 312902 wird dieses Thema für Microsoft Visual Basic .NET behandelt.
In Artikel 309108 wird dieses Thema für Microsoft Visual C++ .NET behandelt.

Hinweis: Die Verwendung der hier aufgeführten Informationen sowie Makro- oder Programmcodes geschieht auf Ihre eigene Verantwortung. Microsoft stellt Ihnen diese Informationen sowie Makro- und Programmlistings ohne Gewähr auf Richtigkeit, Vollständigkeit und/oder Funktionalität sowie ohne Anspruch auf Support zur Verfügung. Die zur Verfügung gestellten Makro- und Programmierungsbeispiele sollen lediglich exemplarisch die Funktionsweise des Beispiels aufzeigen.

Weitere Informationen zu den von Microsoft angebotenen Supportoptionen finden Sie unter folgender Internetadresse:

Inhalt

Zusammenfassung
Dieser in einzelne Schritte gegliederte Artikel demonstriert, wie Sie eine Dienste in Anspruch nehmende .NET-Komponente erstellen können, die Transaktionen verwendet, und wie Sie einen Client erstellen können, der diese Komponente testet. Die Microsoft Enterprise Services bieten Microsoft COM+ 1.0-Dienste für .NET Komponenten.

Zurück zum Anfang

Wichtige Hinweise

  • Dienste in Anspruch nehmende Komponenten benötigen eindeutige Namen.
  • Dienste in Anspruch nehmende Komponenten sollten im globalen Assemblycache (GAC) registriert sein, weil es sich bei ihnen um Ressourcen auf Systemebene handelt. Serveranwendungen müssen im GAC installiert sein, Bibliotheksanwendungen jedoch nicht (diese Vorgehensweise wird jedoch empfohlen).
  • Sie können die Registrierung Dienste in Anspruch nehmender Komponenten bei COM+ entweder automatisch durch verzögerte Registrierung oder manuell mit dem Dienstprogramm "Regsvcs.exe" vornehmen. "Regsvcs.exe" finden Sie in folgendem Ordner:
    \WINNT\Microsoft.NET\Framework\< Framework-Version >
    Weitere Informationen zu "Regsvcs.exe" entnehmen Sie bitte der Dokumentation im Software Development Kit (SDK) für Microsoft .NET Framework.
  • Bei diesem Beispiel wird davon ausgegangen, dass auf dem lokalen Computer Microsoft SQL Server installiert ist.
  • Dieses Beispiel soll nur zu Demonstrationszwecken dienen. Eigentlich ist die Select-Abfrage dieses Beispiels besser dafür geeignet, außerhalb einer COM+-Transaktion ausgeführt zu werden, weil COM+ den höchsten Isolationsgrad für die Transaktion verwendet. Für niedrigere Transaktionsebenen sollte man guter Programmierungspraxis entsprechend Read-Abfragen in Erwägung ziehen, um den Datenbankdurchsatz zu erhöhen.
Zurück zum Anfang

Erstellung der Dienste in Anspruch nehmenden .NET-Komponente

  1. Erstellen Sie ein neues Visual C#-Klassenbibliotheksprojekt mit dem Namen "ServicedCOM".
  2. Ändern Sie den Namen Ihrer standardmäßigen Klassendatei von "Class1.cs" zu "SimpleTrans.cs".
  3. Fügen Sie einen Verweis auf den Namespace System.EnterpriseServices hinzu.
  4. Fügen Sie die folgende Anweisung in die Datei "SimpleTrans.cs" (unmittelbar vor der Klassendeklaration) und die Datei "AssemblyInfo.cs" ein:
    using System.EnterpriseServices;
  5. Übernehmen Sie Ihre Klasse von "ServicedCOM".
  6. Fügen Sie den folgenden Code unmittelbar vor der Deklaration "Public Class" (Öffentliche Klasse) ein:
    [Transaction(TransactionOption.RequiresNew)]
  7. Fügen Sie der Datei "AssemblyInfo.cs" die folgenden empfohlenen Attribute hinzu:
    [assembly: ApplicationActivation(ActivationOption.Library)][assembly: ApplicationName("SimpleTrans")]	
    • Das Attribut ActivationOption gibt an, ob die Komponente innerhalb des Prozesses des Aufrufers aktiviert wird. Für Activation.Option stehen Ihnen die Optionen Bibliothek oder Server zur Verfügung.
    • Das Attribut ApplicationName steht für den Namen, der für die COM+-Anwendung im COM+-Katalog und in der Konsole "Component Services Administration" angegeben wird.
  8. Fügen Sie der Datei "SimpleTrans.cs" das folgende optionale Attribut hinzu:
    [assembly: Description("Simple Transactional application to show Enterprise Services")]
    Dieses Attribut liefert eine Beschreibung für die COM+-Anwendung im COM+-Katalog und in der Konsole "Component Services Administration".
  9. Fügen Sie der Datei "SimpleTrans.cs" die folgende Methode hinzu:
    // Demos Explicit SetComplete/SetAbort        public string DoTrans()        {            SqlConnection	connection;            SqlCommand		command;             SqlDataReader	reader;            string		name;            string		query;		            try            {                query = "SELECT au_lname, au_fname FROM authors";                connection = new SqlConnection("data source = localhost;                                                initial catalog = pubs;                                                UID=sa;PWD=");                command = new SqlCommand(query, connection);                connection.Open();                reader = command.ExecuteReader();				                reader.Read();                name = reader.GetString(0) + ", " + reader.GetString(1);            }            catch(Exception exc)            {                ContextUtil.SetAbort();                throw exc;            }            return name;    }// Demo implicit SetComplete/SetAbort[AutoComplete]public void DoTxAuto(){    // Do stuff}
  10. Modifizieren Sie die Zeichenfolge SqlConnection so, dass sie Ihrer Umgebung entspricht.
Zurück zum Anfang

Geben Sie Ihrer Assembly einen eindeutigen Namen

  1. Zeigen Sie im Menü Start auf Programme. Zeigen Sie auf Microsoft Visual Studio .NET, dann auf Visual Studio .NET-Tools und klicken Sie anschließend auf Visual Studio .NET-Eingabeaufforderung.
  2. In der Eingabeaufforderung geben Sie sn.exe -k ServicedCOM.snk ein, um Ihrer Assembly einen eindeutigen Namen zu geben.

    Informationen zur Vergabe eindeutiger Namen für Assemblies finden Sie in der Software Development Kit (SDK) - Dokumentation für .NET Framework.
  3. Kopieren Sie die Datei "ServicedCOM.snk" in den Projektordner.
  4. Ersetzen Sie in der Datei "AssemblyInfo.cs" den Code AssemblykeyFile durch den folgenden Code:
    [assembly: AssemblyKeyFile("..\\..\\ServicedCOM.snk")]
Zurück zum Anfang

Hinzufügen Ihrer Dienste in Anspruch nehmenden Komponente zu COM+

Sie können die Komponente dynamisch registrieren lassen, wenn die erste Instanz erstellt wird, oder Sie können die Komponente manuell unter Verwendung des Dienstprogramms "Regsvcs.exe" registrieren. Um "Regsvcs.exe" einzusetzen, gehen Sie bitte folgendermaßen vor:
  1. Zeigen Sie im Menü Start auf Programme. Zeigen Sie auf Microsoft Visual Studio .NET, dann auf Visual Studio .NET-Tools und klicken Sie anschließend auf Visual Studio .NET-Eingabeaufforderung.
  2. In der Eingabeaufforderung geben Sie bitte regsvcs servicedcom.dll ein. Dadurch wird eine COM+-Bibliotheksanwendung erstellt, deren Name dem Ihrer Klasse entspricht.
Zurück zum Anfang

Testen Ihrer Komponente

  1. Öffnen Sie in "Notepad" eine Textdatei.
  2. Kopieren Sie den folgenden Code in die Datei:
    set o =createobject("ServicedCOM.SimpleTrans")MsgBox o.DoTrans()
  3. Klicken Sie im Menü Datei auf Speichern.
  4. Im Dialogfeld Speichern unter geben Sie bitte Test.vbs in das Feld Dateiname ein. Klicken Sie in der Liste Dateityp auf Alle Dateien, und klicken Sie dann auf Speichern.
  5. Klicken Sie doppelt auf die Datei, um das Beispiel auszuführen.
Zurück zum Anfang

Bitte beachten Sie: Bei diesem Artikel handelt es sich um eine Übersetzung aus dem Englischen. Es ist möglich, dass nachträgliche Änderungen bzw. Ergänzungen im englischen Originalartikel in dieser Übersetzung nicht berücksichtigt sind. Die in diesem Artikel enthaltenen Informationen basieren auf der/den englischsprachigen Produktversion(en). Die Richtigkeit dieser Informationen in Zusammenhang mit anderssprachigen Produktversionen wurde im Rahmen dieser Übersetzung nicht getestet. Microsoft stellt diese Informationen ohne Gewähr für Richtigkeit bzw. Funktionalität zur Verfügung und übernimmt auch keine Gewährleistung bezüglich der Vollständigkeit oder Richtigkeit der Übersetzung.
Eigenschaften

Artikelnummer: 306296 – Letzte Überarbeitung: 03/11/2003 21:44:00 – Revision: 1.2

  • Microsoft .NET Framework Service Pack 2
  • Microsoft Visual C# .NET 2002 Standard Edition
  • kbhowto kbhowtomaster KB306296
Feedback