Socket Programlama

talhakoc 28 Mart 2021C# .NET

Profesyonel yazılım süreçlerinde, genellikle ihtiyaç duyulan mobil, web ve windows clientlar merkezi bir web api üzerinden veri alışverişi yaparak son kullanıcılara hizmet vermektedir. API katmanında süreç veri tabanından başlar, business ihtiyaçlarının kodlandığı bir katmandan geçerek genellikle RESTFUL servisler vasıtası ile ilgili clientlara ulaştırılır. Ancak bu süreç her zaman client ın apiyi tetiklemesi, yani apiye istekte bulunmasıyla başlar. Clientlar ya api ye veri gönderirler, ki son kullanıcıdan bilgi alır apiye post ederler ve dolayısıyla db ye kaydederler(bir bilgi kaydetmek gibi) ya da veri çekerek son kullanıcıya gösterirler(sipariş listesi çekmek gibi). Ancak farkedildiği üzere bu haberleşme her zaman client tarafından tetiklenmektedir.

Api tarafından tetikleme ile clientlara veri aktarılması noktasında ise geleneksel ve eski çözümler, apiye belli aralıklarla istekte bulunmak suretiyle yapılmasıdır. Bu çözümde örnek olarak 10 sn de bir gibi bir sürede apiye istek yapılmakta, onun karşılığında da cevap dönmektedir. Yani hem request için hem response için ağ kullanılmakta, sürekli olarak bu işlemler için ihtiyacı olan bütün clientlarca çift taraflı olarak network meşgul olmaktadır.

Bu problemin daha efektif çözümü için tek taraflı ve çift yön tetikleme imkanlı çözümler bulunmaktadır. Yani haberleşme için hem request(clientın talebi) hem de response(api’nin cevabı) yerine sadece clienttan servera ya da serverdan clienta mesaj gönderilebilmektedir. Bu çözümlerden başlıcası web sockettir.

Yukarıda da resmedildiği gibi WebSocket ile tek bir kere bağlantı kurulduktan sonra karşılıklı tek taraflı tek yönlü haberleşme gerçekleşmektedir. Websocket benzeri tek yönlü haberleşme kullanmak api den clientlara anlık veri gönderebilmenin en iyi yollarından biridir.

Websocket haberleşmesi, anlık karşılıklı haberleşmelerin olduğu yerlerde kullanılır. Kullanıcılar arasındaki anlık mesajlaşma uygulamalarında, borsa gibi anlık değişen bilgilerin sürekli clienta aktarılması gereken uygulamalarda, veya herhangi bir kayıt eklendiğinde farklı noktalardaki listeleme ekranlarında uyarı mesajı göndermek gibi alanlarda sıklıkla kullanılmaktadır.

.Net teknolojisinde websocket gibi anlık mesajlaşmalar için Signalr kütüphanesi bulunmaktadır. Bu kütüphane kullanılarak socket veya benzeri anlık tek yönlü haberleşme uygulamalarını normal socket uygulamasına göre çok daha kolay ve efektif şekilde yapılabilmektedir. Ancak signalr ın da kendine göre dezavantajları vardır, her tarayıcıyı desteklememektedir. Ayrıca .Net core api server projesi, standart .Net kullanan client projeleri arasında signalr ile iletişim kurulamamaktadır. Birbirlerini desteklememektedir. Yani .Net Core api’ye eklenecek Signalr projesi standart .Net ile geliştirilen clientları desteklememektedir. Standart Socket kullanımı ise daha geniş kullanım imkanına sahiptir.

Hem signalr’ın hem de websocketin mevcut kullanılan api projesi ile beraber kullanılabileceği unutulmamalıdır. Server projesi .Net Core ile yazıldığı taktirde bu proje hem windows hem linux ortamlarda çalıştırılabilecektir. Ancak standart .net server sadece windows ortamında çalışabilir. Client için bir sınır yoktur.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Arama

Twitterda

© 2014 - Talha Koç. All Rights Reserved. Powered by Wordpress and Design by We Create Web Designs