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.
Ön koşullar:
- Bir Windows Azure hesabı.
- Windows Azure SDK'sı.
- Visual Studio 2012.
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.
Yeni bir Service Bus ad alanı oluşturmak için Windows Azure portal kullanın.
Bu NuGet paketlerini uygulamanıza ekleyin:
SignalR uygulaması oluşturun.
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.
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.
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.
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.
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.
Bağlantı dizesini panoya kopyalayın ve connectionString değişkenine yapıştırın.
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.
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.
Değişiklikleri kaydedin.
Çözüm Gezgini'da ChatService projesine sağ tıklayın. Yayımla’yı seçin.
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.
İç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.
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.
İleti etkinliğinin panoda gösterilmesi birkaç dakika sürer.
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.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin