Share via


Redis ile SignalR Ölçeğini Genişletme

Uyarı

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

Bu konuda kullanılan yazılım sürümleri

Bu konunun önceki sürümleri

SignalR'nin önceki sürümleri hakkında bilgi için bkz. SignalR Eski Sürümleri.

Sorular ve yorumlar

Lütfen bu öğreticiyi nasıl beğendiğiniz ve sayfanın altındaki yorumlarda neleri geliştirebileceğimiz hakkında geri bildirim bırakın. Öğreticiyle doğrudan ilgili olmayan sorularınız varsa bunları ASP.NET SignalR forumunu veya StackOverflow.com gönderebilirsiniz.

Bu öğreticide, redis kullanarak iletileri iki ayrı IIS örneğine dağıtılan signalr uygulaması arasında dağıtacaksınız.

Redis bellek içi anahtar-değer deposudur. Ayrıca yayımlama/abone olma modeline sahip bir mesajlaşma sistemini de destekler. SignalR Redis arka planı, iletileri diğer sunuculara iletmek için pub/sub özelliğini kullanır.

Redis Server'dan V M'ye ve ardından bilgisayarlara giden okları gösteren diyagram. Yayımla etiketli bir ok V M'den Redis Server'a gider.

Bu öğretici için üç sunucu kullanacaksınız:

  • SignalR uygulamasını dağıtmak için kullanacağınız Windows çalıştıran iki sunucu.
  • Redis'i çalıştırmak için kullanacağınız Linux çalıştıran bir sunucu. Bu öğreticideki ekran görüntüleri için Ubuntu 12.04 TLS kullandım.

Kullanılacak üç fiziksel sunucunuz yoksa Hyper-V üzerinde VM oluşturabilirsiniz. Bir diğer seçenek de Azure'da VM oluşturmaktır.

Bu öğretici resmi Redis uygulamasını kullansa da, MSOpenTech'ten bir Windows Redis bağlantı noktası da vardır. Kurulum ve yapılandırma farklıdır, ancak aksi takdirde adımlar aynıdır.

Not

Redis ile SignalR ölçeğini genişletme, Redis kümelerini desteklemez.

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. Redis'i yükleyin ve Redis sunucusunu başlatın.

  2. Bu NuGet paketlerini uygulamanıza ekleyin:

  3. SignalR uygulaması oluşturun.

  4. Arka düzlemi yapılandırmak için Startup.cs dosyasına aşağıdaki kodu ekleyin:

    public class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            // Any connection or hub wire up and configuration should go here
            GlobalHost.DependencyResolver.UseStackExchangeRedis("server", port, "password", "AppName");
            app.MapSignalR();
        }
    }
    

Hyper-V üzerinde Ubuntu

Windows Hyper-V kullanarak, Windows Server'da kolayca bir Ubuntu VM oluşturabilirsiniz.

Ubuntu ISO dosyasını adresinden http://www.ubuntu.comindirin.

Hyper-V'de yeni bir VM ekleyin. Sanal Sabit Diske Bağlan adımında Sanal sabit disk oluştur'u seçin.

Yeni Sanal Makine Sihirbazı iletişim kutusunu gösteren ekran görüntüsü. Sanal Sabit Diski Bağla ve Sanal sabit disk oluştur seçilidir.

Yükleme Seçenekleri adımında Görüntü dosyası (.iso) öğesini seçin, Gözat'a tıklayın ve Ubuntu yükleme ISO'sunu bulun.

Yükleme Seçenekleri sayfasında Yeni Sanal Makine Sihirbazı'nı gösteren ekran görüntüsü. Önyükleme C D D V D ROM'undan bir O S yükleyin ve Görüntü dosyası nokta i s o seçilidir.

Redis'i yükleme

Redis'i indirip derlemek için konumundaki http://redis.io/download adımları izleyin.

wget http://redis.googlecode.com/files/redis-2.6.12.tar.gz
tar xzf redis-2.6.12.tar.gz
cd redis-2.6.12
make

Bu, dizinindeki src Redis ikili dosyalarını oluşturur.

Redis varsayılan olarak parola gerektirmez. Parola ayarlamak için kaynak kodun redis.conf kök dizininde bulunan dosyayı düzenleyin. (Düzenlemeden önce dosyanın yedek kopyasını oluştur!) Aşağıdaki yönergeyi içine redis.confekleyin:

requirepass YourStrongPassword1234

Şimdi Redis sunucusunu başlatın:

src/redis-server redis.conf

Redis sunucusunun ana sayfasını gösteren ekran görüntüsü.

Redis'in dinlediği varsayılan bağlantı noktası olan 6379 numaralı bağlantı noktasını açın. (Yapılandırma dosyasındaki bağlantı noktası numarasını değiştirebilirsiniz.)

SignalR Uygulamasını Oluşturma

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

Şimdi redis ile ölçeği genişletmeyi desteklemek için sohbet uygulamasını değiştireceğiz. İlk olarak NuGet paketini projenize ekleyin Microsoft.AspNet.SignalR.StackExchangeRedis . 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.StackExchangeRedis

Ardından Startup.cs dosyasını açın. Configuration yöntemine aşağıdaki kodu ekleyin:

public class Startup
{
    public void Configuration(IAppBuilder app)
    {
        // Any connection or hub wire up and configuration should go here
        GlobalHost.DependencyResolver.UseStackExchangeRedis("server", port, "password", "AppName");
        app.MapSignalR();
    }
}
  • "server", Redis çalıştıran sunucunun adıdır.
  • bağlantı noktası , bağlantı noktası numarasıdır
  • "password", redis.conf dosyasında tanımladığınız paroladır.
  • "AppName" herhangi bir dizedir. SignalR, bu ada sahip bir Redis pub/sub kanalı oluşturur.

Örneğin:

GlobalHost.DependencyResolver.UseStackExchangeRedis("redis-server.cloudapp.net", 6379,
    "MyStrongPassword1234", "ChatApp");

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.

Rol ve Özellik Ekleme Sihirbazı'nı gösteren ekran görüntüsü. Sunucu Rolleri ve WebSocket Protokolü seçilir.

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

Rol ve Özellik Ekleme Sihirbazı'nı gösteren ekran görüntüsü. Yönetim Hizmeti seçildi.

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 Platformu Yükleyicisi 4. nokta 5 iletişim kutusunu gösteren ekran görüntüsü. Web Dağıtımı 3 nokta 0 seçilidir.

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.)

Varsayılan olarak, Web Yönetim Hizmeti 8172 numaralı TCP bağlantı noktasını dinler. Windows Güvenlik Duvarı'nda, 8172 numaralı bağlantı noktasında TCP trafiğine izin vermek için yeni bir gelen kuralı oluşturun. Daha fazla bilgi için bkz . Güvenlik Duvarı Kurallarını Yapılandırma. (VM'leri Azure'da barındırıyorsanız, bunu doğrudan Azure portal yapabilirsiniz. Bkz. Sanal Makineye Uç Noktaları Ayarlama.)

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.)

İki sunucuya dağıtılan uygulamayı gösteren iki tarayıcı penceresinin ekran görüntüsü.

Redis'e gönderilen iletileri görmek istiyorsanız Redis ile yüklenen redis-cli istemcisini kullanabilirsiniz.

redis-cli -a password
SUBSCRIBE ChatApp

Redis penceresinde numaralandırılmış listeyi gösteren ekran görüntüsü.