Azure Service Bus kuyruklarını kullanan çok katmanlı .NET uygulaması

Visual Studio ve .NET için ücretsiz Azure SDK kullanarak Microsoft Azure'a yönelik geliştirme işlemleri oldukça kolaydır. Bu öğretici, yerel ortamınızda çalışan birden çok Azure kaynağı kullanan bir uygulama oluşturmak için sizi adım adım yönlendirir.

Aşağıdakileri öğreneceksiniz:

  • Tek bir indirme ve yükleme işlemiyle bilgisayarınızı Azure geliştirmesine elverişli hale getirme.
  • Azure'a yönelik geliştirmeler için Visual Studio'yu kullanma.
  • Web ve çalışan rollerini kullanarak Azure'da çok katmanlı uygulama oluşturma.
  • Service Bus kuyruklarını kullanarak katmanlar arasında iletişim kurma.

Not

Bu öğreticiyi tamamlamak için bir Azure hesabınızın olması gerekir. MSDN abone avantajınızı etkinleştirebilir ya da ücretsiz hesap için kaydolabilirsiniz.

Bu öğreticide, çok katmanlı uygulamayı bir Azure bulut hizmetinde derleyip çalıştıracaksınız. Ön uç, bir ASP.NET MVC web rolüdür. Arka uç ise Service Bus kuyruğu kullanan bir çalışan rolüdür. Aynı çok katmanlı uygulamayı, bulut hizmeti yerine bir Azure web sitesine dağıtılan web projesi özelliğine sahip ön uçla da oluşturabilirsiniz. Ayrıca, .NET bulut/şirket içi karma uygulama öğreticisine de başvurabilirsiniz.

Aşağıdaki ekran görüntüsünde tamamlanmış uygulama gösterilmektedir.

Application's Submit page

Senaryoya genel bakış: roller arası iletişim

İşlenmek üzere bir sipariş göndermeniz için web rolünde çalışan ön uç kullanıcı arabirimi bileşeninin çalışan rolünde çalışmakta olan orta katman mantığı ile etkileşim içinde olması gerekir. Bu örnekte, katmanlar arasındaki iletişim için Service Bus mesajlaşması kullanılır.

Web katmanı ve orta katman arasında Service Bus mesajlaşmasını kullanma iki bileşeni birbirinden ayırır. Doğrudan mesajlaşmanın (TCP veya HTTP) aksine, web katmanı doğrudan orta katmana bağlanmaz; bunun yerine, iş birimlerini iletiler olarak Service Bus'a göndererek orta katman bunları tüketmeye ve işlemeye hazır olana kadar bunları güvenilir bir şekilde korur.

Service Bus, kuyruklar ve konu başlıkları olmak üzere aracılı mesajlaşmayı desteklemek için iki varlık sunar. Kuyruklar kısmında, kuyruğa gönderilen her ileti tek bir alıcı tarafından kullanılır. Konu başlıkları ise yayınlanan tüm iletilerin konu başlığına kayıtlı olan bir abonelikte kullanılabilir hale geldiği yayımla/paylaş düzenini destekler. Her abonelik mantıksal olarak kendi ileti kuyruğunu korur. Ayrıca abonelikler, filtreyle eşleşen abonelik kuyruğuna gönderilen ileti kümesini sınırlayan filtre kuralları ile yapılandırabilir. Aşağıdaki örnekte Service Bus kuyrukları kullanılır.

Diagram showing the communication between the Web Role, Service Bus, and the Worker Role.

