Sto progettando il back-end di un servizio web SOAP e ho una domanda su come sto pensando di farlo.
Ho intenzione di andare con un semplice design a strati che consiste in 3 livelli separati.
Layer 1 -> Layer 2 -> Layer 3
Livello 1: implementerà l'interfaccia scheletro SOAP, quindi questo sarà il punto di ingresso principale della mia applicazione. Questo livello estrarrà i dati dalla richiesta SOAP e li passerà al livello della business logic come oggetto business. Restituirà gli oggetti business dal livello della business logic con cui popolerà una risposta SOAP.
Livello 2: Livello della logica aziendale che implementa la logica aziendale dietro il servizio web. Verranno passati i dati dal Livello 1 e interagiranno con il Livello 3, il livello DAO.
Livello 3: livello DAO che preformerà le operazioni CRUD sul mio DB.
Con la compilazione di oggetti di risposta SOAP nel mio codice, l'implementazione potrebbe essere un po 'caotica in Layer 1, quindi ho trovato le seguenti 3 opzioni.
Opzione 1: tre livelli sono sufficienti, altri livelli sarebbero eccessivi. Gli oggetti SOAP saranno sempre disordinati, passaci sopra.
Opzione 2: crea un livello aggiuntivo tra i livelli 1 e 2. Questo livello prende i dati dalla richiesta SOAP, popola un oggetto business che poi passerà al livello della logica aziendale. Ciò manterrebbe i metodi in Layer 1 puliti e in ordine. Sarebbe simile a questo:
Layer 1 -> SOAP Request -> Layer 1.A -> Business Object -> Layer 2
Layer 1 <- SOAP Response <- Layer 1.A <- Business Object <- Layer 2
Opzione 3: non creare altri livelli. Basta creare un oggetto utility con un metodo che accetta una richiesta SOAP e restituisce un oggetto business. Potrei quindi passare l'oggetto business al Layer 2. Lo stesso oggetto utility potrebbe quindi essere usato nel Layer 2 per passare una risposta SOAP al Layer 1. O questo approccio sfoca le linee e rende il mio design meno modulare?