SignalR’a kısa bir bakış

Abdullah Asım KILIÇ
2 min readOct 12, 2021

--

Geliştirmiş olduğunuz uygulamalarınıza gerçek zamanlı web işlevselliği kazandırma sürecini basitleştiren bir kitaplıktır diyebiliriz. Gerçek zamanlı web işlevselliği nedir peki? Client-Server arasında klasik bir şekilde Request-Response türünde olan haberleşmenin tam aksine eş zamanlı olarak yapılan haberleşme yöntemidir. Sunucu, istemcilerin yeni veri istemesini beklemeksizin verilerde bir manipülasyon olması durumunda bundan istemcileri anında haberdar eder.

SignalR ile yapılan projeler genelde sohbet uygulamaları örneklerine dayandırılsa da, çok daha fazla projelerde kullanılmaktadır. Kullanıcıların verilerinde herhangi bir değişiklik olup olmadığını kontrol etmek için sayfa yenileme ihtiyacı hissediyorsa, bu sorunun çözümü SignalR kütüphanesidir. Veri güncelliğinin kontrol edilmesi için sayfa yenileme ya da bağlantı yenileme yöntemleri hem zaman hem de performans açısından oldukça maliyetlidir.

SignalR, bağlantı yönetimini bizden alarak takibini kendisi gerçekleştirir bu da bize büyük bir avantaj sağlamaktadır. Böylelikle sunucuya bağlı olan bütün istemcilere ya da istenilen istemciye aynı anda veri gönderimi sağlayabilmekteyiz. İstemci ve sunucu arasındaki bağlantı HTTP bağlantısında olduğu gibi her iletişimde yeniden kurulmak yerine kalıcı bir biçimde kurulmaktadır.

Günümüz imkanlarını değerlendirecek olursak klasik haberleşme yaklaşımının pek yeterli olmadığı fark edilmektedir, buna çözüm olarak farklı kütüphanelere ve hatta protokollere olan ihtiyaç kaçınılmazdır. Anlık veriler ile çalışılacak projelerde gerçek zamanlı hizmet verecek bir teknolojiye ihtiyaç olduğu ve HTTP’den farklı olarak TCP protokolünü benimseyen WebSocket alt yapılı sistemlerin kullanılması gerekliliği ortadadır.

TCP iki yönlü (bidirectional) bir yapıya sahiptir. İki tarafında birbirine eş zamanlı olarak veri göndermesine olanak sağlar. HTTP protokolünde istemci sunucuyu tetikleyebilir ama sunucu, istemciyi tetikleyemez. SignalR’ın altında yatan teknoloji WebSocket’tir ve özünde RPC (Remote Procedure Call) mekanizmasını benimsemektedir. RPC, sayesinde sunucu izin verilen ölçüde, istemcide bulunan herhangi bir metodun tetiklenmesini sağlayabilmektedir. Böylelikle uygulamalar sayfa yenilemesi yapmadan veri transferini sağlamış olur. SignalR içerisinde WebSocket aktarımını kullandığından bahsetmiştik. İstenirse uygulamalar doğrudan WebSocket kullanılarak da yazılabilir, fakat SignalR bizim için uygulanması gereken prosedürleri arka planda bizim adımıza yürütmektedir.

SignalR ile ilgili örnek proje geliştirmek isteyenler Gençay YILDIZ’ın SignalR İle Run Time Uygulama Geliştirme Serisi videolarını izleyebilirler. İlerleyen günlerde SignalR’a daha detaylı şekilde giriş yapacağım.

REFERENCES

--

--