Azure Service Bus ile SignalR Ölçeğini Genişletme (SignalR 1.x)

Tarafından Patrick Fletcher

Uyarı

Bu belgeler SignalR'nin en son sürümüne yönelik değildir. ASP.NET Core SignalR'ye göz atın.

Bu öğreticide, Service Bus arka düzlemini kullanarak iletileri her rol örneğine dağıtmak için bir SignalR uygulamasını bir Windows Azure Web Rolüne dağıtacaksınız.

Service Bus Ad Alanı Konusu, Web Rolleri ve kullanılabilir bilgisayarlar ve hesaplar arasındaki ilişkiyi gösteren diyagram.

Ön koşullar:

Service Bus arka düzlemi, Windows Server, sürüm 1.1 için Service Bus ile de uyumludur. Ancak, Windows Server için Service Bus'ın 1.0 sürümüyle uyumlu değildir.

Fiyatlandırma

Service Bus arka planı iletileri göndermek için konuları kullanır. En son fiyatlandırma bilgileri için bkz. Service Bus. Bu yazma sırasında aylık 1.000.000 iletiyi 1 ABD dolarından daha az bir ücretle gönderebilirsiniz. Arka plan, signalR hub yönteminin her çağrısı için bir service bus iletisi gönderir. Ayrıca bağlantılar, bağlantı kesilmeleri, gruplara katılma veya gruplardan ayrılma gibi işlemler için bazı denetim iletileri de vardır. Çoğu uygulamada, ileti trafiğinin çoğunluğu hub yöntemi çağrıları olacaktır.

Genel Bakış

Ayrıntılı öğreticiye geçmeden önce, yapacaklarına hızlı bir genel bakış aşağıda verilmiştir.

  1. Yeni bir Service Bus ad alanı oluşturmak için Windows Azure portal kullanın.

  2. Bu NuGet paketlerini uygulamanıza ekleyin:

  3. SignalR uygulaması oluşturun.

  4. Arka düzlemi yapılandırmak için Global.asax'a aşağıdaki kodu ekleyin:

    protected void Application_Start()
    {
        string connectionString = "Service Bus connection string";
        GlobalHost.DependencyResolver.UseServiceBus(connectionString, "YourAppName");
    
        RouteTable.Routes.MapHubs();
        // ...
    }
    

Her uygulama için "YourAppName" için farklı bir değer seçin. Birden çok uygulamada aynı değeri kullanmayın.

Azure Hizmetleri oluşturma

Bulut Hizmeti Oluşturma ve Dağıtma bölümünde açıklandığı gibi bir Bulut Hizmeti oluşturun. "Nasıl yapılır: Hızlı Oluşturma kullanarak bulut hizmeti oluşturma" bölümündeki adımları izleyin. Bu öğretici için bir sertifika yüklemeniz gerekmez.

Bulutta Hizmet seçeneğinin ve simgenin uygulamada vurgulandığı ve kırmızı dairenin vurgulandığı YENİ bölmesinin ekran görüntüsü.

Service Bus KonuLarını/Aboneliklerini Kullanma bölümünde açıklandığı gibi yeni bir Service Bus ad alanı oluşturun. "Hizmet Ad Alanı Oluşturma" bölümündeki adımları izleyin.

Ad Alanı Adı ve Bölge alanlarına girişlerin girilmiş olduğu Yeni ad alanı ekle ekranının ekran görüntüsü.

Not

Bulut hizmeti ve Service Bus ad alanı için aynı bölgeyi seçtiğinizden emin olun.

Visual Studio Projesi Oluşturma

Visual Studio’yu çalıştırın. Dosya menüsünden Yeni Proje’ye tıklayın.

Yeni Proje iletişim kutusunda Visual C# öğesini genişletin. Yüklü Şablonlar'ın altında Bulut'u ve ardından Windows Azure Bulut Hizmeti'ni seçin. Varsayılan .NET Framework 4.5'i koruyun. Uygulamayı ChatService olarak adlandırın ve Tamam'a tıklayın.

Windows Azure Bulut Hizmeti Visual C # seçeneğinin vurgulandığı Yeni Proje ekranının ekran görüntüsü.

Yeni Windows Azure Bulut Hizmeti iletişim kutusunda ASP.NET MVC 4 Web Rolü'ne tıklayın. Rolü çözümünüze eklemek için sağ ok düğmesine (>) tıklayın.

Fareyi yeni rolün üzerine getirerek kalem simgesinin görünmesini sağlayın. Rolü yeniden adlandırmak için bu simgeye tıklayın. Rolü "SignalRChat" olarak adlandırın ve Tamam'a tıklayın.

Windows Azure Bulut Hizmeti çözüm bölmesinde Sinyal R Sohbeti seçeneğinin vurgulandığı Yeni Windows Azure Bulut Hizmeti ekranının ekran görüntüsü.

Yeni ASP.NET MVC 4 Projesi sihirbazında İnternet Uygulaması'nı seçin. Tamam'a tıklayın. Proje sihirbazı iki proje oluşturur:

  • ChatService: Bu proje Windows Azure uygulamasıdır. Azure rollerini ve diğer yapılandırma seçeneklerini tanımlar.
  • SignalRChat: Bu proje, ASP.NET MVC 4 projenizdir.

SignalR Sohbet Uygulaması Oluşturma