Bu iletişim mekanizması, doğrudan mesajlaşma ile karşılaştırıldığında birçok avantaj sunar:

  • Zamana bağlı ayırma. Zaman uyumsuz mesajlaşma düzenini kullandığınızda, üreticilerin ve tüketicilerin aynı anda çevrimiçi olması gerekmez. Service Bus, kullanıcı taraf iletileri almaya hazır olana kadar güvenli bir şekilde depolar. Bu özellik, dağıtılan uygulamanın bileşenlerinin isteğe bağlı olarak (örneğin, bakım için) veya bir bileşenin çökmesinden dolayı bağlantısının sistemin tamamını etkilemeden kesilmesine olanak sağlar. Ayrıca, kullanıcı uygulamanın yalnızca günün belirli zamanlarında çevrimiçi olması gerekebilir.

  • Yük dengeleme. Birçok uygulamada, sistem yükü zamana göre değişirken çalışmanın her birimi için gereken işleme süresi genel olarak aynıdır. Bir kuyruk aracılığıyla ileti üreticileri ve tüketicileri arasında bağlantı kurmak, kullanıcı uygulamaya (çalışan) en fazla yük yerine yalnızca ortalama yük sağlanması gerektiği anlamına gelir. Gelen yük hacmi değiştikçe kuyruğun derinliği artar ve daralır. Bu işlem, uygulama yükünü sunmak için gereken altyapı miktarı bağlamında doğrudan para tasarrufu sağlar.

  • Yük dengeleme. Yük arttıkça kuyruktan okunmak üzere daha fazla çalışan işlemi eklenebilir. Her ileti yalnızca bir çalışan işlemi tarafından işlenir. Ayrıca, bu çekme tabanlı yük dengeleme, çalışan makineleri işleme gücü açısından farklılık gösterse bile çalışan makinelerin en iyi şekilde kullanılmasını sağlar, çünkü iletileri kendi maksimum hızlarında çekerler. Bu düzen, genelde rakip tüketici düzeni olarak adlandırılır.

    Diagram showing the communication between the Web Role, the Service Bus, and two Worker Roles.

Aşağıdaki bölümlerde, bu mimariyi uygulayan kod ele alınır.

Önkoşullar

Bu öğreticide, ve ServiceBusAdministrationClient nesneleri oluşturmak ServiceBusClient için Microsoft Entra kimlik doğrulamasını kullanacaksınız. Ayrıca DefaultAzureCredential ve kullanacaksınız. Uygulamayı bir geliştirme ortamında yerel olarak test etmek için aşağıdaki adımları uygulamanız gerekir.

  1. Bir uygulamayı Microsoft Entra Id'ye kaydedin.
  2. Uygulamayı Service Bus Data Owner role ekleyin.
  3. AZURE-CLIENT-ID, , AZURE-TENANT-IDVE AZURE-CLIENT-SECRET ortam değişkenlerini ayarlayın. Yönergeler için bu makaleye bakın.

Service Bus yerleşik rollerinin listesi için bkz . Service Bus için Azure yerleşik rolleri.

Ad alanı oluşturma

İlk adım bir ad alanı oluşturmak ve bu ad alanı için Paylaşılan Erişim İmzası (SAS) anahtarı almaktır. Ad alanı, Service Bus tarafından kullanıma sunulan her uygulama için bir uygulama sınırı sağlar. Bir ad alanı oluşturulduğunda sistem tarafından bir SAS anahtarı oluşturulur. Ad alanı adı ve SAS anahtarı birleşimi ile Service Bus hizmetinin bir uygulamaya erişim kimliğini doğrulayan kimlik bilgisi sağlanır.

Azure portalında bir ad alanı oluşturma

Azure'da Service Bus mesajlaşma varlıklarını kullanmaya başlamak için öncelikle Azure'da benzersiz olan bir ad alanı oluşturmanız gerekir. Ad alanı, uygulamanızdaki Service Bus kaynakları (kuyruklar, konular vb.) için bir kapsam kapsayıcısı sağlar.

