Soran
Çözüm bulamıyorum biri bana fikir yada yol gösterebilirmi ?

Soru
-
Merhaba,
3-4 gündür veritabanındaki anlık değişimi fark edip ona göre olay yaptırmaya çalışıyorum.
Senaryo şöyle
2 bilgisayar var birinde mssql server kurulu ana bilgisayar diğeri laptop ikiside aynı programı çalıştırıyor. Biri masa açarsa diğer bilgisayarda'da açılmış olarak gözükmesi gerekiyor.
Forumdaki tavsiyeler göre SqlDependency ile yapmaya çalıştım fakat o sadece mssql serverın olduğu yerde çalışıyor yerel ağdaki diğer bilgisayarda hata verip kapanıyor değişikliği algılamıyor. Bunun üzerine daha detaylı araştırdım aşağıdaki linki buldum
https://github.com/dyatchenko/ServiceBrokerListener
fakat yukardakinde de ne yaptıysam olmadı veritabanına kullanıcı tanımlıyorum olmuyor schema veriyorum olmuyor. Bir türlü iki bilgisayar ne yapmış ne etmiş haberleştiremedim.
Daha farklı bi çözüm yolu bilen var mı illa veritabanındaki değişikliği algılamak zorunda değil. A bilgisayarındaki kişi bi tuşa basınca B bilgisayarında'da o tuşa bassın mesela ? kısaca A bilgisayarı masa methodunu çağırdıysa arkasından B bilgisayarına masa methodu çalıştırıldı git veritabınından masaları çek, gibi bir şey lazım.
1 Hafta olacak şu işi çözümleyemedim öncesinde her saniyede bir veritabanından veriyi çekiyordum timeout expired oluyordu bu yüzden farklı yöntemlere başvurdum.
Yardımlarınızı bekliyorum teşekkürler.
Tüm Yanıtlar
-
Aynı soruyu farklı cümlelerle kurdunuz ben aynı öneride bulunacağım. Sunucu bilgisayara bir servis uygulaması koyun bu arkadaşta da signalR veya başka bir şey ile istemcilerle haberleşsin. Zaten ana makine dışındaki makinelerin veritabanı ile haberleşmesi de hoş bir pattern değil.
-
Aynı soruyu farklı cümlelerle kurdunuz ben aynı öneride bulunacağım. Sunucu bilgisayara bir servis uygulaması koyun bu arkadaşta da signalR veya başka bir şey ile istemcilerle haberleşsin. Zaten ana makine dışındaki makinelerin veritabanı ile haberleşmesi de hoş bir pattern değil.
Şimdi doğru anlamışmıyım diye 2 sorum olucak
ilk sorum signalR winforms application'da yapılır mı ? çünkü internette asp.net üzerine çıkıyor.
ikinci sorum,
sunucu bilgisayar yani mssql serverın kurulu olduğu bilgisayar aynı zamanda kasa işlevini görüyor yani program orada da kurulu. Ben CRUD işlemleri için yerel ağ bağlantısından servise ulaşıp servis üzerinden mi CRUD işlemlerini yapacağım ? Eğer öyle olursa bir bilgisayarda yapılan değişiklik diğerinde nasıl fark edilecek ve ona göre verileri baştan çek diyebileceğim ?
Teşekkürler.
-
SQL SERVER ---> WEB SERVICE + SIGNALR ---> CLIENT UYGULAMALAR
İlk ikisi aynı makinede olacak, web service sql den dependency ile değişiklikleri dinleyebilir veya iş katmanından hiç sql i bulaştırmadan halledebilir.
Clientlar web service aracılığı ile crud işlemlerini yaparlar.
Clientler SignalR ile servise ayrıca bağlanırlar ve değişiklik olduğunda tek bir yerden bu değişiklik bilgisi dağılmış olur.
Bu örnek kuş görüşü bir mimari. Uygulamanın kendisini bilmediğim için bu kadar yazabiliyorum. Kolaylıklar diliyorum.
-
SQL SERVER ---> WEB SERVICE + SIGNALR ---> CLIENT UYGULAMALAR
İlk ikisi aynı makinede olacak, web service sql den dependency ile değişiklikleri dinleyebilir veya iş katmanından hiç sql i bulaştırmadan halledebilir.
Clientlar web service aracılığı ile crud işlemlerini yaparlar.
Clientler SignalR ile servise ayrıca bağlanırlar ve değişiklik olduğunda tek bir yerden bu değişiklik bilgisi dağılmış olur.
Bu örnek kuş görüşü bir mimari. Uygulamanın kendisini bilmediğim için bu kadar yazabiliyorum. Kolaylıklar diliyorum.
-
Tekrar Merhaba, iki gündür yaptığım araşatırmalar neticesinde SignalR web tabanlı uygulamalar için kullanılıyor fakat benim yapmak istediğim şey,
Yerel ağ bağlantısından aynı programın haberleşmesi (windows form application)
SignalR için console application'da Hub server kuruyorum Clientler bağlanıyor localhost:8080 üzerindent test ediyorum. Ama yapmak istediğim şey clientlerin servera mesaj göndermesi değil, serverın clientlere mesaj göndermesi lazım sqldependency ile değişikliği algıladığımızda connect olan tüm clientlere bunu dağıtması lazım ?
-
SignalR her tür istemci tipinde kullanılabilir! Web, desktop, mobil....
SignalR da iletişim duplexdir yani sunucu istemcilere, istemci sunucuya istediği zaman gönderide bulabilir.
- Düzenleyen Cihan YakarMVP 6 Aralık 2018 Perşembe 06:55