Exportieren (0) Drucken
Alle erweitern

Schritt 1: Einführung und Voraussetzungen

Letzte Aktualisierung: Februar 2015

Warteschlangen übermitteln Nachrichten in FIFO-Reihenfolge (First-In-First-Out) an einen oder mehrere konkurrierende Consumer. Dies bedeutet, dass Nachrichten normalerweise von den Empfängern in der zeitlichen Reihenfolge empfangen und verarbeitet werden, in der sie in der Warteschlange gespeichert wurden, und jede Nachricht wird nur von einem Nachrichtenconsumer empfangen und verarbeitet. Als Hauptvorteil ergibt sich bei der Verwendung von Warteschlangen eine "vorübergehende Entkopplung" von Anwendungskomponenten: Die Producer und Consumer müssen Nachrichten nicht gleichzeitig senden und empfangen, da Nachrichten permanent in der Warteschlange gespeichert sind. Ein weiterer Vorteil ist der "Belastungsausgleich", durch den Producer und Consumer die Möglichkeit haben, Nachrichten mit unterschiedlichen Raten zu senden und zu empfangen.

Die folgenden Verwaltungs- und Vorbereitungsschritte sollten ausgeführt sein, bevor Sie mit dem Lernprogramm beginnen. Der erste Schritt besteht im Erstellen eines Dienstnamespace und im Abrufen eines gemeinsamen geheimen Schlüssels. Ein Dienstnamespace stellt eine Anwendungsgrenze für jede Anwendung zur Verfügung, die durch Servicebus bereitgestellt wird. Ein gemeinsamer geheimer Schlüssel wird vom System automatisch generiert, wenn ein Dienstnamespace erstellt wird. Die Kombination aus dem Dienstnamespace und dem gemeinsamen geheimen Schlüssel stellt Anmeldeinformationen bereit, mit denen Servicebus Zugriff auf eine Anwendung authentifiziert.

  1. Wenn Sie einen Dienstnamespace erstellen möchten, befolgen Sie die Schritte unter Vorgehensweise: Erstellen oder Ändern eines Service Bus-Dienstnamespaces.

  2. Klicken Sie im Hauptfenster des Azure-Verwaltungsportals auf den Namen des Dienstnamespaces, den Sie im vorherigen Schritt erstellt haben.

  3. Klicken Sie am unteren Rand des Portalfensters auf Verbindungsinformationen.

  4. Notieren Sie sich im Fenster Verbindungsinformationen abrufen den Standardaussteller und den Standardschlüssel, oder kopieren Sie diese Angaben in die Zwischenablage. Sie verwenden diese Werte später in diesem Lernprogramm.

