Začínáme s požadavky HTTP Relay Hybrid Connections v .NET

V tomto rychlém startu vytvoříte aplikace pro odesílatele a přijímače v rozhraní .NET, které odesílají a přijímají zprávy pomocí protokolu HTTP. Aplikace používají Hybrid Connections funkce Azure Relay. Další informace o Azure Relay obecně najdete v tématu Azure Relay.

V tomto rychlém startu proveďte následující kroky:

  1. Pomocí webu Azure Portal vytvoříte obor názvů služby Relay.
  2. Pomocí webu Azure Portal vytvoříte v tomto oboru názvů hybridní připojení.
  3. Napíšeme konzolovou aplikaci serveru (naslouchacího procesu) pro příjem zpráv.
  4. Napíšeme konzolovou aplikaci klienta (odesílatele) pro odesílání zpráv.
  5. Spusťte aplikace.

Požadavky

Pro absolvování tohoto kurzu musí být splněné následující požadavky:

Vytvoření oboru názvů

  1. Přihlaste se k webu Azure Portal.

  2. Vyberte Vytvořit prostředek. Pak vyberte Integration > Relay. Pokud se v seznamu Přenos nezobrazuje, vyberte v pravém horním rohu Zobrazit vše.

  3. Vyberte Vytvořit a do pole Název zadejte název oboru názvů. Azure Portal zkontroluje, jestli je název dostupný.

  4. Zvolte předplatné Azure, ve kterém chcete obor názvů vytvořit.

  5. V části Skupinaprostředků zvolte existující skupinu prostředků, do které chcete obor názvů umístit, nebo vytvořte novou.

  6. Vyberte zemi nebo oblast, ve které chcete obor názvů hostovat.

    Vytvoření oboru názvů

  7. Vyberte Vytvořit. Tento Azure Portal vytvoří obor názvů a povolí ho. Po několika minutách systém zřídí prostředky pro váš účet.

Získání přihlašovacích údajů pro správu

  1. Vyberte Všechny prostředky a pak zvolte nově vytvořený název oboru názvů.

  2. Vyberte Zásady sdíleného přístupu.

  3. V části Zásady sdíleného přístupu vyberte RootManageSharedAccessKey.

  4. V části Zásady SAS: RootManageSharedAccessKey vyberte tlačítko Kopírovat vedle položky Primární připojovací řetězec. Tato akce zkopíruje připojovací řetězec do schránky pro pozdější použití. Vložte tuto hodnotu do Poznámkového bloku nebo jiného dočasného umístění.

  5. Zopakujte předchozí krok, zkopírujte si hodnotu primárního klíče a vložte ji do dočasného umístění pro pozdější použití.

    connection-string

Přidání hybridního připojení

Ujistěte se, že jste již vytvořili obor názvů služby Relay.

  1. Přihlaste se k webu Azure Portal.

  2. V nabídce vlevo vyberte Všechny prostředky.

  3. Vyberte obor názvů, ve kterém chcete vytvořit hybridní připojení. V tomto případě se jedná o mynewns.

  4. V části Obor názvů Relay vyberte Hybridní připojení.

    Přidání hybridního připojení

  5. V okně přehledu oboru názvů vyberte + Hybridní připojení.

    Výběr hybridního připojení

  6. V části Vytvořit hybridní připojení zadejte hodnotu názvu hybridního připojení. Ostatní hodnoty ponechte ve výchozím nastavení.

    Vyberte Nový

  7. Vyberte Vytvořit.

Vytvoření serverové aplikace (naslouchací proces)

Napište v sadě Visual Studio konzolovou aplikaci v jazyce C#, která bude naslouchat a přijímat zprávy z předávací služby.

Vytvoření konzolové aplikace

V sadě Visual Studio vytvořte nový projekt Konzolová aplikace (.NET Framework).

Přidání balíčku NuGet služby Relay

  1. Klikněte pravým tlačítkem na nově vytvořený projekt a vyberte možnost Spravovat balíčky NuGet.
  2. Vyberte možnost Zahrnout předběžné verze.
  3. Vyberte Procházet a vyhledejte Microsoft.Azure.Relay. Ve výsledcích hledání vyberte Microsoft Azure Relay.
  4. Jako verzi vyberte 2.0.0-preview1-20180523.
  5. Vyberte Nainstalovat a dokončete instalaci. Zavřete dialogové okno.