Ad alanı oluşturmak için:

  1. Azure Portal’ında oturum açın.

  2. Tüm hizmetler sayfasına gidin.

  3. Sol gezinti çubuğunda, kategoriler listesinden Tümleştirme'yi seçin, fareyi Service Bus'ın üzerine getirin ve ardından Service Bus kutucuğundaki düğmeyi seçin+.

    Image showing selection of Create a resource, Integration, and then Service Bus in the menu.

  4. Ad alanı oluştur sayfasının Temel bilgiler etiketinde şu adımları izleyin:

    1. Abonelik için ad alanının oluşturulacağı bir Azure aboneliği seçin.

    2. Kaynak grubu için, ad alanının yaşayacağı mevcut bir kaynak grubunu seçin veya yeni bir tane oluşturun.

    3. Ad alanı için bir ad girin. Ad alanı adı aşağıdaki adlandırma kurallarına uymalıdır:

      • Adın Azure genelinde benzersiz olması gerekir. Adın kullanılabilirliği sistem tarafından hemen denetlenir.
      • Ad uzunluğu en az 6 ve en fazla 50 karakterdir.
      • Ad yalnızca harf, sayı, kısa çizgi "-" içerebilir.
      • Ad bir harfle başlamalı ve bir harf veya numarayla bitmelidir.
      • Ad "-sb" veya "-mgmt" ile bitmiyor.
    4. Konum için ad alanınızın barındırılacağı bölgeyi seçin.

    5. Fiyatlandırma katmanı için ad alanı için fiyatlandırma katmanını (Temel, Standart veya Premium) seçin. Bu hızlı başlangıç için Standart'ı seçin.

      Önemli

      Konuları ve abonelikleri kullanmak istiyorsanız Standart veya Premium'u seçin. Konular/abonelikler Temel fiyatlandırma katmanında desteklenmez.

      Premium fiyatlandırma katmanını seçtiyseniz, mesajlaşma birimi sayısını belirtin. Premium katman, her iş yükünün yalıtılmış olarak çalışması için CPU ve bellek düzeyinde kaynak yalıtımı sağlar. Bu kaynak kapsayıcısı mesajlaşma birimi olarak adlandırılır. Premium ad alanında en az bir mesajlaşma birimi vardır. Her Service Bus Premium ad alanı için 1, 2, 4, 8 veya 16 mesajlaşma birimleri seçebilirsiniz. Daha fazla bilgi için bkz . Service Bus Premium Mesajlaşma.

    6. Sayfanın alt kısmındaki Gözden geçir ve oluştur'u seçin.

      Image showing the Create a namespace page

    7. Gözden geçir ve oluştur sayfasında ayarları gözden geçirin ve Oluştur'u seçin.

  5. Kaynağın dağıtımı başarılı olduktan sonra dağıtım sayfasında Kaynağa git'i seçin.

    Image showing the deployment succeeded page with the Go to resource link.

  6. Service Bus ad alanınızın giriş sayfasını görürsünüz.

    Image showing the home page of the Service Bus namespace created.

Ad alanına bağlantı dizesi alma (Azure portalı)

Yeni bir ad alanı oluşturmak otomatik olarak birincil ve ikincil anahtarlarla ilk Paylaşılan Erişim İmzası (SAS) ilkesini ve her birinin ad alanının tüm yönleri üzerinde tam denetim sağlayan birincil ve ikincil bağlantı dizesi oluşturur. Normal gönderenler ve alıcılar için daha kısıtlı haklara sahip kurallar oluşturma hakkında bilgi için bkz . Service Bus kimlik doğrulaması ve yetkilendirmesi .

İstemci, Service Bus ad alanına bağlanmak için bağlantı dizesi kullanabilir. Ad alanınızın birincil bağlantı dizesi kopyalamak için şu adımları izleyin:

  1. Service Bus Ad Alanı sayfasında soldaki menüden Paylaşılan erişim ilkeleri'ni seçin.

  2. Paylaşılan erişim ilkeleri sayfasında RootManageSharedAccessKey'i seçin.

  3. İlke: RootManageSharedAccessKey penceresinde Birincil Bağlan Ion Dizesi'nin yanındaki kopyala düğmesini seçerek bağlantı dizesi daha sonra kullanmak üzere panonuza kopyalayın. Bu değeri Not Defteri veya başka bir geçici konuma yapıştırın.

    Screenshot shows an S A S policy called RootManageSharedAccessKey, which includes keys and connection strings.

    Birincil anahtar, ikincil anahtar, birincil bağlantı dizesi ve ikincil bağlantı dizesi kopyalamak için bu sayfayı kullanabilirsiniz.

