Geçtiğimiz hafta SignalR‘ın ASP.NET Core için Alpha(2) versiyonu yayınlandı. ASP.NET Core için baştan yazılan ve bazı önemli değişikliklere sahip olan bu yeni versiyon, açıkcası şu an PROD ortamlar için bence çok yeterli değil. Ancak .NET Core’un gelişim süresini göz önüne alınca yeni SignalR’ın da hızlı bir şekilde günümüz ihtiyaçlarını karşılayacağına eminim. Hem ASP.NET Core’a uygun olması, hem de daha basit bir şekilde kullanılabilmesi için bu değişikliklerin yapıldığının altını çizmek isterim.

SignalR’ın ne olduğu ya da ne olmadığıyla ilgili değil de, yeni SignalR’da şimdilik neler değişiyor, yeni neler geliyor onlardan bahsetmek istiyorum. Yeni versiyona olan hazırlıklarınızı yapmanıza ya da SignalR’ı cesaret edip şu an bile kullanmayı düşünüyorsanız neler sizi bekliyoru görmenize biraz olsun yardımcı olabilirim belki.

Şu an BETA bile olmadığının, Alpha versiyonun olduğunu ve en son versiyonu ile yazıda bahsedeceğim şeylerin değişebileceğini hatırlatmak isterim.

Client uygulamalar için yeni Javascript kütüphanesi…

SignalR’ın JavaScript client’ı için olan kütüphaneler de baştan yazıldı. TypeScript ile yazılan yeni client kütüphaneleri jQuery bağımlığını ortadan kaldırıyor. Ancak kütüphane tarafındaki farklılıklar ve genel SignalR’daki yeniliklerden dolayı, yeni client’ların eski SignalR Server uygulamaları ile iletişimi mümkün değil. Aynı şekilde yeni SignalR Server uygulamalarınında eski client’lar ile iletişimi mümkün değil. Yeni JavaScript kütüphaneleri popüler tüm browser’lar ile uyumlu.

Otomatik bağlantı desteği şu an yok…

Önceki versiyonlarda SignalR client’ları bağlantı koptuğu zaman otomatik olarak yeniden bağlanıyor, bağlanmayı deniyordu. Şu anki versiyonda bu özellik yok. Bağlantının kopması durumlarında, tekrar bağlantı kurma işlerini client tarafında bizim yönetiyor olmamız lazım.

Sticky-Session zorunlu…

Şu an ne yazık ki sticky-session zorunlu. Büyük bir ihtimal bunun son versiyonda değişeceğini düşünüyorum ama şu anki versiyonda, eğer Load-balance arkasında çalışan uygulamalarınız varsa SignalR Client’ları sadece ilk bağlandığı server ile iletişim kurabiliyor.

İletişim yöntemlerindeki değişiklik…

Önceki versiyonlarda SignalR Client’ları ve Server uygulamaları, browser’ların desteklediği transport yöntemlerine göre iletişim kuruyor, SignalR desteklenmeyen bir transport yöntemi varsa, diğerini deniyordu. Yani eğer WebSockets desteklenmiyorsa, Server-Sent Events ya da foreever-frame ya da hiç bir şey desteklenmiyorsa long-polling şeklinde bağlantı kuruluyorsa. Yeni versiyonda artık bu da değişiyor. Eğer desteklenmeyen bir transport var ise, diğer transport yöntemleri denenmiyor.

Streaming artık mümkün…

Server-Client arasında veri akışı artık mümkün. Bu sayede bir metod çalışmasını bitirmeden veriyi client tarafına aktarmak mümkün olacak.

“Binary Data” ve yeni protokollerin desteği…

Yeni SignalR versiyonu ile binary formatında verileri iletmek mümkün. Bu hem verilerin boyutlarında(burası değişken) avantaj sağlayacak hem de performans konusunda. Bu destek MessagePack mesaj protokolü alt yapısına uygun bir şekilde geliştirildiği için, custom protokollerinizi geliştirip veri iletişimini bunlar üzerinden sağlamanız mümkün.

Şimdilik bu kadar… Umarım az biraz olsun bazı konularda aklınızdaki sorulara cevap sağlamış ya da cevaplar için anahtar kelimeleri sağlamışımdır.

Son olarak aşağıdaki videoya da göz atmanızı tavsiye ederim. Biraz uzun ama SignalR’ın yeni versiyonu için tüm sorulara cevap veriyor.

Introducing ASP.NET Core Sockets – Damian Edwards & David Fowler from NDC Conferences on Vimeo.