Considerazioni sul disaccoppiamento e il refactoring della logica aziendale su un'API REST

5

Abbiamo una soluzione .NET composta da un sito Web MVC e una serie di librerie per la logica aziendale e dei dati. In passato il sito Web era l'unico modo per interagire con la nostra logica aziendale, ma ci stiamo ritrovando a dover condividere questa logica tra vari sistemi e abbiamo deciso di esporlo tramite un'API REST.

Il tipico flusso di informazioni tra l'architettura corrente è:

UI -> Model (Controller) -> Model (Business Logic) -> Entity (Data Logic) -> DB

Se dovessi spostare la libreria di business logic in un'API REST, ovviamente ho bisogno di aggiornare il sito MVC per consumarlo, così continuiamo come al solito.

Devo lasciare le firme dei metodi esistenti sulla logica di business così come sono, con gli oggetti del modello come parametri, o dovrei prendere in considerazione il refactoring di questo?

public List<ClaimSearchEntity> Search(ClaimSearchRequest request)

Ecco qualcosa per dare un'idea delle dipendenze tra i livelli:

MVC.App                   -> Application.Logic

Application.Logic         -> Application.BusinessLogic

Application.BusinessLogic -> Application.Data
                          -> Application.Models

Application.Data          -> Application.DataLogic
                          -> Application.Entities
                          -> Application.Mappings

Qualcos'altro che ho pensato potrebbe essere utile a questo proposito è la restituzione dei metadati per le richieste API esponendo i campi del modello come JSON. Qualcosa come JIRA fa.

Ho bisogno di trovare un equilibrio tra l'esecuzione rapida del lavoro e il suo corretto svolgimento. Hai qualche suggerimento o alternativa per il mio approccio?

    
posta Daniel Minnaar 25.05.2016 - 09:52
fonte

1 risposta

3

La logica aziendale dovrebbe rimanere intatta. L'API Rest è una vista. L'interfaccia utente è una vista. Al massimo il controller dovrebbe cambiare per accogliere questo cambiamento. In un design ideale il controller non avrebbe alcuna conoscenza di alcuna vista e non cambierebbe affatto.

Piuttosto che mostrare il flusso di informazioni sarebbe stato utile vedere le direzioni delle dipendenze di questi componenti. Tutti i nomi mi dicono quali sono le responsabilità. Non come potrebbero essere presi in giro.

    
risposta data 25.05.2016 - 11:16
fonte

Leggi altre domande sui tag