Web rolü oluşturma

Bu bölümde, uygulamanızın ön ucunu derleyin. Öncelikle, uygulamanızda görüntülenecek sayfaları oluşturursunuz. Daha sonra, Service Bus kuyruğuna öğe gönderen ve kuyruk hakkındaki durum bilgilerini gösteren kodu ekleyin.

Proje oluşturma

  1. Yönetici ayrıcalıklarını kullanarak Visual Studio'yu başlatın: Visual Studio program simgesine sağ tıklayın ve yönetici olarak çalıştır'ı seçin. Bu makalenin devamında açıklanan Azure İşlem Öykünücüsü, Visual Studio'nun yönetici ayrıcalıklarıyla başlatılmasını gerektirir.

    Visual Studio’da, Dosya menüsünden Yeni’yi ve ardından Proje’yi seçin.

  2. Şablonlar sayfasında şu adımları izleyin:

    1. Programlama dili için C# seçeneğini belirleyin.

    2. Proje türü için Bulut'a tıklayın.

    3. Azure Bulut Hizmeti'ne tıklayın.

    4. İleri'yi seçin.

      Screenshot of the New Project dialog box with Cloud selected and Azure Cloud Service Visual C# highlighted and outlined in red.

  3. Projeyi MultiTierApp olarak adlandırın, proje için konum seçin ve ardından Oluştur'u seçin.

    Specify project name.

  4. Roller sayfasında ASP.NET Web Rolü'ne çift tıklayın ve Tamam'ı seçin.

    Select Web Role

  5. Azure Bulut Hizmeti çözümü altında WebRole1'in üzerine gelin, kalem simgesini seçin ve web rolünü FrontendWebRole olarak yeniden adlandırın. Ardından Tamam'ı seçin. ("Frontend" öğesini "FrontEnd" olarak değil de küçük 'e' ile yazdığınızdan emin olun.)

    Screenshot of the New Microsoft Azure Cloud Service dialog box with the solution renamed to FrontendWebRole.

  6. Yeni ASP.NET Web Uygulaması oluştur iletişim kutusunda MVC'yi ve ardından Oluştur'u seçin.

    Screenshot of the New ASP.NET Project dialog box with MVC highlighted and outlined in red and the Change Authentication option outlined in red.

  7. Çözüm Gezgini FrontendWebRole projesinde Başvurular'a sağ tıklayıp NuGet Paketlerini Yönet'i seçin.

  8. Gözat sekmesini seçin, ardından Azure.Messaging.ServiceBus araması yapın. Azure.Messaging.ServiceBus paketini seçin, Yükle'yi seçin ve kullanım koşullarını kabul edin.

    Screenshot of the Manage NuGet Packages dialog box with the Azure.Messaging.ServiceBus highlighted and the Install option outlined in red.

    Gerekli istemci derlemelerine başvuru oluşturulduğunu ve bazı yeni kod dosyaları eklendiğini unutmayın.

  9. NuGet paketini projeye eklemek Azure.Identity için aynı adımları izleyin.

  10. Çözüm Gezgini'da FronendWebRole'yi genişletin, Modeller'e sağ tıklayın ve Ekle'yi ve ardından Sınıf'ı seçin. Ad kutusuna OnlineOrder.cs yazın: Ardından Ekle'yi seçin.

Web rolünüz için kod yazma

