2013-08-15 9 views
5

ho sviluppato un'applicazione con i seguenti livelli: livello di accessodove gestire DTO <-> attività di conversione oggetto

  • Banca dati della fluente NHibernate
  • Le regole di business
  • strato
  • attività (più astratto di regole di business e utilizzare alcune regole aziendali )
  • livello di servizio basato su WCF che invia alcuni DTO al mondo esterno e riceve DTO.

così quando alcuni DTO sono tornati, posso associare il DTO agli oggetti di business nel livello di servizio e ho fatto in modo che la mia applicazione lavorasse con gli oggetti di business. in tal caso, quando viene eseguita una funzione nei livelli inferiori, non sa nulla del vecchio oggetto, quindi diventa difficile da gestire e verificare il cambiamento di stato e anche l'esplosione di classe per gli adattatori DTO. d'altra parte se dto è mappato all'oggetto business sui livelli più alti, quando è venuto giù, i livelli inferiori non sapevano nulla del servizio chiamato, quindi non possono non capire come questo dto deve cambiare gli oggetti di business (1 DTO potrebbe essere utilizzato da diversi servizi in diversi modi)

quindi la domanda è qual è la vera soluzione ??

+0

Puoi mostrare un po 'di codice? Ad esempio: come si chiama uno dei metodi di servizio WCF? Qual è il nome del tuo metodo/classe corrispondente nel tuo livello aziendale? Qual è un esempio di una funzione negli strati inferiori? – Halvard

risposta

2

Da vostre specifiche, Sono un po 'supponendo che puntano per un'implementazione basata DDD

In primo luogo, alcune ipotesi per la mappatura questa terminologia a più comuni: Presumo che il vostro livello di "regole di business" è solo usato dal livello di attività, e quindi può essere considerato come parte del livello di dominio.

Si parla di oggetti aziendali. Presumo quindi che tu abbia un livello di dominio. Questo potrebbe essere il tuo "livello di attività". Questo dovrebbe essere il livello che sa come aggiornare gli oggetti e restituirli al livello di servizio.

Il livello di servizio (o "livello applicazione" in termini DDD) deve mappare i DTO e richiamare i servizi di dominio. MS ha uno schema decente here. Ma in fondo il flusso di lavoro dovrebbe essere:

  1. Invia DTO al servizio strato
  2. livello di servizio invoca adattatori DTO per creare oggetti di dominio/enti di DTOs.
  3. livello di servizio invoca servizi di dominio per eseguire la logica di business (invoca regole)
  4. Servizi di dominio oggetti di dominio di aggiornamento a seguito di regole di business
  5. strato
  6. Persistenza è invocato da servizi di dominio come dominio necessari
  7. servizi di dominio restituiscono aggiornati oggetti a livello di servizio
  8. servizio dominio mappe strato di oggetti di nuovo a DTO e li restituisce

ci sono naturalmente molte variazioni su questo tema, ma questo dovrebbe essere voi r punto di partenza.

Problemi correlati