Sohbet uygulamasını oluşturmak için SignalR ve MVC 4 ile Çalışmaya Başlama öğreticisindeki adımları izleyin.

Gerekli kitaplıkları yüklemek için NuGet kullanın. Araçlar menüsünde NuGet Paket Yöneticisi'ni ve ardından Paket Yöneticisi Konsolu'nu seçin. Paket Yöneticisi Konsolu penceresinde aşağıdaki komutları girin:

Install-Package -ProjectName SignalRChat Microsoft.AspNet.SignalR
Install-Package -ProjectName SignalRChat Microsoft.AspNet.SignalR.ServiceBus

-ProjectName Paketleri Windows Azure projesi yerine ASP.NET MVC projesine yüklemek için seçeneğini kullanın.

Arka Düzlemi Yapılandırma

Uygulamanızın Global.asax dosyasına aşağıdaki kodu ekleyin:

protected void Application_Start()
{
    string connectionString = "";
    GlobalHost.DependencyResolver.UseServiceBus(connectionString, "Chat");  

    RouteTable.Routes.MapHubs();
}

Şimdi service bus bağlantı dizenizi almanız gerekir. Azure portal, oluşturduğunuz service bus ad alanını seçin ve Erişim Anahtarı simgesine tıklayın.

Service Bus ad alanında Oluştur, Erişim Anahtarı ve Sil seçeneklerinin ve simgelerinin ekran görüntüsü; odak Oluştur seçeneğindedir.

Bağlantı dizesini panoya kopyalayın ve connectionString değişkenine yapıştırın.

Bağlantı Dizesi, Varsayılan Veren ve Varsayılan Anahtar alanlarını gösteren Erişim Anahtarı Ad alanınıza bağlan ekranının ekran görüntüsü.

string connectionString = "Endpoint=sb://xxxx.servicebus.windows.net/;
SharedSecretIssuer=owner;SharedSecretValue=XXXXXXXX";

Azure’a dağıtın

Çözüm Gezgini'de, ChatService projesinin içindeki Roller klasörünü genişletin.

Sohbet Hizmeti projesinin Roller klasöründe yer alan Signal R Chat seçeneğini gösteren Çözüm Gezgini ağacının ekran görüntüsü.

SignalRChat rolüne sağ tıklayın ve Özellikler'i seçin. Yapılandırma sekmesini seçin. Örnekler'in altında 2'yi seçin. Ayrıca VM boyutunu Fazladan Küçük olarak da ayarlayabilirsiniz.

Örnek sayısı alanına 2 girilmiş ve V M Boyutu alanının Fazladan Küçük olarak ayarlandığını gösteren Yapılandırma Sekmesinin Örnekler bölümünün ekran görüntüsü.

Değişiklikleri kaydedin.

Çözüm Gezgini'da ChatService projesine sağ tıklayın. Yayımla’yı seçin.

Çözüm Gezgini ekranının Sohbet Hizmeti projesinin ekran görüntüsü ve Yayımla... Seçeneği.

Windows Azure'da ilk kez yayımlıyorsanız kimlik bilgilerinizi indirmeniz gerekir. Yayımla sihirbazında "Kimlik bilgilerini indirmek için oturum aç"a tıklayın. Bu, Windows Azure portal oturum açmanızı ve yayımlama ayarları dosyasını indirmenizi ister.

Kimlik bilgilerini indirmek için oturum aç bağlantısının vurgulandığı Windows Azure Uygulaması Yayımla ekranının Oturum Aç sekmesinin ekran görüntüsü.

İçeri Aktar'a tıklayın ve indirdiğiniz yayımlama ayarları dosyasını seçin.

İleri’ye tıklayın. Yayımlama Ayarları iletişim kutusundaki Bulut Hizmeti'nin altında daha önce oluşturduğunuz bulut hizmetini seçin.

Windows Azure Uygulaması Yayımla ekranının Ayarlar sekmesinin, Ortak Ayarlar sekmesinde Bulut Hizmeti alanını gösteren ekran görüntüsü.

Yayımla’ya tıklayın. Uygulamanın dağıtılması ve VM'lerin başlatılması birkaç dakika sürebilir.

Artık sohbet uygulamasını çalıştırdığınızda rol örnekleri, service Bus konusunu kullanarak Azure Service Bus üzerinden iletişim kurar. Konu başlığı, birden çok aboneye izin veren bir ileti kuyruğudur.

Arka plan, konuyu ve abonelikleri otomatik olarak oluşturur. Abonelikleri ve ileti etkinliğini görmek için Azure portal açın, Service Bus ad alanını seçin ve "Konular"a tıklayın.

Seçili Bulut Hizmeti alanının artık Azure portal doldurulan ve Bulut Hizmeti'nin Adı alanının vurgulandığı ekran görüntüsü.

İleti etkinliğinin panoda gösterilmesi birkaç dakika sürer.

farklı ileti geçmişlerini belirtmek için mavi ve mor bir çizgi gösteren, ileti etkinliği zaman çizelgesini görüntüleyen Azure portal panosunun ekran görüntüsü.

SignalR, konu ömrünü yönetir. Uygulamanız dağıtıldıysa, konu başlıklarını el ile silmeyi veya konu üzerindeki ayarları değiştirmeyi denemeyin.