Bu bölümde, uygulamanızın görüntülediği çeşitli sayfalar oluşturursunuz.

  1. Visual Studio'daki OnlineOrder.cs dosyasında var olan ad alanı tanımını şu kod ile değiştirin:

    namespace FrontendWebRole.Models
    {
        public class OnlineOrder
        {
            public string Customer { get; set; }
            public string Product { get; set; }
        }
    }
    
  2. Çözüm Gezgini'nde Controllers\HomeController.cs öğesine çift tıklayın. Service Bus hizmetinin yanı sıra az önce oluşturduğunuz modele yönelik ad alanlarını da içermesi için dosyanın başına aşağıdaki using deyimlerini ekleyin.

     using FrontendWebRole.Models;
     using Azure.Messaging.ServiceBus;    
    
  3. Ayrıca, Visual Studio'daki HomeController.cs dosyasında var olan ad alanı tanımını da aşağıdaki kod ile değiştirin. Bu kod, öğelerin kuyruğa gönderilme işleminin ele alınmasına yönelik yöntemleri içerir.

    namespace FrontendWebRole.Controllers
    {
        public class HomeController : Controller
        {
            public ActionResult Index()
            {
                // Simply redirect to Submit, since Submit will serve as the
                // front page of this application.
                return RedirectToAction("Submit");
            }
    
            public ActionResult About()
            {
                return View();
            }
    
            // GET: /Home/Submit.
            // Controller method for a view you will create for the submission
            // form.
            public ActionResult Submit()
            {
                // Will put code for displaying queue message count here.
    
                return View();
            }
    
            // POST: /Home/Submit.
            // Controller method for handling submissions from the submission
            // form.
            [HttpPost]
            // Attribute to help prevent cross-site scripting attacks and
            // cross-site request forgery.  
            [ValidateAntiForgeryToken]
            public ActionResult Submit(OnlineOrder order)
            {
                if (ModelState.IsValid)
                {
                    // Will put code for submitting to queue here.
    
                    return RedirectToAction("Submit");
                }
                else
                {
                    return View(order);
                }
            }
        }
    }
    
  4. Şu ana kadarki çalışmanızın doğruluğunu test etmek için Derle menüsünden Çözüm Derle'yi seçin.

  5. Şimdi daha önceden oluşturduğunuz Submit() yöntemi görünümünü oluşturun. HomeController.cs dosyasında yöntemine Submit() (parametresiz aşırı yüklemeSubmit()) sağ tıklayın ve görünüm ekle'yi seçin.

  6. Yeni İskeleli Öğe Ekle iletişim kutusunda Ekle'yi seçin.

  7. Görünüm Ekle iletişim kutusunda şu adımları uygulayın:

    1. Şablon listesinde Oluştur seçeneğini belirleyin.

    2. Model sınıfı listesinde OnlineOrder sınıfını seçin.

    3. Ekle'yi seçin.

      A screenshot of the Add View dialog box with the Template and Model class drop-down lists outlined in red.

  8. Şimdi, uygulamanızın görüntülenen adını değiştirin. Çözüm Gezgini,Views\Shared\_Layout.cshtml dosyasına çift tıklayarak dosyayı Visual Studio düzenleyicisinde açın.

  9. My ASP.NET Application uygulamasının tüm örneklerini Northwind Traders Products olarak değiştirin.

  10. Home, About ve Contact bağlantılarını kaldırın. Vurgulanmış kodu silme:

    Screenshot of the code with three lines of H T M L Action Link code highlighted.

  11. Son olarak, gönderim sayfasını kuyruk hakkındaki bazı bilgileri içerecek şekilde değiştirin. Çözüm Gezgini'nde, Views\Home\Submit.cshtml dosyasına çift tıklayarak dosyayı Visual Studio düzenleyicisinde açın. <h2>Submit</h2> öğesinden sonra aşağıdaki satırı ekleyin. ViewBag.MessageCount, şimdilik boştur. Daha sonra dolduracaksınız.

    <p>Current number of orders in queue waiting to be processed: @ViewBag.MessageCount</p>
    
  12. Şu anda kullanıcı arabiriminizi uyguladınız. Uygulamanızı çalıştırmak ve istediğiniz gibi göründüğünü doğrulamak için F5'e basabilirsiniz.

    Screenshot of the application's Submit page.

