SQL Server ile SignalR Ölçeğini Genişletme (SignalR 1.x)

Patrick Fletcher tarafından

Uyarı

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

Bu öğreticide, iki ayrı IIS örneğinde dağıtılan signalr uygulaması arasında iletileri dağıtmak için SQL Server kullanacaksınız. Bu öğreticiyi tek bir test makinesinde de çalıştırabilirsiniz, ancak tam etkiyi elde etmek için SignalR uygulamasını iki veya daha fazla sunucuya dağıtmanız gerekir. Ayrıca SQL Server sunuculardan birine veya ayrı bir ayrılmış sunucuya yüklemeniz gerekir. Bir diğer seçenek de öğreticiyi Azure'da VM'leri kullanarak çalıştırmaktır.

S Q L Sunucusu ve V Ms, bilgisayarlar arasındaki ilişki, S Q L Sunucusu'na sorgular ve güncelleştirmeler gönderme diyagramı.

Önkoşullar

Microsoft SQL Server 2005 veya üzeri. Arka plan, SQL Server'nin hem masaüstü hem de sunucu sürümlerini destekler. SQL Server Compact Sürümünü veya Azure SQL Veritabanını desteklemez. (Uygulamanız Azure'da barındırılıyorsa bunun yerine Service Bus arka düzlemini göz önünde bulundurun.)

Genel Bakış

Ayrıntılı öğreticiye geçmeden önce, neler yapacağınıza ilişkin hızlı bir genel bakış aşağıda verilmiştir.

  1. Yeni bir boş veritabanı oluşturun. Arka plan bu veritabanında gerekli tabloları oluşturur.

  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 sqlConnectionString = "Connecton string to your SQL DB";
        GlobalHost.DependencyResolver.UseSqlServer(sqlConnectionString);
    
        RouteTable.Routes.MapHubs();
        // ...
    }
    

Veritabanını Yapılandırma

Uygulamanın veritabanına erişmek için Windows kimlik doğrulaması mı yoksa SQL Server kimlik doğrulaması mı kullanacağını belirleyin. Ne olursa olsun, veritabanı kullanıcısının oturum açma, şema oluşturma ve tablo oluşturma izinlerine sahip olduğundan emin olun.

Arka düzlemin kullanması için yeni bir veritabanı oluşturun. Veritabanına herhangi bir ad verebilirsiniz. Veritabanında tablo oluşturmanız gerekmez; arka düzlem gerekli tabloları oluşturur.

Veritabanları klasörünün vurgulandığı ve içerdiği alt klasörlerin görüntülendiği Nesne Gezgini penceresinin ekran görüntüsü.

Hizmet Aracısı'nı etkinleştirme

Arka plan veritabanı için Hizmet Aracısı'nın etkinleştirilmesi önerilir. Hizmet Aracısı, SQL Server'de mesajlaşma ve kuyruğa alma için yerel destek sağlar ve bu da arka düzlemin güncelleştirmeleri daha verimli bir şekilde almasını sağlar. (Ancak, arka plan Hizmet Aracısı olmadan da çalışır.)

Hizmet Aracısı'nın etkinleştirilip etkinleştirilmediğini denetlemek için sys.databases katalog görünümündeki is_broker_enabled sütununu sorgula.

SELECT [name], [service_broker_guid], [is_broker_enabled]
FROM [master].[sys].[databases]

Hizmet Aracısı'nda görüntülenen ve Sonuçlar ve İletiler sekmelerini gösteren S Q L Sorgu 1 noktalı S Q L sekmesinin ekran görüntüsü.

Hizmet Aracısı'nı etkinleştirmek için aşağıdaki SQL sorgusunu kullanın:

ALTER DATABASE YOUR_DATABASE SET ENABLE_BROKER

Not

Bu sorgu kilitlenme olarak görünüyorsa, DB'ye bağlı uygulama olmadığından emin olun.

İzlemeyi etkinleştirdiyseniz, izlemeler Hizmet Aracısı'nın etkin olup olmadığını da gösterir.