Napsání kódu pro přijímání zpráv

  1. Na začátku souboru Program.cs nahraďte existující příkazy using následujícími příkazy using:

    using System;
    using System.IO;
    using System.Threading;
    using System.Threading.Tasks;
    using Microsoft.Azure.Relay;
    using System.Net;
    
  2. Do třídy Program přidejte konstanty s podrobnostmi o hybridním připojení. Zástupné symboly v závorkách nahraďte hodnotami, které jste získali při vytváření hybridního připojení. Nezapomeňte použít plně kvalifikovaný obor názvů.

    // replace {RelayNamespace} with the name of your namespace
    private const string RelayNamespace = "{RelayNamespace}.servicebus.windows.net";
    
    // replace {HybridConnectionName} with the name of your hybrid connection
    private const string ConnectionName = "{HybridConnectionName}";
    
    // replace {SAKKeyName} with the name of your Shared Access Policies key, which is RootManageSharedAccessKey by default
    private const string KeyName = "{SASKeyName}";
    
    // replace {SASKey} with the primary key of the namespace you saved earlier
    private const string Key = "{SASKey}";
    
  3. Do třídy Program přidejte metodu RunAsync:

    private static async Task RunAsync()
    {
        var cts = new CancellationTokenSource();
    
        var tokenProvider = TokenProvider.CreateSharedAccessSignatureTokenProvider(KeyName, Key);
        var listener = new HybridConnectionListener(new Uri(string.Format("sb://{0}/{1}", RelayNamespace, ConnectionName)), tokenProvider);
    
        // Subscribe to the status events.
        listener.Connecting += (o, e) => { Console.WriteLine("Connecting"); };
        listener.Offline += (o, e) => { Console.WriteLine("Offline"); };
        listener.Online += (o, e) => { Console.WriteLine("Online"); };
    
        // Provide an HTTP request handler
        listener.RequestHandler = (context) =>
        {
            // Do something with context.Request.Url, HttpMethod, Headers, InputStream...
            context.Response.StatusCode = HttpStatusCode.OK;
            context.Response.StatusDescription = "OK, This is pretty neat";
            using (var sw = new StreamWriter(context.Response.OutputStream))
            {
                sw.WriteLine("hello!");
            }
    
            // The context MUST be closed here
            context.Response.Close();
        };
    
        // Opening the listener establishes the control channel to
        // the Azure Relay service. The control channel is continuously 
        // maintained, and is reestablished when connectivity is disrupted.
        await listener.OpenAsync();
        Console.WriteLine("Server listening");
    
        // Start a new thread that will continuously read the console.
        await Console.In.ReadLineAsync();
    
        // Close the listener after you exit the processing loop.
        await listener.CloseAsync();
    }
    
  4. Do metody Main ve třídě Program přidejte následující řádek kódu:

    RunAsync().GetAwaiter().GetResult();
    

    Hotový soubor Program.cs by měl vypadat nějak takto:

    namespace Server
    {
        using System;
        using System.IO;
        using System.Threading;
        using System.Threading.Tasks;
        using Microsoft.Azure.Relay;
    
        public class Program
        {
            private const string RelayNamespace = "{RelayNamespace}.servicebus.windows.net";
            private const string ConnectionName = "{HybridConnectionName}";
            private const string KeyName = "{SASKeyName}";
            private const string Key = "{SASKey}";
    
            public static void Main(string[] args)
            {
                RunAsync().GetAwaiter().GetResult();
            }
    
            private static async Task RunAsync()
            {
                var tokenProvider = TokenProvider.CreateSharedAccessSignatureTokenProvider(KeyName, Key);
                var listener = new HybridConnectionListener(new Uri(string.Format("sb://{0}/{1}", RelayNamespace, ConnectionName)), tokenProvider);
    
                // Subscribe to the status events.
                listener.Connecting += (o, e) => { Console.WriteLine("Connecting"); };
                listener.Offline += (o, e) => { Console.WriteLine("Offline"); };
                listener.Online += (o, e) => { Console.WriteLine("Online"); };
    
                // Provide an HTTP request handler
                listener.RequestHandler = (context) =>
                {
                    // Do something with context.Request.Url, HttpMethod, Headers, InputStream...
                    context.Response.StatusCode = HttpStatusCode.OK;
                    context.Response.StatusDescription = "OK";
                    using (var sw = new StreamWriter(context.Response.OutputStream))
                    {
                        sw.WriteLine("hello!");
                    }
    
                    // The context MUST be closed here
                    context.Response.Close();
                };
    
                // Opening the listener establishes the control channel to
                // the Azure Relay service. The control channel is continuously 
                // maintained, and is reestablished when connectivity is disrupted.
                await listener.OpenAsync();
                Console.WriteLine("Server listening");
    
                // Start a new thread that will continuously read the console.
                await Console.In.ReadLineAsync();
    
                // Close the listener after you exit the processing loop.
                await listener.CloseAsync();
            }
        }
    }
    

Vytvoření klientské aplikace (odesílatel)

Napište v sadě Visual Studio konzolovou aplikaci v jazyce C#, která bude odesílat zprávy do předávací služby.

Vytvoření konzolové aplikace

Pokud jste při vytváření služby Relay zakázali možnost Vyžaduje autorizaci klientů, můžete odeslat žádosti na adresu URL hybridních připojení pomocí libovolného prohlížeče. Pro přístup k chráněným koncovým bodům je nutné vytvořit a předat token v hlavičce ServiceBusAuthorization, která se tady zobrazí.

