Domanda

Io di solito scrivo casi di utilizzo per tutti i software che ho sviluppato. Per ogni caso d'uso sono generalmente scrivere un controllore che dirige il flusso (implementa un caso d'uso).

Di recente ho iniziato lo sviluppo di applicazioni web con Asp.net MVC. Una delle migliori pratiche di Asp.net MVC è quello di mantenere molto meno logica nei controllori. Io non sono in grado di capire come posso cambiare il mio design per riflettere questo.

Io fondamentalmente voglio un modo per incapsulare i miei casi d'uso.

È stato utile?

Soluzione 3

Creare un componente di business per incapsulare i casi d'uso. Per esempio se si dispone di un sistema di gestione di congedo si avrebbe casi d'uso come fare domanda per un permesso, approvare una richiesta di congedo, rifiuta una richiesta di congedo, ecc Per questo si può creare un componente aziendale (classe) chiamato Leave Manager con metodi (funzioni / operazioni) come "Applica", "Approvare", "Rifiuta", ecc Questi metodi incapsulare i vostri casi d'uso. Questi metodi dovrebbero prendere le entità di business e le classi memorizzare i dati in input ed eseguire il caso d'uso.

class LeaveManager{
     int Apply(from, to);

     bool Approve(leaveApplicationId, approverId);

     bool Reject(leaveApplicationId, approverId);
}

È quindi possibile utilizzare questo componente aziendale nei vostri controller per eseguire il caso d'uso fornendo i parametri necessari.

Altri suggerimenti

Penso che avere un modello di grasso e magro di controllo è generalmente una buona pratica in qualsiasi lingua e non specificamente .NET MVC. Checkout Questa bella che attraversa uno scenario di esempio mostrando i vantaggi di una modalità di grasso in Ruby on Rails (ma le idee si applicano a qualsiasi lingua).

Per rappresentare i casi d'uso nel codice, penso che un posto molto migliore per loro è in test-casi, piuttosto che il controller.

Spingere logica di business tanto per i vostri modelli e classi di supporto possibile e utilizzare i controller principalmente per gestire le chiamate URL e istanziare i modelli provvisti, il recupero dei dati da loro, e spingendo i dati per i punti di vista. Vista e controllori devono avere il minor numero di decisioni da prendere il più possibile.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top