Service Bus kuyruğuna öğe göndermek için kod yazma

Şimdi, öğeleri kuyruğa göndermek için bir kod ekleyin. İlk olarak, Service Bus kuyruğunuzun bağlantı bilgilerini içeren bir sınıf oluşturun. Ardından, bağlantınızı Global.aspx.cs üzerinden başlatın. Son olarak, öğeleri gerçekten Service Bus kuyruğuna göndermek için daha önce HomeController.cs dosyasında oluşturduğunuz gönderme kodunu güncelleştirin.

  1. Çözüm Gezgini'nde, FrontendWebRole projesine sağ tıklayın (role değil, projeye tıklayın). Ekle'yi ve ardından Sınıf'ı seçin.

  2. Sınıfı QueueConnector.cs olarak adlandırın. Sınıfı oluşturmak için Ekle'yi seçin.

  3. Şimdi, bağlantı bilgilerini yalıtan ve Service Bus kuyruğuna bağlantıyı başlatan kodu ekleyin. QueueConnector.cs öğesinin tüm içeriğini aşağıdaki kodla değiştirin ve your Service Bus namespace öğesi (ad alanınızın adı) ile daha önce Azure portalda elde ettiğiniz birincil anahtarınız olan yourKey öğesi için değerleri girin.

     using System;
     using System.Collections.Generic;
     using System.Linq;
     using System.Web;
     using System.Threading.Tasks;
     using Azure.Messaging.ServiceBus;
     using Azure.Messaging.ServiceBus.Administration;
    
    namespace FrontendWebRole
    {
         public static class QueueConnector
         {
             // object to send messages to a Service Bus queue
             internal static ServiceBusSender SBSender;
    
             // object to create a queue and get runtime properties (like message count) of queue
             internal static ServiceBusAdministrationClient SBAdminClient;
    
             // Fully qualified Service Bus namespace
             private const string FullyQualifiedNamespace = "<SERVICE BUS NAMESPACE NAME>.servicebus.windows.net";
    
             // The name of your queue.
             internal const string QueueName = "OrdersQueue";
    
             public static async Task Initialize()
             {
                 // Create a Service Bus client that you can use to send or receive messages
                 ServiceBusClient SBClient = new ServiceBusClient(FullyQualifiedNamespace, new DefaultAzureCredential());
    
                 // Create a Service Bus admin client to create queue if it doesn't exist or to get message count
                 SBAdminClient = new ServiceBusAdministrationClient(FullyQualifiedNamespace, new DefaultAzureCredential());
    
                 // create the OrdersQueue if it doesn't exist already
                 if (!(await SBAdminClient.QueueExistsAsync(QueueName)))
                 {
                     await SBAdminClient.CreateQueueAsync(QueueName);
                 }
    
                 // create a sender for the queue 
                 SBSender = SBClient.CreateSender(QueueName);    
             }
         }    
    }
    
  4. Şimdi Başlat yönteminizin çağrıldığından emin olun. Çözüm Gezgini'nde Global.asax\Global.asax.cs öğesine çift tıklayın.

  5. Application_Start yönteminin sonuna aşağıdaki kod satırını ekleyin.

     FrontendWebRole.QueueConnector.Initialize().Wait();
    
  6. Son olarak, öğeleri kuyruğa göndermek için daha önce oluşturduğunuz web kodunu güncelleştirin. Çözüm Gezgini'nde Controllers\HomeController.cs öğesine çift tıklayın.

  7. Kuyrukta bulunan ileti sayısını alması için Submit() yöntemini (parametre almayan aşırı yük) aşağıdaki şekilde güncelleştirin.

         public ActionResult Submit()
         {
             QueueRuntimeProperties properties = QueueConnector.adminClient.GetQueueRuntimePropertiesAsync(QueueConnector.queueName).Result;
             ViewBag.MessageCount = properties.ActiveMessageCount;
    
             return View();
         }
    
  8. Kuyruğa ilişkin sipariş bilgilerini alması için Submit(OnlineOrder order) yöntemini (bir parametre alan aşırı yük) aşağıdaki şekilde güncelleştirin.

         public ActionResult Submit(OnlineOrder order)
         {
             if (ModelState.IsValid)
             {
                 // create a message 
                 var message = new ServiceBusMessage(new BinaryData(order));
    
                 // send the message to the queue
                 QueueConnector.sbSender.SendMessageAsync(message);
    
                 return RedirectToAction("Submit");
             }
             else
             {
                 return View(order);
             }
         }
    
  9. Şimdi uygulamayı tekrar çalıştırabilirsiniz. Siz her sipariş gönderdiğinizde ileti sayısı da artar.

    Screenshot of the application's Submit page with the message count incremented to 1.

