Abbiamo un'applicazione Web che consiste in un back end a 3 livelli (Controller/Biz/Data) con un'interfaccia utente. Il nostro livello dati è l'unico responsabile per estrarre i dati dall'istanza del database (SQL), i messaggi del livello aziendale i dati e creare proprietà derivate, il controllore è responsabile dell'invio di tali modifiche all'interfaccia utente.Dipendenza SQL e SignalR in un'architettura a 3 livelli
Abbiamo bisogno di avere aggiornamenti in tempo reale nella nostra applicazione che DEVONO essere tracciati a livello di database (non a livello di controller).
Abbiamo optato per utilizzare SQL Dependency e SignalR come nostra soluzione.
Tutto ciò che ho cercato su SignalR e SQL Dependency è a livello di database, dove la dipendenza SQL identificherà la modifica e la trasmissione, tutto all'interno del livello dati. Per ovvi motivi questa metodologia aggirerebbe le proprietà derivate create nel livello aziendale e ci darà un oggetto dall'aspetto diverso.
L'unica soluzione a cui posso pensare è utilizzare la dipendenza SQL per tenere traccia delle modifiche, scaricarle in alcune tabelle/oggetti, quindi utilizzare il polling per recuperare quelli dal controller, al livello biz, al livello dati e backup.
- Domanda n. 1: C'è una soluzione migliore?
- Domanda n. 2: Qual è la soluzione migliore per includere la logica del livello aziendale, ma essere ancora in grado di tenere traccia delle modifiche nel livello dati?
- Domanda n. 3: è possibile senza il polling?
Questo non risolve il problema poiché questo tipo di codice/logica non dovrebbe essere a livello aziendale. Il livello aziendale non dovrebbe sapere nulla di ciò che è coinvolto nello schema e dovrebbe funzionare solo sui DTO. – mtsuggs
Per quale scopo? Quindi puoi sederti e ammirare che hai mantenuto il concetto a 3 livelli, a scapito di una soluzione? Usiamo questi strumenti per risolvere i problemi. Non tutti i problemi si adattano all'ultima idea di schemi di progettazione che tutti apprezziamo in questo decennio. Hai una soluzione, quindi confondi un po 'il controller e il livello aziendale. Grande affare. Basta mantenere la vista o l'utente finale dall'accesso diretto ai dati e sei ancora d'oro. – Jason