SignalR Uygulaması Oluşturma

Bu öğreticilerden birini izleyerek bir SignalR uygulaması oluşturun:

Daha sonra sohbet uygulamasını SQL Server ile ölçeği genişletmeyi destekleyecek şekilde değiştireceğiz. İlk olarak SignalR.SqlServer NuGet paketini projenize ekleyin. Visual Studio'da 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 komutu girin:

Install-Package Microsoft.AspNet.SignalR.SqlServer

Ardından Global.asax dosyasını açın. Application_Start yöntemine aşağıdaki kodu ekleyin:

protected void Application_Start()
{
    string sqlConnectionString = "<add your SQL connection string here>";
    GlobalHost.DependencyResolver.UseSqlServer(sqlConnectionString);

    RouteTable.Routes.MapHubs();
}

Uygulamayı Dağıtma ve Çalıştırma

SignalR uygulamasını dağıtmak için Windows Server örneklerinizi hazırlayın.

IIS rolünü ekleyin. WebSocket Protokolü de dahil olmak üzere "Uygulama Geliştirme" özelliklerini ekleyin.

Sunucu Rolleri ve Web Yuvası Protokolü seçeneklerinin vurgulandığı Rol ve Özellik Ekleme Sihirbazı ekranının ekran görüntüsü.

Ayrıca Yönetim Hizmeti'ni de ekleyin ("Yönetim Araçları" altında listelenir).

Sunucu Rolleri ve I S Yönetim Betikleri ve Araçları seçeneklerinin vurgulandığı Rol ve Özellik Ekleme Sihirbazı ekranının ekran görüntüsü.

Web Dağıtımı 3.0'ı yükleyin. IIS Yöneticisi'ni çalıştırdığınızda, Microsoft Web Platformu yüklemeniz istenir veya yükleyiciyi indirebilirsiniz. Platform Yükleyicisi'nde Web Dağıtımı'nı arayın ve Web Dağıtımı 3.0'ı yükleyin

Web Dağıtımı 3 nokta 0 seçeneğinin vurgulandığı arama sonuçlarını görüntüleyen Web Platformu Yükleyicisi 4 nokta 5 ekranının ekran görüntüsü.

Web Yönetim Hizmeti'nin çalıştığını denetleyin. Çalışmıyorsa, hizmeti başlatın. (Windows hizmetleri listesinde Web Yönetim Hizmeti'ni görmüyorsanız, IIS rolünü eklerken Yönetim Hizmeti'ni yüklediğinizden emin olun.)

Son olarak TCP için 8172 numaralı bağlantı noktasını açın. Bu, Web Dağıtımı aracının kullandığı bağlantı noktasıdır.

Artık Visual Studio projesini geliştirme makinenizden sunucuya dağıtmaya hazırsınız. Çözüm Gezgini'da çözüme sağ tıklayın ve Yayımla'ya tıklayın.

Web dağıtımı hakkında daha ayrıntılı belgeler için bkz. Visual Studio ve ASP.NET için Web Dağıtımı İçerik Haritası.

Uygulamayı iki sunucuya dağıtırsanız, her örneği ayrı bir tarayıcı penceresinde açabilir ve her bir örneğin diğerinden SignalR iletileri aldığını görebilirsiniz. (Elbette, üretim ortamında iki sunucu bir yük dengeleyicinin arkasında durur.)

Signal R iletilerini görüntüleyen Dizin ekranını gösteren Internet Explorer tarayıcı penceresinin ekran görüntüsü.

Uygulamayı çalıştırdıktan sonra SignalR'nin veritabanında otomatik olarak tablolar oluşturduğunu görebilirsiniz:

MIKE dash S Q L sunucusunun vurgulandığı ve içerdiği klasörlerin ve sunucuların gösterildiği Nesne Gezgini ekranının ekran görüntüsü.

SignalR tabloları yönetir. Uygulamanız dağıtıldıktan sonra satırları silmeyin, tabloyu değiştirmeyin vb.