Çalışan rolü oluşturma

Şimdi sipariş gönderimlerini işleyen çalışan rolünü oluşturacaksınız. Bu örnekte, Service Bus Kuyruğu İçeren Çalışan Rolü Visual Studio proje şablonu kullanılır. Gerekli kimlik bilgilerini zaten portaldan almıştınız.

  1. Visual Studio'yu Azure hesabınıza bağladığınızdan emin olun.

  2. Visual Studio'da bulunan Çözüm Gezgini'ndeki MultiTierApp projesi kısmında Roller'e çift tıklayın.

  3. Ekle'yi ve ardından Yeni Çalışan Rolü Projesi'ni seçin. Yeni Çalışan Rolü Projesi iletişim kutusu görünür.

    Screenshot of the Solution Explorer pane with the New Worker Role Project option and Add option highlighted.

  4. Yeni Rol Projesi Ekle iletişim kutusunda Çalışan Rolü'ne tıklayın. Eski Service Bus SDK'sını kullanan bir kod oluşturduğundan Service Bus Kuyruğu ile Çalışan Rolü'ni seçmeyin.

    Screenshot of the Ad New Role Project dialog box with the Worker Role with Service Bus Queue option highlighted and outlined in red.

  5. Ad kutusunda projeyi OrderProcessingRole olarak adlandırın. Ardından Ekle'yi seçin.

  6. Çözüm Gezgini'da OrderProcessingRole projesine sağ tıklayın ve NuGet Paketlerini Yönet'i seçin.

  7. Gözat sekmesini seçin, ardından Azure.Messaging.ServiceBus araması yapın. Azure.Messaging.ServiceBus paketini seçin, Yükle'yi seçin ve kullanım koşullarını kabul edin.

    Screenshot of the Manage NuGet Packages dialog box with the Azure.Messaging.ServiceBus highlighted and the Install option outlined in red.

  8. NuGet paketini projeye eklemek Azure.Identity için aynı adımları izleyin.

  9. Kuyruktan işlediğiniz siparişleri temsil etmesi için OnlineOrder sınıfı oluşturun. Önceden oluşturduğunuz bir sınıfı yeniden kullanabilirsiniz. Çözüm Gezgini'nde, OrderProcessingRole sınıfına sağ tıklayın (rol simgesine değil, sınıf simgesine sağ tıklayın). Ekle'yi ve ardından Mevcut Öğe'yi seçin.

  10. FrontendWebRole\Models alt klasörüne gözatın ve ardından bu projeye eklemek için OnlineOrder.cs sınıfına çift tıklayın.

  11. OrderProcessingRole projesindeki WorkerRole.cs dosyasına aşağıdaki using deyimi ekleyin.

    using FrontendWebRole.Models;
    using Azure.Messaging.ServiceBus;
    using Azure.Messaging.ServiceBus.Administration; 
    
  12. WorkerRole.cs aşağıdaki özellikleri ekleyin.

    Önemli

    Önkoşulların bir parçası olarak not ettiğiniz ad alanı için bağlantı dizesi kullanın.

        // Fully qualified Service Bus namespace
        private const string FullyQualifiedNamespace = "<SERVICE BUS NAMESPACE NAME>.servicebus.windows.net";
    
        // The name of your queue.
        private const string QueueName = "OrdersQueue";
    
        // Service Bus Receiver object to receive messages message the specific queue
        private ServiceBusReceiver SBReceiver;
    
    
  13. yöntemini güncelleştirerek OnStart bir ServiceBusClient nesne oluşturun ve ardından öğesinden OrdersQueueileti alacak bir ServiceBusReceiver nesne oluşturun.

        public override bool OnStart()
        {
            // Create a Service Bus client that you can use to send or receive messages
            ServiceBusClient SBClient = new ServiceBusClient(FullyQualifiedNamespace, new DefaultAzureCredential());
    
            CreateQueue(QueueName).Wait();
    
            // create a receiver that we can use to receive the message
            SBReceiver = SBClient.CreateReceiver(QueueName);
    
            return base.OnStart();
        }
        private async Task CreateQueue(string queueName)
        {
            // Create a Service Bus admin client to create queue if it doesn't exist or to get message count
            ServiceBusAdministrationClient SBAdminClient = new ServiceBusAdministrationClient(FullyQualifiedNamespace, new DefaultAzureCredential());
    
            // create the OrdersQueue if it doesn't exist already
            if (!(await SBAdminClient.QueueExistsAsync(queueName)))
            {
                await SBAdminClient.CreateQueueAsync(queueName);
            }
        }
    
  14. RunAsync yöntemini, iletileri alacak kodu içerecek şekilde güncelleştirin.

        private async Task RunAsync(CancellationToken cancellationToken)
        {
            // TODO: Replace the following with your own logic.
            while (!cancellationToken.IsCancellationRequested)
            {
                // receive message from the queue
                ServiceBusReceivedMessage receivedMessage = await SBReceiver.ReceiveMessageAsync();
    
                if (receivedMessage != null)
                {
                    Trace.WriteLine("Processing", receivedMessage.SequenceNumber.ToString());
    
                    // view the message as an OnlineOrder
                    OnlineOrder order = receivedMessage.Body.ToObjectFromJson<OnlineOrder>();
                    Trace.WriteLine(order.Customer + ": " + order.Product, "ProcessingMessage");
    
                    // complete message so that it's removed from the queue
                    await SBReceiver.CompleteMessageAsync(receivedMessage);
                }
            }
        }
    
  15. Uygulamayı tamamladınız. Çözüm Gezgini'nde MultiTierApp projesine sağ tıklayarak uygulamanın tamamını test edebilirsiniz. Başlangıç Projesi Olarak Ayarla'yı seçip F5'e basın. Çalışan rolü kuyruktaki öğeleri işlediği ve tamamlandı olarak işaretlediğinden ileti sayısı artmıyor. Azure İşlem Öykünücüsü kullanıcı arabiriminde görüntüleyerek çalışan rolünüzün izleme çıktısını görebilirsiniz. Bu işlemi, görev çubuğunuzdaki bildirim alanında bulunan öykünücü simgesine sağ tıklayıp İşlem Öykünücüsü Kullanıcı Arabirimini Göster'i seçerek gerçekleştirebilirsiniz.

    Screenshot of what appears when you select the emulator icon. Show Compute Emulator UI is in the list of options.

    Screenshot of the Microsoft Azure Compute Emulator (Express) dialog box.

Sonraki adımlar

Service Bus hakkında daha fazla bilgi edinmek için şu kaynaklara bakın: