Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Ashley Stanton-Nurse, Brady Gaster ve Tom Dykstra tarafından.
Bu makalede, ASP.NET Core SignalR uygulamasının ölçeğini genişletme amacıyla kullanılacak bir Redis sunucusu ayarlamanın özel yönleri açıklanmaktadırSignalR.
Uyarı
Bu makalede bağlantı dizesi kullanımı gösterilmektedir. Geliştirme ve test için yerel veritabanı kullanıldığında, bağlantı dizesi aracılığıyla veritabanı kullanıcı kimlik doğrulaması gerekmez. Üretim ortamlarında, bağlantı dizeleri bazen veritabanı erişiminin veya veritabanı işlemlerinin kimliğini doğrulamak için bir parola içerir. Bir bağlantı dizesindeki kaynak sahibi parola kimlik bilgisi (ROPC), üretim uygulamalarında kaçınılması gereken bir güvenlik riskidir. Üretim uygulamaları kullanılabilir en güvenli kimlik doğrulama akışını kullanmalıdır. Test veya üretim ortamlarına dağıtılan uygulamalar için kimlik doğrulaması hakkında daha fazla bilgi için ASP.NET Temel güvenlik konularına bakın.
Redis arka düzlemini ayarlayın.
Redis sunucusu dağıtın.
Önemli
Üretim ortamı için, Redis arka planının yalnızca uygulamayla aynı veri merkezinde çalıştığında önerildiğini unutmayın. Aksi takdirde ağ gecikme süresi performansı düşürür. Uygulamanız SignalR Azure bulutunda çalışıyorsa Redis arka planı yerine Azure SignalR Hizmeti'ni öneririz.
Daha fazla bilgi edinmek için aşağıdaki kaynaklara bakın:
SignalR Uygulamada aşağıdaki NuGet paketini yükleyin:
Microsoft.AspNetCore.SignalR.StackExchangeRedis
AddStackExchangeRedis çağrısını
builder.Build()dosyasındakiProgram.csçağrısından önce aşağıdaki satırı ekleyerek yapın.builder.Services.AddSignalR().AddStackExchangeRedis("<your_Redis_connection_string>");Seçenekleri gerektiği gibi yapılandırın:
Çoğu seçenek bağlantı dizesinde veya
ConfigurationOptionsnesnesinde ayarlanabilir. içindeConfigurationOptionsbelirtilen seçenekler, bağlantı dizesi ayarlananları geçersiz kılar.Aşağıdaki örnekte nesnedeki seçeneklerin nasıl ayarlanacağı gösterilmektedir
ConfigurationOptions. Bu örnek, aşağıdaki adımda açıklandığı gibi birden çok uygulamanın aynı Redis örneğini paylaşabilmesi için bir kanal ön eki ekler.builder.Services.AddSignalR() .AddStackExchangeRedis(connectionString, options => { options.Configuration.ChannelPrefix = RedisChannel.Literal("MyApp"); });Önceki kodda,
options.Configuration, bağlantı dizesinde belirtilen herhangi bir değer ile başlatılır.Redis seçenekleri hakkında bilgi için StackExchange Redis belgelerine bakın.
Birden çok SignalR uygulama için bir Redis sunucusu kullanıyorsanız, her SignalR uygulama için farklı bir kanal ön eki kullanın.
Kanal ön ekini ayarlamak, bir SignalR uygulamayı farklı kanal ön ekleri kullanan diğer kullanıcılardan yalıtıyor. Farklı ön ekler atamazsanız, bir uygulamadan kendi istemcilerinin tümüne gönderilen bir ileti, Redis sunucusunu arka plan olarak kullanan tüm uygulamaların tüm istemcilerine gider.
Sunucu grubu yük dengeleme yazılımınızı yapışkan oturumlar için yapılandırın. Bunun nasıl yapıldığını gösteren bazı belgeler aşağıda verilmiştir:
Redis sunucusu hataları
Bir Redis sunucusu kapandığında, SignalR iletilerin teslim edilmeyeceğini belirten özel durumlar oluşturur. Bazı tipik özel durum iletileri:
- İleti yazma başarısız oldu
- 'MethodName' hub yöntemi çağrılamadı
- Redis bağlantısı başarısız oldu
SignalR sunucu geri geldiğinde göndermek üzere mesajları arabelleğe almaz. Redis sunucusu kapatılırken gönderilen tüm iletiler kaybolur.
SignalR Redis sunucusu yeniden kullanılabilir olduğunda otomatik olarak yeniden bağlanır.
Bağlantı hataları için özel davranış
Redis bağlantı hatası olaylarının nasıl işleneceğini gösteren bir örnek aşağıda verilmiştir.
services.AddSignalR()
.AddMessagePackProtocol()
.AddStackExchangeRedis(o =>
{
o.ConnectionFactory = async writer =>
{
var config = new ConfigurationOptions
{
AbortOnConnectFail = false
};
config.EndPoints.Add(IPAddress.Loopback, 0);
config.SetDefaultPorts();
var connection = await ConnectionMultiplexer.ConnectAsync(config, writer);
connection.ConnectionFailed += (_, e) =>
{
Console.WriteLine("Connection to Redis failed.");
};
if (!connection.IsConnected)
{
Console.WriteLine("Did not connect to Redis.");
}
return connection;
};
});
Redis Kümesi
Redis Kümesi , yüksek kullanılabilirlik elde etmek için birden çok eşzamanlı etkin Redis sunucusu kullanır. Için geri plan SignalRolarak Redis Kümesi kullanıldığında, iletiler uygulamada kod değişikliği yapılmadan kümenin tüm düğümlerine teslim edilir.
Kümedeki düğüm sayısı ile arka düzlemin aktarım hızı arasında bir denge vardır. Düğüm sayısının artırılması kümenin kullanılabilirliğini artırır, ancak iletilerin kümedeki tüm düğümlere iletilmesi gerektiğinden aktarım hızını azaltır.
SignalR Uygulamada, aşağıdaki yaklaşımlardan birini kullanarak tüm olası Redis düğümlerini ekleyin:
- Virgülle ayrılmış düğümleri bağlantı dizesinde listeleyin.
- Bağlantı hataları için özelleştirilmiş davranış kullanıyorsanız, düğümleri
ConfigurationOptions.Endpointsöğesine ekleyin.
Sonraki adımlar
Daha fazla bilgi edinmek için aşağıdaki kaynaklara bakın:
Bu makalede, ASP.NET Core SignalR uygulamasının ölçeğini genişletme amacıyla kullanılacak bir Redis sunucusu ayarlamanın özel yönleri açıklanmaktadırSignalR.
Uyarı
Bu makalede bağlantı dizesi kullanımı gösterilmektedir. Geliştirme ve test için yerel veritabanı kullanıldığında, bağlantı dizesi aracılığıyla veritabanı kullanıcı kimlik doğrulaması gerekmez. Üretim ortamlarında, bağlantı dizeleri bazen veritabanı erişiminin veya veritabanı işlemlerinin kimliğini doğrulamak için bir parola içerir. Bir bağlantı dizesindeki kaynak sahibi parola kimlik bilgisi (ROPC), üretim uygulamalarında kaçınılması gereken bir güvenlik riskidir. Üretim uygulamaları kullanılabilir en güvenli kimlik doğrulama akışını kullanmalıdır. Test veya üretim ortamlarına dağıtılan uygulamalar için kimlik doğrulaması hakkında daha fazla bilgi için ASP.NET Temel güvenlik konularına bakın.
Redis arka düzlemini ayarlayın.
Redis sunucusu dağıtın.
Önemli
Üretim ortamı için, Redis arka planının yalnızca uygulamayla aynı veri merkezinde çalıştığında önerildiğini unutmayın. Aksi takdirde ağ gecikme süresi performansı düşürür. Uygulamanız SignalR Azure bulutunda çalışıyorsa Redis arka planı yerine Azure SignalR Hizmeti'ni öneririz.
Daha fazla bilgi edinmek için aşağıdaki kaynaklara bakın:
SignalR Uygulamada aşağıdaki NuGet paketini yükleyin:
Microsoft.AspNetCore.SignalR.StackExchangeRedis
AddStackExchangeRedis çağrısını
builder.Build()dosyasındakiProgram.csçağrısından önce aşağıdaki satırı ekleyerek yapın.builder.Services.AddSignalR().AddStackExchangeRedis("<your_Redis_connection_string>");Seçenekleri gerektiği gibi yapılandırın:
Çoğu seçenek bağlantı dizesinde veya
ConfigurationOptionsnesnesinde ayarlanabilir. içindeConfigurationOptionsbelirtilen seçenekler, bağlantı dizesi ayarlananları geçersiz kılar.Aşağıdaki örnekte nesnedeki seçeneklerin nasıl ayarlanacağı gösterilmektedir
ConfigurationOptions. Bu örnek, aşağıdaki adımda açıklandığı gibi birden çok uygulamanın aynı Redis örneğini paylaşabilmesi için bir kanal ön eki ekler.services.AddSignalR() .AddStackExchangeRedis(connectionString, options => { options.Configuration.ChannelPrefix = "MyApp"; });Önceki kodda,
options.Configuration, bağlantı dizesinde belirtilen herhangi bir değer ile başlatılır.Redis seçenekleri hakkında bilgi için StackExchange Redis belgelerine bakın.
Birden çok SignalR uygulama için bir Redis sunucusu kullanıyorsanız, her SignalR uygulama için farklı bir kanal ön eki kullanın.
Kanal ön ekini ayarlamak, bir SignalR uygulamayı farklı kanal ön ekleri kullanan diğer kullanıcılardan yalıtıyor. Farklı ön ekler atamazsanız, bir uygulamadan kendi istemcilerinin tümüne gönderilen bir ileti, Redis sunucusunu arka plan olarak kullanan tüm uygulamaların tüm istemcilerine gider.
Sunucu grubu yük dengeleme yazılımınızı yapışkan oturumlar için yapılandırın. Bunun nasıl yapıldığını gösteren bazı belgeler aşağıda verilmiştir:
Redis sunucusu hataları
Bir Redis sunucusu kapandığında, SignalR iletilerin teslim edilmeyeceğini belirten özel durumlar oluşturur. Bazı tipik özel durum iletileri:
- İleti yazma başarısız oldu
- 'MethodName' hub yöntemi çağrılamadı
- Redis bağlantısı başarısız oldu
SignalR sunucu geri geldiğinde göndermek üzere mesajları arabelleğe almaz. Redis sunucusu kapatılırken gönderilen tüm iletiler kaybolur.
SignalR Redis sunucusu yeniden kullanılabilir olduğunda otomatik olarak yeniden bağlanır.
Bağlantı hataları için özel davranış
Redis bağlantı hatası olaylarının nasıl işleneceğini gösteren bir örnek aşağıda verilmiştir.
services.AddSignalR()
.AddMessagePackProtocol()
.AddStackExchangeRedis(o =>
{
o.ConnectionFactory = async writer =>
{
var config = new ConfigurationOptions
{
AbortOnConnectFail = false
};
config.EndPoints.Add(IPAddress.Loopback, 0);
config.SetDefaultPorts();
var connection = await ConnectionMultiplexer.ConnectAsync(config, writer);
connection.ConnectionFailed += (_, e) =>
{
Console.WriteLine("Connection to Redis failed.");
};
if (!connection.IsConnected)
{
Console.WriteLine("Did not connect to Redis.");
}
return connection;
};
});
Redis Kümesi
Redis Kümesi , yüksek kullanılabilirlik elde etmek için birden çok eşzamanlı etkin Redis sunucusu kullanır. Için geri plan SignalRolarak Redis Kümesi kullanıldığında, iletiler uygulamada kod değişikliği yapılmadan kümenin tüm düğümlerine teslim edilir.
Kümedeki düğüm sayısı ile arka düzlemin aktarım hızı arasında bir denge vardır. Düğüm sayısının artırılması kümenin kullanılabilirliğini artırır, ancak iletilerin kümedeki tüm düğümlere iletilmesi gerektiğinden aktarım hızını azaltır.
SignalR Uygulamada, aşağıdaki yaklaşımlardan birini kullanarak tüm olası Redis düğümlerini ekleyin:
- Virgülle ayrılmış düğümleri bağlantı dizesinde listeleyin.
- Bağlantı hataları için özelleştirilmiş davranış kullanıyorsanız, düğümleri
ConfigurationOptions.Endpointsöğesine ekleyin.
Sonraki adımlar
Daha fazla bilgi edinmek için aşağıdaki kaynaklara bakın:
Bu makalede, ASP.NET Core SignalR uygulamasının ölçeğini genişletme amacıyla kullanılacak bir Redis sunucusu ayarlamanın özel yönleri açıklanmaktadırSignalR.
Uyarı
Bu makalede bağlantı dizesi kullanımı gösterilmektedir. Geliştirme ve test için yerel veritabanı kullanıldığında, bağlantı dizesi aracılığıyla veritabanı kullanıcı kimlik doğrulaması gerekmez. Üretim ortamlarında, bağlantı dizeleri bazen veritabanı erişiminin veya veritabanı işlemlerinin kimliğini doğrulamak için bir parola içerir. Bir bağlantı dizesindeki kaynak sahibi parola kimlik bilgisi (ROPC), üretim uygulamalarında kaçınılması gereken bir güvenlik riskidir. Üretim uygulamaları kullanılabilir en güvenli kimlik doğrulama akışını kullanmalıdır. Test veya üretim ortamlarına dağıtılan uygulamalar için kimlik doğrulaması hakkında daha fazla bilgi için ASP.NET Temel güvenlik konularına bakın.
Redis arka düzlemini ayarlayın.
Redis sunucusu dağıtın.
Önemli
Üretim ortamı için, Redis arka planının yalnızca uygulamayla aynı veri merkezinde çalıştığında önerildiğini unutmayın. Aksi takdirde ağ gecikme süresi performansı düşürür. Uygulamanız SignalR Azure bulutunda çalışıyorsa Redis arka planı yerine Azure SignalR Hizmeti'ni öneririz.
Daha fazla bilgi edinmek için aşağıdaki kaynaklara bakın:
SignalR Uygulamada aşağıdaki NuGet paketini yükleyin:
Microsoft.AspNetCore.SignalR.StackExchangeRedis
AddStackExchangeRedis çağrısını
builder.Build()dosyasındakiProgram.csçağrısından önce aşağıdaki satırı ekleyerek yapın.builder.Services.AddSignalR().AddStackExchangeRedis("<your_Redis_connection_string>");Seçenekleri gerektiği gibi yapılandırın:
Çoğu seçenek bağlantı dizesinde veya
ConfigurationOptionsnesnesinde ayarlanabilir. içindeConfigurationOptionsbelirtilen seçenekler, bağlantı dizesi ayarlananları geçersiz kılar.Aşağıdaki örnekte nesnedeki seçeneklerin nasıl ayarlanacağı gösterilmektedir
ConfigurationOptions. Bu örnek, aşağıdaki adımda açıklandığı gibi birden çok uygulamanın aynı Redis örneğini paylaşabilmesi için bir kanal ön eki ekler.builder.Services.AddSignalR() .AddStackExchangeRedis(connectionString, options => { options.Configuration.ChannelPrefix = RedisChannel.Literal("MyApp"); });Önceki kodda,
options.Configuration, bağlantı dizesinde belirtilen herhangi bir değer ile başlatılır.Redis seçenekleri hakkında bilgi için StackExchange Redis belgelerine bakın.
Birden çok SignalR uygulama için bir Redis sunucusu kullanıyorsanız, her SignalR uygulama için farklı bir kanal ön eki kullanın.
Kanal ön ekini ayarlamak, bir SignalR uygulamayı farklı kanal ön ekleri kullanan diğer kullanıcılardan yalıtıyor. Farklı ön ekler atamazsanız, bir uygulamadan kendi istemcilerinin tümüne gönderilen bir ileti, Redis sunucusunu arka plan olarak kullanan tüm uygulamaların tüm istemcilerine gider.
Sunucu grubu yük dengeleme yazılımınızı yapışkan oturumlar için yapılandırın. Bunun nasıl yapıldığını gösteren bazı belgeler aşağıda verilmiştir:
Redis sunucusu hataları
Bir Redis sunucusu kapandığında, SignalR iletilerin teslim edilmeyeceğini belirten özel durumlar oluşturur. Bazı tipik özel durum iletileri:
- İleti yazma başarısız oldu
- 'MethodName' hub yöntemi çağrılamadı
- Redis bağlantısı başarısız oldu
SignalR sunucu geri geldiğinde göndermek üzere mesajları arabelleğe almaz. Redis sunucusu kapatılırken gönderilen tüm iletiler kaybolur.
SignalR Redis sunucusu yeniden kullanılabilir olduğunda otomatik olarak yeniden bağlanır.
Bağlantı hataları için özel davranış
Redis bağlantı hatası olaylarının nasıl işleneceğini gösteren bir örnek aşağıda verilmiştir.
services.AddSignalR()
.AddMessagePackProtocol()
.AddStackExchangeRedis(o =>
{
o.ConnectionFactory = async writer =>
{
var config = new ConfigurationOptions
{
AbortOnConnectFail = false
};
config.EndPoints.Add(IPAddress.Loopback, 0);
config.SetDefaultPorts();
var connection = await ConnectionMultiplexer.ConnectAsync(config, writer);
connection.ConnectionFailed += (_, e) =>
{
Console.WriteLine("Connection to Redis failed.");
};
if (!connection.IsConnected)
{
Console.WriteLine("Did not connect to Redis.");
}
return connection;
};
});
Redis Kümesi
Redis Kümesi , yüksek kullanılabilirlik elde etmek için birden çok eşzamanlı etkin Redis sunucusu kullanır. Için geri plan SignalRolarak Redis Kümesi kullanıldığında, iletiler uygulamada kod değişikliği yapılmadan kümenin tüm düğümlerine teslim edilir.
Kümedeki düğüm sayısı ile arka düzlemin aktarım hızı arasında bir denge vardır. Düğüm sayısının artırılması kümenin kullanılabilirliğini artırır, ancak iletilerin kümedeki tüm düğümlere iletilmesi gerektiğinden aktarım hızını azaltır.
SignalR Uygulamada, aşağıdaki yaklaşımlardan birini kullanarak tüm olası Redis düğümlerini ekleyin:
- Virgülle ayrılmış düğümleri bağlantı dizesinde listeleyin.
- Bağlantı hataları için özelleştirilmiş davranış kullanıyorsanız, düğümleri
ConfigurationOptions.Endpointsöğesine ekleyin.
Sonraki adımlar
Daha fazla bilgi edinmek için aşağıdaki kaynaklara bakın:
Bu makalede, ASP.NET Core SignalR uygulamasının ölçeğini genişletme amacıyla kullanılacak bir Redis sunucusu ayarlamanın özel yönleri açıklanmaktadırSignalR.
Uyarı
Bu makalede bağlantı dizesi kullanımı gösterilmektedir. Geliştirme ve test için yerel veritabanı kullanıldığında, bağlantı dizesi aracılığıyla veritabanı kullanıcı kimlik doğrulaması gerekmez. Üretim ortamlarında, bağlantı dizeleri bazen veritabanı erişiminin veya veritabanı işlemlerinin kimliğini doğrulamak için bir parola içerir. Bir bağlantı dizesindeki kaynak sahibi parola kimlik bilgisi (ROPC), üretim uygulamalarında kaçınılması gereken bir güvenlik riskidir. Üretim uygulamaları kullanılabilir en güvenli kimlik doğrulama akışını kullanmalıdır. Test veya üretim ortamlarına dağıtılan uygulamalar için kimlik doğrulaması hakkında daha fazla bilgi için ASP.NET Temel güvenlik konularına bakın.
Redis arka düzlemini ayarlayın.
Redis sunucusu dağıtın.
Önemli
Üretim ortamı için, Redis arka planının yalnızca uygulamayla aynı veri merkezinde çalıştığında önerildiğini unutmayın. Aksi takdirde ağ gecikme süresi performansı düşürür. Uygulamanız SignalR Azure bulutunda çalışıyorsa Redis arka planı yerine Azure SignalR Hizmeti'ni öneririz.
Daha fazla bilgi edinmek için aşağıdaki kaynaklara bakın:
SignalR Uygulamada aşağıdaki NuGet paketini yükleyin:
Microsoft.AspNetCore.SignalR.StackExchangeRedis
Startup.ConfigureServicesyönteminde AddStackExchangeRedis öğesini çağırın.services.AddSignalR().AddStackExchangeRedis("<your_Redis_connection_string>");Seçenekleri gerektiği gibi yapılandırın:
Çoğu seçenek bağlantı dizesinde veya
ConfigurationOptionsnesnesinde ayarlanabilir. içindeConfigurationOptionsbelirtilen seçenekler, bağlantı dizesi ayarlananları geçersiz kılar.Aşağıdaki örnekte nesnedeki seçeneklerin nasıl ayarlanacağı gösterilmektedir
ConfigurationOptions. Bu örnek, aşağıdaki adımda açıklandığı gibi birden çok uygulamanın aynı Redis örneğini paylaşabilmesi için bir kanal ön eki ekler.services.AddSignalR() .AddStackExchangeRedis(connectionString, options => { options.Configuration.ChannelPrefix = "MyApp"; });Önceki kodda,
options.Configuration, bağlantı dizesinde belirtilen herhangi bir değer ile başlatılır.Redis seçenekleri hakkında bilgi için StackExchange Redis belgelerine bakın.
Birden çok SignalR uygulama için bir Redis sunucusu kullanıyorsanız, her SignalR uygulama için farklı bir kanal ön eki kullanın.
Kanal ön ekini ayarlamak, bir SignalR uygulamayı farklı kanal ön ekleri kullanan diğer kullanıcılardan yalıtıyor. Farklı ön ekler atamazsanız, bir uygulamadan kendi istemcilerinin tümüne gönderilen bir ileti, Redis sunucusunu arka plan olarak kullanan tüm uygulamaların tüm istemcilerine gider.
Sunucu grubu yük dengeleme yazılımınızı yapışkan oturumlar için yapılandırın. Bunun nasıl yapıldığını gösteren bazı belgeler aşağıda verilmiştir:
Redis sunucusu hataları
Bir Redis sunucusu kapandığında, SignalR iletilerin teslim edilmeyeceğini belirten özel durumlar oluşturur. Bazı tipik özel durum iletileri:
- İleti yazma başarısız oldu
- 'MethodName' hub yöntemi çağrılamadı
- Redis bağlantısı başarısız oldu
SignalR sunucu geri geldiğinde göndermek üzere mesajları arabelleğe almaz. Redis sunucusu kapatılırken gönderilen tüm iletiler kaybolur.
SignalR Redis sunucusu yeniden kullanılabilir olduğunda otomatik olarak yeniden bağlanır.
Bağlantı hataları için özel davranış
Redis bağlantı hatası olaylarının nasıl işleneceğini gösteren bir örnek aşağıda verilmiştir.
services.AddSignalR()
.AddMessagePackProtocol()
.AddStackExchangeRedis(o =>
{
o.ConnectionFactory = async writer =>
{
var config = new ConfigurationOptions
{
AbortOnConnectFail = false
};
config.EndPoints.Add(IPAddress.Loopback, 0);
config.SetDefaultPorts();
var connection = await ConnectionMultiplexer.ConnectAsync(config, writer);
connection.ConnectionFailed += (_, e) =>
{
Console.WriteLine("Connection to Redis failed.");
};
if (!connection.IsConnected)
{
Console.WriteLine("Did not connect to Redis.");
}
return connection;
};
});
Redis Kümesi
Redis Kümesi , yüksek kullanılabilirlik elde etmek için birden çok eşzamanlı etkin Redis sunucusu kullanır. Için geri plan SignalRolarak Redis Kümesi kullanıldığında, iletiler uygulamada kod değişikliği yapılmadan kümenin tüm düğümlerine teslim edilir.
Kümedeki düğüm sayısı ile arka düzlemin aktarım hızı arasında bir denge vardır. Düğüm sayısının artırılması kümenin kullanılabilirliğini artırır, ancak iletilerin kümedeki tüm düğümlere iletilmesi gerektiğinden aktarım hızını azaltır.
SignalR Uygulamada, aşağıdaki yaklaşımlardan birini kullanarak tüm olası Redis düğümlerini ekleyin:
- Virgülle ayrılmış düğümleri bağlantı dizesinde listeleyin.
- Bağlantı hataları için özelleştirilmiş davranış kullanıyorsanız, düğümleri
ConfigurationOptions.Endpointsöğesine ekleyin.
Sonraki adımlar
Daha fazla bilgi edinmek için aşağıdaki kaynaklara bakın:
Bu makalede, ASP.NET Core SignalR uygulamasının ölçeğini genişletme amacıyla kullanılacak bir Redis sunucusu ayarlamanın özel yönleri açıklanmaktadırSignalR.
Uyarı
Bu makalede bağlantı dizesi kullanımı gösterilmektedir. Geliştirme ve test için yerel veritabanı kullanıldığında, bağlantı dizesi aracılığıyla veritabanı kullanıcı kimlik doğrulaması gerekmez. Üretim ortamlarında, bağlantı dizeleri bazen veritabanı erişiminin veya veritabanı işlemlerinin kimliğini doğrulamak için bir parola içerir. Bir bağlantı dizesindeki kaynak sahibi parola kimlik bilgisi (ROPC), üretim uygulamalarında kaçınılması gereken bir güvenlik riskidir. Üretim uygulamaları kullanılabilir en güvenli kimlik doğrulama akışını kullanmalıdır. Test veya üretim ortamlarına dağıtılan uygulamalar için kimlik doğrulaması hakkında daha fazla bilgi için ASP.NET Temel güvenlik konularına bakın.
Redis arka düzlemini ayarlayın.
Redis sunucusu dağıtın.
Önemli
Üretim ortamı için, Redis arka planının yalnızca uygulamayla aynı veri merkezinde çalıştığında önerildiğini unutmayın. Aksi takdirde ağ gecikme süresi performansı düşürür. Uygulamanız SignalR Azure bulutunda çalışıyorsa Redis arka planı yerine Azure SignalR Hizmeti'ni öneririz.
Daha fazla bilgi edinmek için aşağıdaki kaynaklara bakın:
SignalR Uygulamada aşağıdaki NuGet paketini yükleyin:
Microsoft.AspNetCore.SignalR.StackExchangeRedis
Startup.ConfigureServicesyönteminde AddStackExchangeRedis öğesini çağırın.services.AddSignalR().AddStackExchangeRedis("<your_Redis_connection_string>");Seçenekleri gerektiği gibi yapılandırın:
Çoğu seçenek bağlantı dizesinde veya
ConfigurationOptionsnesnesinde ayarlanabilir. içindeConfigurationOptionsbelirtilen seçenekler, bağlantı dizesi ayarlananları geçersiz kılar.Aşağıdaki örnekte nesnedeki seçeneklerin nasıl ayarlanacağı gösterilmektedir
ConfigurationOptions. Bu örnek, aşağıdaki adımda açıklandığı gibi birden çok uygulamanın aynı Redis örneğini paylaşabilmesi için bir kanal ön eki ekler.services.AddSignalR() .AddStackExchangeRedis(connectionString, options => { options.Configuration.ChannelPrefix = "MyApp"; });Önceki kodda,
options.Configuration, bağlantı dizesinde belirtilen herhangi bir değer ile başlatılır.Redis seçenekleri hakkında bilgi için StackExchange Redis belgelerine bakın.
Birden çok SignalR uygulama için bir Redis sunucusu kullanıyorsanız, her SignalR uygulama için farklı bir kanal ön eki kullanın.
Kanal ön ekini ayarlamak, bir SignalR uygulamayı farklı kanal ön ekleri kullanan diğer kullanıcılardan yalıtıyor. Farklı ön ekler atamazsanız, bir uygulamadan kendi istemcilerinin tümüne gönderilen bir ileti, Redis sunucusunu arka plan olarak kullanan tüm uygulamaların tüm istemcilerine gider.
Sunucu grubu yük dengeleme yazılımınızı yapışkan oturumlar için yapılandırın. Bunun nasıl yapıldığını gösteren bazı belgeler aşağıda verilmiştir:
Redis sunucusu hataları
Bir Redis sunucusu kapandığında, SignalR iletilerin teslim edilmeyeceğini belirten özel durumlar oluşturur. Bazı tipik özel durum iletileri:
- İleti yazma başarısız oldu
- 'MethodName' hub yöntemi çağrılamadı
- Redis bağlantısı başarısız oldu
SignalR sunucu geri geldiğinde göndermek üzere mesajları arabelleğe almaz. Redis sunucusu kapatılırken gönderilen tüm iletiler kaybolur.
SignalR Redis sunucusu yeniden kullanılabilir olduğunda otomatik olarak yeniden bağlanır.
Bağlantı hataları için özel davranış
Redis bağlantı hatası olaylarının nasıl işleneceğini gösteren bir örnek aşağıda verilmiştir.
services.AddSignalR()
.AddMessagePackProtocol()
.AddStackExchangeRedis(o =>
{
o.ConnectionFactory = async writer =>
{
var config = new ConfigurationOptions
{
AbortOnConnectFail = false
};
config.EndPoints.Add(IPAddress.Loopback, 0);
config.SetDefaultPorts();
var connection = await ConnectionMultiplexer.ConnectAsync(config, writer);
connection.ConnectionFailed += (_, e) =>
{
Console.WriteLine("Connection to Redis failed.");
};
if (!connection.IsConnected)
{
Console.WriteLine("Did not connect to Redis.");
}
return connection;
};
});
Redis Kümesi
Redis Kümesi , yüksek kullanılabilirlik elde etmek için birden çok eşzamanlı etkin Redis sunucusu kullanır. Için geri plan SignalRolarak Redis Kümesi kullanıldığında, iletiler uygulamada kod değişikliği yapılmadan kümenin tüm düğümlerine teslim edilir.
Kümedeki düğüm sayısı ile arka düzlemin aktarım hızı arasında bir denge vardır. Düğüm sayısının artırılması kümenin kullanılabilirliğini artırır, ancak iletilerin kümedeki tüm düğümlere iletilmesi gerektiğinden aktarım hızını azaltır.
SignalR Uygulamada, aşağıdaki yaklaşımlardan birini kullanarak tüm olası Redis düğümlerini ekleyin:
- Virgülle ayrılmış düğümleri bağlantı dizesinde listeleyin.
- Bağlantı hataları için özelleştirilmiş davranış kullanıyorsanız, düğümleri
ConfigurationOptions.Endpointsöğesine ekleyin.
Sonraki adımlar
Daha fazla bilgi edinmek için aşağıdaki kaynaklara bakın:
Bu makalede, ASP.NET Core SignalR uygulamasının ölçeğini genişletme amacıyla kullanılacak bir Redis sunucusu ayarlamanın özel yönleri açıklanmaktadırSignalR.
Uyarı
Bu makalede bağlantı dizesi kullanımı gösterilmektedir. Geliştirme ve test için yerel veritabanı kullanıldığında, bağlantı dizesi aracılığıyla veritabanı kullanıcı kimlik doğrulaması gerekmez. Üretim ortamlarında, bağlantı dizeleri bazen veritabanı erişiminin veya veritabanı işlemlerinin kimliğini doğrulamak için bir parola içerir. Bir bağlantı dizesindeki kaynak sahibi parola kimlik bilgisi (ROPC), üretim uygulamalarında kaçınılması gereken bir güvenlik riskidir. Üretim uygulamaları kullanılabilir en güvenli kimlik doğrulama akışını kullanmalıdır. Test veya üretim ortamlarına dağıtılan uygulamalar için kimlik doğrulaması hakkında daha fazla bilgi için ASP.NET Temel güvenlik konularına bakın.
Redis arka düzlemini ayarlayın.
Redis sunucusu dağıtın.
Önemli
Üretim ortamı için, Redis arka planının yalnızca uygulamayla aynı veri merkezinde çalıştığında önerildiğini unutmayın. Aksi takdirde ağ gecikme süresi performansı düşürür. Uygulamanız SignalR Azure bulutunda çalışıyorsa Redis arka planı yerine Azure SignalR Hizmeti'ni öneririz.
Daha fazla bilgi edinmek için aşağıdaki kaynaklara bakın:
SignalR Uygulamada aşağıdaki NuGet paketlerinden birini yükleyin:
-
Microsoft.AspNetCore.SignalR.StackExchangeRedis- StackExchange.Redis 2.X.X'e bağlıdır. Bu, ASP.NET Core 2.2 veya üzeri için önerilen pakettir. -
Microsoft.AspNetCore.SignalR.Redis- StackExchange.Redis 1.X.X'e bağlıdır. Bu paket ASP.NET Core 3.0 veya sonraki sürümlere dahil değildir.
-
Startup.ConfigureServicesyönteminde AddStackExchangeRedis öğesini çağırın.services.AddSignalR().AddStackExchangeRedis("<your_Redis_connection_string>");
Microsoft.AspNetCore.SignalR.Redis kullanılırken AddRedis çağrısını yapın.
Seçenekleri gerektiği gibi yapılandırın:
Çoğu seçenek bağlantı dizesi veya ConfigurationOptions nesnesinde ayarlanabilir. içinde
ConfigurationOptionsbelirtilen seçenekler, bağlantı dizesi ayarlananları geçersiz kılar.Aşağıdaki örnekte nesnedeki seçeneklerin nasıl ayarlanacağı gösterilmektedir
ConfigurationOptions. Bu örnek, aşağıdaki adımda açıklandığı gibi birden çok uygulamanın aynı Redis örneğini paylaşabilmesi için bir kanal ön eki ekler.services.AddSignalR() .AddStackExchangeRedis(connectionString, options => { options.Configuration.ChannelPrefix = "MyApp"; });
Microsoft.AspNetCore.SignalR.Redis kullanılırken AddRedis çağrısını yapın.
Önceki kodda, options.Configuration, bağlantı dizesinde belirtilen herhangi bir değer ile başlatılır.
Redis seçenekleri hakkında bilgi için StackExchange Redis belgelerine bakın.
Birden çok SignalR uygulama için bir Redis sunucusu kullanıyorsanız, her SignalR uygulama için farklı bir kanal ön eki kullanın.
Kanal ön ekini ayarlamak, bir SignalR uygulamayı farklı kanal ön ekleri kullanan diğer kullanıcılardan yalıtıyor. Farklı ön ekler atamazsanız, bir uygulamadan kendi istemcilerinin tümüne gönderilen bir ileti, Redis sunucusunu arka plan olarak kullanan tüm uygulamaların tüm istemcilerine gider.
Sunucu grubu yük dengeleme yazılımınızı yapışkan oturumlar için yapılandırın. Bunun nasıl yapıldığını gösteren bazı belgeler aşağıda verilmiştir:
Redis sunucusu hataları
Bir Redis sunucusu kapandığında, SignalR iletilerin teslim edilmeyeceğini belirten özel durumlar oluşturur. Bazı tipik özel durum iletileri:
- İleti yazma başarısız oldu
- 'MethodName' hub yöntemi çağrılamadı
- Redis bağlantısı başarısız oldu
SignalR sunucu geri geldiğinde göndermek üzere mesajları arabelleğe almaz. Redis sunucusu kapatılırken gönderilen tüm iletiler kaybolur.
SignalR Redis sunucusu yeniden kullanılabilir olduğunda otomatik olarak yeniden bağlanır.
Bağlantı hataları için özel davranış
Redis bağlantı hatası olaylarının nasıl işleneceğini gösteren bir örnek aşağıda verilmiştir.
services.AddSignalR()
.AddMessagePackProtocol()
.AddStackExchangeRedis(o =>
{
o.ConnectionFactory = async writer =>
{
var config = new ConfigurationOptions
{
AbortOnConnectFail = false
};
config.EndPoints.Add(IPAddress.Loopback, 0);
config.SetDefaultPorts();
var connection = await ConnectionMultiplexer.ConnectAsync(config, writer);
connection.ConnectionFailed += (_, e) =>
{
Console.WriteLine("Connection to Redis failed.");
};
if (!connection.IsConnected)
{
Console.WriteLine("Did not connect to Redis.");
}
return connection;
};
});
Redis Kümesi
Redis Kümesi , yüksek kullanılabilirlik elde etmek için birden çok eşzamanlı etkin Redis sunucusu kullanır. Için geri plan SignalRolarak Redis Kümesi kullanıldığında, iletiler uygulamada kod değişikliği yapılmadan kümenin tüm düğümlerine teslim edilir.
Kümedeki düğüm sayısı ile arka düzlemin aktarım hızı arasında bir denge vardır. Düğüm sayısının artırılması kümenin kullanılabilirliğini artırır, ancak iletilerin kümedeki tüm düğümlere iletilmesi gerektiğinden aktarım hızını azaltır.
SignalR Uygulamada, aşağıdaki yaklaşımlardan birini kullanarak tüm olası Redis düğümlerini ekleyin:
- Virgülle ayrılmış düğümleri bağlantı dizesinde listeleyin.
- Bağlantı hataları için özelleştirilmiş davranış kullanıyorsanız, düğümleri
ConfigurationOptions.Endpointsöğesine ekleyin.
Sonraki adımlar
Daha fazla bilgi edinmek için aşağıdaki kaynaklara bakın:
Bu makalede, ASP.NET Core SignalR uygulamasının ölçeğini genişletme amacıyla kullanılacak bir Redis sunucusu ayarlamanın özel yönleri açıklanmaktadırSignalR.
Uyarı
Bu makalede bağlantı dizesi kullanımı gösterilmektedir. Geliştirme ve test için yerel veritabanı kullanıldığında, bağlantı dizesi aracılığıyla veritabanı kullanıcı kimlik doğrulaması gerekmez. Üretim ortamlarında, bağlantı dizeleri bazen veritabanı erişiminin veya veritabanı işlemlerinin kimliğini doğrulamak için bir parola içerir. Bir bağlantı dizesindeki kaynak sahibi parola kimlik bilgisi (ROPC), üretim uygulamalarında kaçınılması gereken bir güvenlik riskidir. Üretim uygulamaları kullanılabilir en güvenli kimlik doğrulama akışını kullanmalıdır. Test veya üretim ortamlarına dağıtılan uygulamalar için kimlik doğrulaması hakkında daha fazla bilgi için ASP.NET Temel güvenlik konularına bakın.
Redis arka düzlemini ayarlayın.
Redis sunucusu dağıtın.
Önemli
Üretim ortamı için, Redis arka planının yalnızca uygulamayla aynı veri merkezinde çalıştığında önerildiğini unutmayın. Aksi takdirde ağ gecikme süresi performansı düşürür. Uygulamanız SignalR Azure bulutunda çalışıyorsa Redis arka planı yerine Azure SignalR Hizmeti'ni öneririz.
Daha fazla bilgi edinmek için aşağıdaki kaynaklara bakın:
SignalR Uygulamada NuGet paketini yükleyin
Microsoft.AspNetCore.SignalR.Redis.yönteminde
Startup.ConfigureServicesöğesinin ardındanAddRedisöğesini çağırınAddSignalR:services.AddSignalR().AddRedis("<your_Redis_connection_string>");Seçenekleri gerektiği gibi yapılandırın:
Çoğu seçenek bağlantı dizesi veya ConfigurationOptions nesnesinde ayarlanabilir. içinde
ConfigurationOptionsbelirtilen seçenekler, bağlantı dizesi ayarlananları geçersiz kılar.Aşağıdaki örnekte nesnedeki seçeneklerin nasıl ayarlanacağı gösterilmektedir
ConfigurationOptions. Bu örnek, aşağıdaki adımda açıklandığı gibi birden çok uygulamanın aynı Redis örneğini paylaşabilmesi için bir kanal ön eki ekler.services.AddSignalR() .AddRedis(connectionString, options => { options.Configuration.ChannelPrefix = "MyApp"; });Önceki kodda,
options.Configuration, bağlantı dizesinde belirtilen herhangi bir değer ile başlatılır.Birden çok SignalR uygulama için bir Redis sunucusu kullanıyorsanız, her SignalR uygulama için farklı bir kanal ön eki kullanın.
Kanal ön ekini ayarlamak, bir SignalR uygulamayı farklı kanal ön ekleri kullanan diğer kullanıcılardan yalıtıyor. Farklı ön ekler atamazsanız, bir uygulamadan kendi istemcilerinin tümüne gönderilen bir ileti, Redis sunucusunu arka plan olarak kullanan tüm uygulamaların tüm istemcilerine gider.
Sunucu grubu yük dengeleme yazılımınızı yapışkan oturumlar için yapılandırın. Bunun nasıl yapıldığını gösteren bazı belgeler aşağıda verilmiştir:
Redis sunucusu hataları
Bir Redis sunucusu kapandığında, SignalR iletilerin teslim edilmeyeceğini belirten özel durumlar oluşturur. Bazı tipik özel durum iletileri:
- İleti yazma başarısız oldu
- 'MethodName' hub yöntemi çağrılamadı
- Redis bağlantısı başarısız oldu
SignalR sunucu geri geldiğinde göndermek üzere mesajları arabelleğe almaz. Redis sunucusu kapatılırken gönderilen tüm iletiler kaybolur.
SignalR Redis sunucusu yeniden kullanılabilir olduğunda otomatik olarak yeniden bağlanır.
Bağlantı hataları için özel davranış
Redis bağlantı hatası olaylarının nasıl işleneceğini gösteren bir örnek aşağıda verilmiştir.
services.AddSignalR()
.AddRedis(o =>
{
o.ConnectionFactory = async writer =>
{
var config = new ConfigurationOptions
{
AbortOnConnectFail = false
};
config.EndPoints.Add(IPAddress.Loopback, 0);
config.SetDefaultPorts();
var connection = await ConnectionMultiplexer.ConnectAsync(config, writer);
connection.ConnectionFailed += (_, e) =>
{
Console.WriteLine("Connection to Redis failed.");
};
if (!connection.IsConnected)
{
Console.WriteLine("Did not connect to Redis.");
}
return connection;
};
});
Redis Kümesi
Redis Kümesi , yüksek kullanılabilirlik elde etmek için birden çok eşzamanlı etkin Redis sunucusu kullanır. Için geri plan SignalRolarak Redis Kümesi kullanıldığında, iletiler uygulamada kod değişikliği yapılmadan kümenin tüm düğümlerine teslim edilir.
Kümedeki düğüm sayısı ile arka düzlemin aktarım hızı arasında bir denge vardır. Düğüm sayısının artırılması kümenin kullanılabilirliğini artırır, ancak iletilerin kümedeki tüm düğümlere iletilmesi gerektiğinden aktarım hızını azaltır.
SignalR Uygulamada, aşağıdaki yaklaşımlardan birini kullanarak tüm olası Redis düğümlerini ekleyin:
- Virgülle ayrılmış düğümleri bağlantı dizesinde listeleyin.
- Bağlantı hataları için özelleştirilmiş davranış kullanıyorsanız, düğümleri
ConfigurationOptions.Endpointsöğesine ekleyin.
Sonraki adımlar
Daha fazla bilgi edinmek için aşağıdaki kaynaklara bakın:
ASP.NET Core