V sadě Visual Studio vytvořte nový projekt Konzolová aplikace (.NET Framework).

Přidání balíčku NuGet služby Relay

  1. Klikněte pravým tlačítkem na nově vytvořený projekt a vyberte možnost Spravovat balíčky NuGet.
  2. Vyberte možnost Zahrnout předběžné verze.
  3. Vyberte Procházet a vyhledejte Microsoft.Azure.Relay. Ve výsledcích hledání vyberte Microsoft Azure Relay.
  4. Jako verzi vyberte 2.0.0-preview1-20180523.
  5. Vyberte Nainstalovat a dokončete instalaci. Zavřete dialogové okno.

Zápis kódu pro odesílání žádostí

  1. Na začátku souboru Program.cs nahraďte existující příkazy using následujícími příkazy using:

    using System;
    using System.IO;
    using System.Threading;
    using System.Threading.Tasks;
    using System.Net.Http;
    using Microsoft.Azure.Relay;
    
  2. Do třídy Program přidejte konstanty s podrobnostmi o hybridním připojení. Zástupné symboly v závorkách nahraďte hodnotami, které jste získali při vytváření hybridního připojení. Nezapomeňte použít plně kvalifikovaný obor názvů.

    private const string RelayNamespace = "{RelayNamespace}.servicebus.windows.net";
    private const string ConnectionName = "{HybridConnectionName}";
    private const string KeyName = "{SASKeyName}";
    private const string Key = "{SASKey}";
    
  3. Do třídy Program přidejte následující metodu:

    private static async Task RunAsync()
    {
        var tokenProvider = TokenProvider.CreateSharedAccessSignatureTokenProvider(
                KeyName, Key);
        var uri = new Uri(string.Format("https://{0}/{1}", RelayNamespace, ConnectionName));
        var token = (await tokenProvider.GetTokenAsync(uri.AbsoluteUri, TimeSpan.FromHours(1))).TokenString;
        var client = new HttpClient();
        var request = new HttpRequestMessage()
        {
            RequestUri = uri,
            Method = HttpMethod.Get,
        };
        request.Headers.Add("ServiceBusAuthorization", token);
        var response = await client.SendAsync(request);
        Console.WriteLine(await response.Content.ReadAsStringAsync());        Console.ReadLine();
    }
    
  4. Ve třídě Program přidejte do metody Main následující řádek kódu.

    RunAsync().GetAwaiter().GetResult();
    

    Soubor Program.cs by měl vypadat nějak takto:

    using System;
    using System.IO;
    using System.Threading;
    using System.Threading.Tasks;
    using System.Net.Http;
    using Microsoft.Azure.Relay;
    
    namespace Client
    {
        class Program
        {
            private const string RelayNamespace = "{RelayNamespace}.servicebus.windows.net";
            private const string ConnectionName = "{HybridConnectionName}";
            private const string KeyName = "{SASKeyName}";
            private const string Key = "{SASKey}";
    
            static void Main(string[] args)
            {
                RunAsync().GetAwaiter().GetResult();
            }
    
            private static async Task RunAsync()
            {
               var tokenProvider = TokenProvider.CreateSharedAccessSignatureTokenProvider(
                KeyName, Key);
                var uri = new Uri(string.Format("https://{0}/{1}", RelayNamespace, ConnectionName));
                var token = (await tokenProvider.GetTokenAsync(uri.AbsoluteUri, TimeSpan.FromHours(1))).TokenString;
                var client = new HttpClient();
                var request = new HttpRequestMessage()
                {
                    RequestUri = uri,
                    Method = HttpMethod.Get,
                };
                request.Headers.Add("ServiceBusAuthorization", token);
                var response = await client.SendAsync(request);
                Console.WriteLine(await response.Content.ReadAsStringAsync());
            }
        }
    }
    

Spuštění aplikací

  1. Spusťte serverovou aplikaci. V okně konzoly uvidíte následující text:

    Online
    Server listening
    
  2. Spusťte klientskou aplikaci. Zobrazí hello! v okně klienta. Klient odeslal serveru požadavek HTTP a server odpověděl na hello! .

  3. K zavření oken konzoly, stiskněte ENTER v obou oknech konzoly.

Blahopřejeme, vytvořili jste kompletní aplikaci Hybrid Connections!

Další kroky

V tomto rychlém startu jste vytvořili klienta rozhraní .NET a serverové aplikace, které používaly protokol HTTP k odesílání a přijímání zpráv. Funkce Hybrid Connections Azure Relay také podporuje použití WebSockets k posílání a přijímání zpráv. Další informace o použití WebSockets s Azure Relay Hybrid Connections najdete v tématu rychlý Start pro WebSockets.

v tomto rychlém startu jste použili .NET Framework k vytváření klientských a serverových aplikací. Informace o tom, jak psát klientské a serverové aplikace pomocí Node.js, najdete v tématu rychlý Start kNode.js WebSockets nebo v rychlém startu proNode.js http.