Interfaccia remota a grana grossa rispetto alla logica aziendale incapsulante

1

Sto scrivendo un servizio Web che verrà utilizzato da un client mobile.

Il client mobile deve eseguire diversi controlli sui requisiti concatenati per determinare se l'utente può avviare una richiesta e, in tal caso, quale tipo. Se uno dei controlli fallisce, l'utente viene reindirizzato a un'interfaccia utente che spiega perché.

Non riesco a decidere se esporre un'operazione per ogni controllo sul mio servizio Web o esporre un'unica interfaccia a grana grossa che restituisce semplicemente tutti i valori di controllo in un unico DTO.

L'ottimizzazione prematura dell'interfaccia a grana grossa? Posso sempre fornire sia le interfacce a grana fine che a grana grossa perché l'interfaccia a grana grossa utilizzerà i metodi locali a grana fine per costruire il suo DTO.

    
posta retrodev 25.04.2013 - 11:52
fonte

3 risposte

3

Dipende da cosa sono effettivamente i controlli e da come verranno utilizzati.

Se i controlli si verificano sempre insieme, devi solo esporre un singolo metodo che esegua tutti i controlli.

Se i singoli assegni saranno necessari separatamente, ovviamente occorreranno i singoli metodi disponibili. Potresti anche volere un singolo metodo che li faccia tutti insieme, a seconda di quanto sia complicato.

    
risposta data 25.04.2013 - 12:08
fonte
1

No, non lo è.

L'ottimizzazione significa cambiare l'implementazione di un bit di codice in modo che faccia la stessa cosa, funzioni più velocemente e sia più difficile da leggere o scrivere. (E prematuro significa farlo prima che tu sappia che accelera le cose, e che è necessario un aumento di velocità qui.)

Quello che proponi sono due modi diversi, abbastanza ugualmente complicati di fare le cose, quindi se scegliere l'una o l'altra dipende dalle operazioni di cui avrai probabilmente bisogno. Se puoi comunque aver bisogno di tutti i controlli, e calcolare e restituirli tutti insieme non è ovviamente molto più complicato, quindi non c'è alcuna ragione per non farlo in primo luogo - è solo un buon senso.

    
risposta data 25.04.2013 - 12:34
fonte
1

Entrambi. È una questione di Principio di Responsabilità Singola

Questo è; hai bisogno di quelli a grana grossa per soddisfare i requisiti per i casi d'uso che sembra, e hai bisogno di quelli a grana fine su cui si baseranno quelli a grana grossa.

Il mio suggerimento: esponile entrambi, e fallo così bene separati in classi diverse. Se esponi solo quelli a grana grossa, non stai mettendo un confine tra il lavoro a grana grossa e a grana fine. In futuro ciò potrebbe probabilmente comportare le molteplici responsabilità individuali del lavoro a grana fine che sanguina nei grani a grana grossa che sarebbe una violazione SRP.

Esibli entrambi per garantire che i limiti siano mantenuti e che tu abbia una chiara separazione di preoccupazioni e responsabilità.

    
risposta data 25.04.2013 - 14:05
fonte

Leggi altre domande sui tag