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

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 306296 - Produkte anzeigen, auf die sich dieser Artikel bezieht
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
Alles erweitern | Alles schließen

Auf dieser Seite

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.

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.

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.

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")]

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.

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.


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

Artikel-ID: 306296 - Geändert am: Dienstag, 11. März 2003 - Version: 1.2
Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft .NET Framework Service Pack 2
  • Microsoft Visual C# .NET 2002 Standard Edition
Keywords: 
kbhowto kbhowtomaster KB306296
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.

Ihr Feedback an uns

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com