Ben kullandım SignalR
benim projelerin birkaç gerçek zamanlı mesajlaşma işlevselliği elde etmek. Güvenilir bir şekilde çalışıyor gibi görünüyor ve kullanmayı öğrenmek çok kolay.
En azından benim için cazip bir Web API hizmeti geliştirmeyi bırakmak ve SignalR
her şey için kullanmaktır .
Bunun düşünceli tasarımla elde edilebileceğini hissediyorum, ve öyle olsaydı, müşteri kodunun daha az gerekli olacağı anlamına gelirdi. Daha da önemlisi, bölünmüş bir arayüzden ziyade hizmetlere tek bir arayüzün olacağı ve en kötü durumda, işler ne zaman ortaya çıkacağını düşünmeden bunu bir araya getirebileceği anlamına gelir .
Bu yüzden bilmek istiyorum:
- SignalR'ı performansın yanı sıra tüm web servisleri yerine kullanmamak için başka bir neden var mı?
- SignalR'ın performansı, bunun mantıklı olmayacağı konusunda yeterince yeterli mi?
Sunucu tarafı nesne ve hizmet tanımlarını müşteri tarafı hizmet erişim koduna aptalca bir şey olmadan tercüme edebilmek çok uzun zamandır hayalimdi node.js
. İlginç bir nesneyi tanımlamak Örneğin, InterestingObject
ve bir hizmet CRUD
nesnesi InterestingObjectService
, ben hizmetine bir standart URL rol tanımlayabilir - söz hakkından, "/ {serviceName} / {methodName}" - ama hala erişime yazma istemci koduna gerek hizmet. Nesne sunucu ve arkasına istemciden geçirilen olacak beri hiçbir pratik sebep yoktur sahipnesneyi açıkça istemci tarafı kodunda tanımlamak için de, CRUD işlemlerini gerçekleştirme yollarını açıkça tanımlamaya gerek duyulmamalıdır. Bunları standardize etmenin bir yolu olması gerektiğini düşünüyorum, böylece hizmet erişiminin istemciden sunucuya çalıştığını ve bir WinForms veya Java yazıyormuş gibi yaptığım gibi şeffaf bir şekilde geri döndüğünü varsayarak bir müşteriye yazmanın mümkün olduğunu düşünüyorum. Applet veya Native App veya neyin var.
SignalR geleneksel bir web servisi yerine kullanmak için yeterince iyi ise, bunu başarmak için uygun bir yol olabilir. SignalR, hub'ın tanımladığım hizmette çalışmasını sağlayacak bir işlevsellik içeriyor; bu nedenle, tüm bu işlevselliği bir parça yansıması ile birlikte sunabilecek ortak bir temel (CRUD) hizmeti tanımlayabilirim. O zaman neredeyse hizmete erişim yetkisi alabilir, bana kongre tarafından erişilebilecek bir şeye erişmek için yeniden yazma kodundaki sıkıntıdan kurtulabilirdim - ve daha da önemlisi, bunun nasıl güncelleneceğini tanımlamak için kod yazmak için harcayacağım zaman DOM.
Düzenlememi okuduktan sonra biraz saçma olabileceğimi hissediyorum, bu yüzden neye bulaştığım hakkında sorularınız olursa bana sormaktan çekinmeyin. Temel olarak, servis erişiminin mümkün olduğunca şeffaf olmasını istiyorum.