Exportieren (0) Drucken
Alle erweitern

Schritt 1: Einführung und Voraussetzungen

Letzte Aktualisierung: September 2014

Warteschlangen bieten FIFO-Nachrichtenübermittling (First In, First Out) an mindestens einen konkurrierenden 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 mit verschiedenen Raten Nachrichten senden und empfangen können.

Die folgenden Verwaltungs- und Vorbereitungsschritte sollten stattfinden, 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 für Servicebus für die Authentifizierung des Zugriffs auf eine Anwendung zur Verfügung.

  1. Wenn Sie einen Dienstnamespace erstellen möchten, befolgen Sie die Schritte unter So wird es gemacht: Erstellen oder Ändern eines Service Bus Service-Namespaces.

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

  3. Klicken Sie am unteren Rand des Portalfensters auf Zugriffsschlüssel.

  4. Notieren Sie sich im Fenster Verbindung mit Ihrem Namespace herstellen 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 2012-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 2012 als Administrator, indem Sie mit der rechten Maustaste im Startmenü auf das Programm klicken und dann Als Administrator ausführen auswählen.

  2. Erstellen Sie ein neues Konsolenanwendungsprojekt. Klicken Sie im Menü Datei, und wählen Sie dann 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 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 eine Anweisung using 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 spätere Schritte im Lernprogramm verwenden.

    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() erstellte DataTable-Objekt annimmt 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 enthalten. 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 IssuerName;
            private static string IssuerKey;
            …
    
  2. Erstellen Sie im nächsten Schritt eine Funktion, die den Dienstnamespace, den Ausstellernamen und den Ausstellerschlü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 name
        Console.Write("Please enter the issuer name to use: ");
        IssuerName = Console.ReadLine();
    
        // Issuer key
        Console.Write("Please enter the issuer key to use: ");
        IssuerKey = 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 die Option Projektmappe erstellen aus, oder drücken Sie F6, um die bisherige Richtigkeit Ihrer Arbeitsschritte zu bestätigen.

Anzeigen:
© 2015 Microsoft