Ho usato SignalR
per ottenere funzionalità di messaggistica in tempo reale in molti dei miei progetti. Sembra funzionare in modo affidabile ed è molto facile da imparare a usare.
La tentazione, almeno per me, è di abbandonare lo sviluppo di un servizio API Web e utilizzarlo SignalR
per tutto.
Sento che questo potrebbe essere ottenuto con una progettazione ponderata e, se lo fosse, significherebbe che sarebbe necessario molto meno codice client. Ancora più importante, significherebbe che ci sarebbe una singola interfaccia per i servizi piuttosto che un'interfaccia divisa, e nel peggiore dei casi, si potrebbe collegarlo senza pensare a quando le cose vengono rese, ecc.
Quindi, vorrei sapere:
- Esistono altri motivi per non utilizzare SignalR al posto di tutti i servizi Web oltre alle prestazioni?
- Le prestazioni di SignalR sono sufficientemente preoccupanti da non avere senso farlo?
È stato a lungo un mio sogno poter tradurre le definizioni di oggetti e servizi sul lato server in codice di accesso al servizio sul lato client senza qualcosa di stupido node.js
. Ad esempio, se definisco un oggetto interessante InterestingObject
e un servizio per CRUD
l'oggetto InterestingObjectService
, posso definire una route URL standard per il servizio, ad esempio "/ {serviceName} / {methodName}" - ma devo ancora scrivere il codice client per accedere il servizio. Poiché l'oggetto verrà passato dal client al server e viceversa, non vi è alcun motivo pratico per avereper definire l'oggetto in modo esplicito nel codice lato client, né dovrebbe essere necessario definire esplicitamente le route per eseguire operazioni CRUD. Sento che dovrebbe esserci un modo per standardizzare tutto ciò in modo che sia possibile scrivere un client partendo dal presupposto che l'accesso al servizio funzioni dal client al server e viceversa in modo trasparente come se stessi scrivendo un WinForms o Java Applet o App nativa o cosa hai.
Se SignalR è abbastanza buono da usare al posto di un servizio web tradizionale, potrebbe essere un modo fattibile per raggiungere questo obiettivo. SignalR include già funzionalità per far funzionare l'hub come il servizio che descrivo, in modo da poter definire un servizio di base comune (CRUD) che offrirebbe tutte queste funzionalità pronte all'uso con qualche riflessione. Quindi potrei quasi dare per scontato l'accesso al servizio, risparmiandomi il fastidio di riscrivere il codice per accedere a qualcosa a cui si poteva accedere per convenzione - e, soprattutto, il tempo che avrei dovuto dedicare alla scrittura del codice per definire come questo viene aggiornato in il DOM.
Dopo aver letto la mia modifica, penso che potrebbe essere un po 'assurdo, quindi non esitare a chiedermi se hai domande su cosa sto ricevendo. Fondamentalmente, voglio che l'accesso al servizio sia il più trasparente possibile.