Azure SignalR Hizmeti hizmet modu
Hizmet modu Azure SignalR Hizmeti önemli bir kavramdır. SignalR Hizmeti şu anda üç hizmet modunu destekler: Varsayılan, Sunucusuz ve Klasik. SignalR Hizmeti kaynağınız her modda farklı davranır. Bu makalede, senaryonuza göre doğru hizmet modunu seçmeyi öğreneceksiniz.
Hizmet modunu ayarlama
Azure portalında yeni bir SignalR kaynağı oluşturduğunuzda bir hizmet modu belirtmeniz istenir.
Hizmet modunu daha sonra ayarlar menüsünden de değiştirebilirsiniz.
Azure SignalR CLI kullanarak hizmet modunu ayarlamak veya değiştirmek için ve az signalr update
kullanınaz signalr create
.
Varsayılan mod
Adından da anlaşılacağı gibi, Varsayılan mod SignalR Hizmeti için varsayılan hizmet modudur. Varsayılan modda uygulamanız tipik bir ASP.NET Core SignalR veya ASP.NET SignalR (kullanım dışı) uygulaması olarak çalışır. Hub'ı barındıran ve hub sunucusu olarak adlandırılan bir web sunucusu uygulamanız var ve istemcilerin hub sunucusuyla tam çift yönlü iletişimi var. ASP.NET Core SignalR ile Azure SignalR Hizmeti arasındaki fark: ASP.NET Core SignalR ile istemci doğrudan merkez sunucusuna bağlanır. Azure SignalR Hizmeti ile hem istemci hem de hub sunucusu SignalR Hizmeti bağlanır ve hizmeti ara sunucu olarak kullanır. Aşağıdaki diyagramda Varsayılan modda tipik uygulama yapısı gösterilmektedir.
Varsayılan mod, SignalR Hizmeti ile kullanmak istediğiniz bir SignalR uygulamanız olduğunda genellikle doğru seçimdir.
Varsayılan modda bağlantı yönlendirme
Varsayılan modda, hub sunucusu ile sunucu bağlantıları olarak adlandırılan SignalR Hizmeti arasında WebSocket bağlantıları vardır. Bu bağlantılar, iletileri sunucu ve istemci arasında aktarmak için kullanılır. Yeni bir istemci bağlandığında, SignalR Hizmeti istemciyi mevcut sunucu bağlantıları aracılığıyla bir hub sunucusuna yönlendirir (birden fazla sunucunuz olduğunu varsayar). İstemci bağlantısı, yaşam süresi boyunca aynı hub sunucusuna yapışır. Bu özellik bağlantı sürekliliği olarak adlandırılır. İstemci iletileri gönderdiğinde her zaman aynı hub sunucusuna gider. Yapışkanlık davranışıyla, hub sunucunuzdaki tek tek bağlantılar için bazı durumları güvenli bir şekilde koruyabilirsiniz. Örneğin, sunucu ve istemci arasında bir akış yapmak istiyorsanız, veri paketlerinin farklı sunuculara gittiği durumu göz önünde bulundurmanız gerekmez.
Önemli
Varsayılan modda istemci, önce hizmete bağlı bir hub sunucusu olmadan bağlanamaz. Ağ kesintisi veya sunucunun yeniden başlatılması nedeniyle tüm hub sunucularınızın bağlantısı kesilirse, istemci bağlantılarınız hiçbir sunucunun bağlı olmadığını belirten bir hata alır. SignalR hizmetine her zaman en az bir hub sunucusu bağlı olduğundan emin olmak sizin sorumluluğunuzdadır. Örneğin, uygulamanızı birden çok hub sunucusuyla tasarlayabilir ve ardından bunların tümünün aynı anda çevrimdışı olmayacağından emin olabilirsiniz.
Varsayılan yönlendirme modeli, bir hub sunucusu çevrimdışı olduğunda o sunucuya yönlendirilen bağlantıların bırakıldığı anlamına da gelir. Hub sunucunuz bakım için çevrimdışı olduğunda bağlantıların kesilmesini beklemeniz ve uygulamanızdaki etkileri en aza indirmek için yeniden bağlanmayı işlemeniz gerekir.
Not
Varsayılan modda, bir hub sunucusundan geçmek istemiyorsanız istemciye doğrudan ileti göndermek için REST API, yönetim SDK'sı ve işlev bağlamayı da kullanabilirsiniz. Varsayılan modda istemci bağlantıları hala hub sunucuları tarafından işlenir ve yukarı akış uç noktaları bu modda çalışmaz.
Sunucusuz mod
Varsayılan moddan farklı olarak, Sunucusuz mod bir hub sunucusunun çalışmasını gerektirmez, bu nedenle bu mod "sunucusuz" olarak adlandırılır. SignalR Hizmeti, istemci bağlantılarını korumakla sorumludur. Bağlantı sürekliliği garantisi yoktur ve HTTP istekleri WebSockets bağlantılarından daha az verimli olabilir.
Sunucusuz mod, gerçek zamanlı mesajlaşma özelliği sağlamak için Azure İşlevleri ile birlikte çalışır. İstemciler, iletileri çıkış bağlaması olarak göndermek üzere işlev bağlaması olarak adlandırılan Azure İşlevleri için SignalR Hizmeti bağlamalarıyla çalışır.
Sunucu bağlantısı olmadığından, sunucu bağlantısı kurmak için bir sunucu SDK'sı kullanmaya çalışırsanız bir hata alırsınız. SignalR Hizmeti Sunucusuz modda sunucu bağlantısı girişimlerini reddeder.
Sunucusuz modda bağlantı sürekliliği yoktur, ancak istemcilere sunucu tarafı uygulama gönderme iletileri göndermeye devam edebilirsiniz. sunucusuz modda istemcilere ileti göndermenin iki yolu vardır:
- Tek seferlik bir gönderme olayı için REST API'lerini kullanın veya
- Birden çok iletiyi daha verimli bir şekilde gönderebilmeniz için Bir WebSocket bağlantısı kullanın. Bu WebSocket bağlantısı bir sunucu bağlantısından farklıdır.
Not
SignalR hizmet yönetimi SDK'sında hem REST API hem de WebSockets desteklenir. .NET dışında bir dil kullanıyorsanız, bu belirtimi izleyerek REST API'lerini el ile de çağırabilirsiniz.
Sunucu uygulamanızın istemcilerden ileti ve bağlantı olayları alması da mümkündür. SignalR Hizmeti, web kancalarını kullanarak önceden yapılandırılmış uç noktalara (yukarı akış uç noktaları olarak adlandırılır) ileti ve bağlantı olayları sunar. Yukarı akış uç noktaları yalnızca Sunucusuz modda yapılandırılabilir. Daha fazla bilgi için bkz . Yukarı akış uç noktaları.
Aşağıdaki diyagramda Sunucusuz modun nasıl çalıştığı gösterilmektedir.
Klasik mod
Not
Klasik mod temel olarak Varsayılan ve Sunucusuz modlar kullanılmadan önce oluşturulan uygulamalar için geriye dönük uyumluluk içindir. Son çare dışında Klasik modu kullanmayın. Senaryonuza göre yeni uygulamalar için Varsayılan veya Sunucusuz kullanın. Klasik mod gereksinimini ortadan kaldırmak için mevcut uygulamaları yeniden tasarlamayı düşünmelisiniz.
Klasik, Varsayılan ve Sunucusuz modlarının karma modudur. Klasik modda, bağlantı türüne istemci bağlantısı kurulduğunda bağlı bir hub sunucusu olup olmadığına karar verilmektedir. Bir hub sunucusu varsa, istemci bağlantısı bir hub sunucusuna yönlendirilir. Bir hub sunucusu kullanılamıyorsa, istemci bağlantısı istemciden sunucuya iletilerin bir hub sunucusuna teslim edilemediğini sınırlı bir sunucusuz modda yapılır. Klasik mod sunucusuz bağlantılar, yukarı akış uç noktaları gibi bazı özellikleri desteklemez.
Tüm hub sunucularınız herhangi bir nedenle çevrimdışıysa, bağlantılar Sunucusuz modda yapılır. En az bir hub sunucusunun her zaman kullanılabilir olduğundan emin olmak sizin sorumluluğunuzdadır.
Doğru hizmet modunu seçin
Artık hizmet modları arasındaki farkları anlamanız ve bunlar arasında nasıl seçim yapabileceğinizi bilmeniz gerekir. Daha önce açıklandığı gibi, yeni veya mevcut uygulamalar için Klasik mod önerilmez. Hizmet modu için doğru seçimi yapmanıza ve mevcut uygulamalar için Klasik modu devre dışı bırakmanıza yardımcı olabilecek bazı ipuçları aşağıdadır.
SignalR kitaplığının nasıl çalıştığını zaten biliyorsanız ve Azure SignalR Hizmeti kullanmak için şirket içinde barındırılan bir SignalR'den geçmek istiyorsanız Varsayılan modu seçin. Varsayılan mod, şirket içinde barındırılan SignalR ile tam olarak aynı şekilde çalışır ve SignalR kitaplığında aynı programlama modelini kullanabilirsiniz. SignalR Hizmeti, istemciler ve hub sunucuları arasında ara sunucu işlevi görür.
Yeni bir uygulama oluşturuyorsanız ve hub sunucusu ile sunucu bağlantılarını korumak istemiyorsanız Sunucusuz modu'nu seçin. Sunucusuz mod Azure İşlevleri ile birlikte çalışır, böylece herhangi bir sunucunun bakımını yapmanız gerekmez. REST API, yönetim SDK'sı veya işlev bağlama + yukarı akış uç noktası ile tam çift yönlü iletişimleriniz olabilir, ancak programlama modeli SignalR kitaplığından farklıdır.
İstemci bağlantılarına hizmet vermek için hem hub sunucularınız hem de doğrudan istemcilere ileti göndermek için bir arka uç uygulamanız varsa Varsayılan modu seçin. Varsayılan ve Sunucusuz modu arasındaki temel fark, hub sunucularına sahip olup olmadığınız ve istemci bağlantılarının nasıl yönlendirilmiş olduğudur. REST API/yönetim SDK'sı/işlev bağlaması her iki modda da kullanılabilir.
Gerçekten karma bir senaryonuz varsa, kullanım örneklerini kullanıma göre ayarlanmış hizmet moduyla birden çok SignalR Hizmeti örneğine ayırmayı göz önünde bulundurun. Klasik modu gerektiren karma senaryoya örnek olarak aynı SignalR kaynağında iki farklı hub'ının olması gerekir. Hub'lardan biri geleneksel SignalR hub'ı, diğeri ise Azure İşlevleri ile birlikte kullanılır. Bu örnek, biri Varsayılan modda, diğeri Sunucusuz modda olmak üzere iki kaynağa ayrılmalıdır.
Sonraki adımlar
Varsayılan ve Sunucusuz modlarını kullanma hakkında daha fazla bilgi edinmek için aşağıdaki makalelere bakın.