Domanda

Sto integrando Zend Framework e Dottrina 2, e sto scoprendo il Livello di servizio.

Ora capisco (sbaglio?) Che ho 2 architetture possibili:

  • UN modello, dove le classi contengono logica di dominio, IE Proprietà + getters/setter + metodi complessi
  • UN Modello leggero, dove le classi contengono proprietà + getter/setter e a Servizio livello, contenente la logica del dominio e modificando le classi modello

Quali sono i pro/contro di ciascuno?

Mi sembra strano perdere OOP mettendo la logica del dominio esterno al modello, quindi non capisco perché utilizzare un livello di servizio.

È stato utile?

Soluzione

Cosa ti fa pensare che il tuo livello di servizio sia esterno al tuo modello? Non lo è. In effetti, è una parte centrale del tuo modello, insieme a entità, repository, ecc.

Se stai usando Doctine2, vorrai un livello di servizio. Uno dei motivi è che non vuoi che le tue entità conoscano l'EntityManager (fa male alla testabilità). Un altro è che non vuoi nemmeno che i tuoi controller guidino l'EM (non è il lavoro dei controller conoscere la persistenza).

In genere uso un'architettura in cui il livello di servizio è l'interfaccia del controller al modello. Il livello di servizio espone funzioni che operano su entità (o prendendole come parametri o restituirle o entrambi). La persistenza delle entità è nascosta dal livello di servizio. O la classe di servizio guida l'em e i repository stessi o lo delega ad qualche altro codice che il controller non saprà mai esiste.

Quindi il livello di servizio fornisce e API che i controller possono utilizzare per manipolare i dati aziendali.

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