Domanda

Sto giocando con la costruzione di un BLL per la mia applicazione. Da quello che ho visto / letto, sembra che il BLL dovrebbe essere apolide. Questo non significa che tutti i metodi BLL potrebbero essere statici? O almeno avrei avuto bisogno di solo un'istanza di ogni classe BLL? Il che mi sembra strano per qualche motivo, quindi ho pensato di controllare meglio che non stavo ottenendo la fine sbagliata del bastone prima di approfondire la mia sperimentazione.

Penso anche che questo significhi che gli oggetti BLL non dovrebbero mai contenere dati, perché i dati rappresentano lo stato, quindi per ogni operazione BLL invocata, qualsiasi dati necessario deve essere richiesto (o recuperato dalla cache) e quindi scartati. Sembra giusto?

Grazie.

È stato utile?

Soluzione

In teoria, sì, un BLL apolide può significare che tutti i metodi possono essere statici.

Tuttavia, ci sono alcune considerazioni che potrebbero oscillare verso l'uso di istanze di oggetti BLL anziché statici.

  1. I metodi statici introducono un accoppiamento stretto tra le classi e impediscono di utilizzare interfacce EG per accoppiare liberamente le dipendenze. L'uso di interfacce migliora la testabilità del BLL poiché ora può essere derisa quando si scrive i test dell'unità per il livello di servizio. Se i tuoi metodi BLL sono statici, in genere non sarai in grado di farlo senza "soluzioni alternative" (ad esempio, avresti bisogno TypeMock o Microsoft Fakes in un ambiente .net).

  2. Su un metodo BLL complesso (ad es. Logica di transazione di grandi dimensioni), potresti voler rifactare ciascuna delle regole aziendali in diversi metodi discreti e, con l'output, eventualmente accumulare tutte le violazioni di convalida e regole in un unico risultato aggregato contenente tutti i Violazioni. In questo caso, può essere ingombrante che sposta l'entità / entità per essere convalidata e accumulare le violazioni delle regole, ed eleggere invece per la conservazione a stato di questi su un'istanza di classe. Una classe base o generica per la tua istanza BLL può aiutare qui.

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