Der nächste Schritt besteht im Erstellen eines Visual Studio-Projekts und im Schreiben von zwei Hilfsfunktionen, die eine durch Kommas getrennte Liste von Nachrichten in ein stark typisiertes (BrokeredMessage) List-Objekt laden.

  1. Öffnen Sie Visual Studio als Administrator, indem Sie mit der rechten Maustaste auf das Programm im Startmenü klicken und dann Als Administrator ausführen auswählen.

  2. Erstellen Sie ein neues Konsolenanwendungsprojekt. Klicken Sie auf das Menü Datei, und wählen Sie Neu aus. Klicken Sie anschließend auf Projekt. Klicken Sie im Dialogfeld Neues Projekt auf Visual C# (wenn Visual C# nicht angezeigt wird, suchen Sie unter Andere Sprachen), klicken Sie auf die Vorlage Konsolenanwendung, und geben Sie ihr den Namen QueueSample. Verwenden Sie den Standardspeicherort. Klicken Sie auf OK, um das Projekt zu erstellen.

  3. Klicken Sie in Projektmappen-Explorer mit der rechten Maustaste auf Ihr Projekt (in diesem Beispiel auf QueueSample), und klicken Sie dann auf Eigenschaften.

  4. Klicken Sie links auf die Registerkarte Anwendung, und wählen Sie dann .NET Framework 4 aus der Dropdownliste Zielframework aus. Klicken Sie auf Ja, wenn Sie aufgefordert werden, das Projekt neu zu laden.

  5. Fügen Sie je einen Verweis auf die Assemblys Microsoft.ServiceBus, System.Runtime.Serialization und System.ServiceModel hinzu.

    1. Klicken Sie in Projektmappen-Explorer mit der rechten Maustaste unter dem Projektordner auf den Ordner Verweise, und klicken Sie dann auf Verweis hinzufügen.

    2. Wählen Sie die Registerkarte .NET im Dialogfeld Verweis hinzufügen aus, und führen Sie dann einen Bildlauf nach unten durch, bis Microsoft.ServiceBus angezeigt wird. Wählen Sie diesen Eintrag aus, und klicken Sie dann auf OK.

    3. Wiederholen Sie den oben beschriebenen Schritt für System.Runtime.Serialization und System.ServiceModel.

  6. Doppelklicken Sie in Projektmappen-Explorer auf die Datei Program.cs, um sie im Visual Studio-Editor zu öffnen. Ändern Sie den Namespacenamen aus dem Standardnamen QueueSample in Microsoft.ServiceBus.Samples.

    namespace Microsoft.ServiceBus.Samples
    {
        …
    
  7. Fügen Sie using-Anweisungen für die Namespaces Microsoft.ServiceBus, Microsoft.ServiceBus.Messaging , Microsoft.ServiceBus.Description, System.IO und System.Data hinzu.

    using Microsoft.ServiceBus;
    using Microsoft.ServiceBus.Messaging;
    using Microsoft.ServiceBus.Description;
    using System.Data;
    using System.IO;
    
  8. Erstellen Sie eine Textdatei namens Data.csv, und kopieren Sie den folgenden durch Kommas getrennten Text in diese.

    IssueID,IssueTitle,CustomerID,CategoryID,SupportPackage,Priority,Severity,Resolved
    1,Package lost,1,1,Basic,5,1,FALSE
    2,Package damaged,1,1,Basic,5,1,FALSE
    3,Product defective,1,2,Premium,5,2,FALSE
    4,Product damaged,2,2,Premium,5,2,FALSE
    5,Package lost,2,2,Basic,5,2,TRUE
    6,Package lost,3,2,Basic,5,2,FALSE
    7,Package damaged,3,7,Premium,5,3,FALSE
    8,Product defective,3,2,Premium,5,3,FALSE
    9,Product damaged,4,6,Premium,5,3,TRUE
    10,Package lost,4,8,Basic,5,3,FALSE
    11,Package damaged,5,4,Basic,5,4,FALSE
    12,Product defective,5,4,Basic,5,4,FALSE
    13,Package lost,6,8,Basic,5,4,FALSE
    14,Package damaged,6,7,Premium,5,5,FALSE
    15,Product defective,6,2,Premium,5,5,FALSE
    
    

    Speichern Sie die Datei Data.csv, und schließen Sie sie dann. Merken Sie sich den Speicherort dieser Datei.

  9. Klicken Sie in Projektmappen-Explorer mit der rechten Maustaste auf Ihr Projekt (in diesem Beispiel auf QueueSample), klicken Sie auf Hinzufügen, und klicken Sie dann auf Vorhandenes Element.

  10. Navigieren Sie zur Datei Data.csv, die Sie in Schritt 6 erstellt haben. Klicken Sie auf die Datei, und klicken Sie dann auf Hinzufügen. Möglicherweise müssen Sie sicherstellen, dass Alle Dateien (*.*) in der Dropdownliste für den Dateityp ausgewählt ist.

  1. Deklarieren Sie vor der Methode Main() zwei Variablen: eine Variable vom Typ DataTable, die die Liste der Nachrichten in der Datei Data.csv enthält. Die andere Variable sollte ein Objekt vom Typ List sein, das für BrokeredMessage stark typisiert ist. Die letztgenannte Variable ist die Liste der Brokernachrichten, die in späteren Schritten im Lernprogramm verwendet werden.

    namespace Microsoft.ServiceBus.Samples
    {
        public class Program
        {
            private static DataTable issues;
            private static List<BrokeredMessage> MessageList;
    
    
  2. Definieren Sie außerhalb der Methode Main() eine Methode ParseCSV(), die die Liste der Nachrichten in Data.csv analysiert und die Nachrichten dann wie hier gezeigt in eine DataTable-Tabelle lädt. Die Methode gibt ein DataTable-Objekt zurück.

    static DataTable ParseCSVFile()
    {
        DataTable tableIssues = new DataTable("Issues");
        string path = @"..\..\data.csv";
        try
        {
            using (StreamReader readFile = new StreamReader(path))
            {
                string line;
                string[] row;
                // create the columns
                line = readFile.ReadLine();
                foreach (string columnTitle in line.Split(','))
                {
                    tableIssues.Columns.Add(columnTitle);
                }
                while ((line = readFile.ReadLine()) != null)
                {
                    row = line.Split(',');
                    tableIssues.Rows.Add(row);
                }
            }
        }
        catch (Exception e)
        {
            Console.WriteLine("Error:" + e.ToString());
        }
        return tableIssues;
    }
    
  3. Fügen Sie in der Methode Main() eine Anweisung hinzu, die die Methode ParseCSVFile() aufruft.

    public static void Main(string[] args)
    {
        // Populate test data
        issues = ParseCSVFile();
    }
    

  1. Definieren Sie außerhalb der Methode Main() eine Methode GenerateMessages(), die das von ParseCSVFile() zurückgegebene DataTable-Objekt übernimmt und die Tabelle dann in eine stark typisierte Liste von Brokernachrichten lädt. Die Methode gibt anschließend das List-Objekt zurück. Beispiel:

    static List<BrokeredMessage> GenerateMessages(DataTable issues)
    {
        // Instantiate the brokered list object
        List<BrokeredMessage> result = new List<BrokeredMessage>();
        // Iterate through the table and create a brokered message for each row
        foreach (DataRow item in issues.Rows)
        {
            BrokeredMessage message = new BrokeredMessage();
            foreach (DataColumn property in issues.Columns)
            {
                message.Properties.Add(property.ColumnName, item[property]);
            }
            result.Add(message);
        }
        return result;
    }
    
  2. Fügen Sie in der Methode Main() direkt unterhalb des Aufrufs von ParseCSVFile() eine Anweisung hinzu, die die Methode GenerateMessages() mit dem Rückgabewert aus ParseCSVFile() als Argument aufruft:

    public static void Main(string[] args)
    {
        // Populate test data
        issues = ParseCSVFile();
        MessageList = GenerateMessages(issues);
    }
    

  1. Erstellen Sie zuerst drei globale Zeichenfolgenvariablen, die diese Werte übernehmen sollen. Deklarieren Sie diese Variablen direkt hinter den vorherigen Variablendeklarationen. Beispiel:

    namespace Microsoft.ServiceBus.Samples
    {
        public class Program
        {
            private static DataTable issues;
            private static List<BrokeredMessage> MessageList; 
            // add these variables
            private static string ServiceNamespace;
            private static string KeyName = “RootManageSharedAccessKey”;
            private static string Key;
            …
    
  2. Erstellen Sie im nächsten Schritt eine Funktion, die den Dienstnamespace und den SAS-Schlüssel akzeptiert und speichert. Fügen Sie diese Methode außerhalb von Main() hinzu. Beispiel:

    static void CollectUserInput()
    {
        // User service namespace
        Console.Write("Please enter the service namespace to use: ");
        ServiceNamespace = Console.ReadLine();
        // Issuer key
        Console.Write("Please enter the issuer key to use: ");
        Key = Console.ReadLine();
    }
    
  3. Fügen Sie in der Methode Main() direkt unterhalb des Aufrufs von GenerateMessages() eine Anweisung hinzu, die die Methode CollectUserInput() aufruft.

    public static void Main(string[] args)
    {
        // Populate test data
        issues = ParseCSVFile();
        MessageList = GenerateMessages(issues);
        
        // Collect user input
        CollectUserInput();
    }
    

Kompilieren des Codes

  • Wählen Sie im Menü Erstellen in Visual Studio den Befehl Projektmappe erstellen aus, oder drücken Sie F6, um die bisherige Richtigkeit Ihrer Arbeitsschritte zu bestätigen.

Anzeigen:
© 2015 Microsoft