Domanda

Sto iniziando un nuovo progetto MVC in cui ci sono alcune regole peculiari e un po 'di stranezza, e mi ha lasciato perplesso. In particolare, ho accesso a un database contenente tutti i miei dati, ma deve essere gestito interamente tramite un servizio Web esterno. Non chiedermi perché, non capisco i motivi. È così.

Quindi il CRUD verrà gestito tramite questa API. Sto progettando di creare un livello di servizio che includa tutte le chiamate, ma ho problemi a avvolgere la testa attorno al modello ... Per creare oggetti di dominio basati su modello (clienti, ordini, ecc.) dovrei:

  1. Creali tutti manualmente
  2. Crea un database fittizio e punta un ORM su di esso
  3. Punta un ORM sul database esistente ma ignora la persistenza dell'ORM al posto dell'API.

Mi sento come se avessi tutte le informazioni di cui ho bisogno per crearlo, ma mi sto avvicinando all'API. Qualsiasi suggerimento o consiglio sarebbe molto apprezzato.

È stato utile?

Soluzione

A seconda della scala di ciò che si sta facendo, l'opzione 3 è pericolosa poiché si presume che il modello di database sia lo stesso di quello esposto dal servizio esterno. Le opzioni 1 e 2 non sono molto diverse l'una dall'altra - in entrambi i casi dovrai decidere quali saranno i tuoi oggetti, proprietà e comportamenti - si riduce a se ti senti più a tuo agio a farlo in classe o tabelle di database.

La cosa fondamentale è assicurarsi che le chiamate di servizio esterne siano nascoste dietro una sorta di wrapper. Personalmente avrei quindi messo un repository sopra a quello per gestire le query sul wrapper di servizio esterno e restituire oggetti di dominio.

Altri suggerimenti

In generale, gli ORM non sono noti per la loro capacità di generare classi di modelli di dominio pulite. Gli ORM sono noti per la creazione di livelli di dati, che in questo caso non sembrano essere necessari.

Probabilmente potresti usare uno strumento di generazione del codice come T4 per generare un primo passaggio nelle classi del tuo modello di dominio, basato sul servizio web o sul database, se ciò ti fa risparmiare tempo. Altrimenti, probabilmente dovresti semplicemente creare manualmente gli oggetti del dominio. Anche se il codice genera un primo passaggio sugli oggetti del tuo dominio, è improbabile che ci sia una mappatura 1-1 chiara agli oggetti del tuo dominio dal database o dal servizio web, quindi dovrai probabilmente dedicare molto tempo alla modifica manuale del dominio generato dal codice classi comunque.

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