Rompere l'applicazione ASP .NET MVC in microservizi

7

Ho una grande applicazione ASP .NET MVC composta da diversi widget. Presentano tutti una sorta di dati relativi ai mercati azionari, ma in realtà sono piuttosto separati l'uno dall'altro. Mi piacerebbe rompere la grande app monolitica in diversi servizi più piccoli che dovrebbero essere più facili da mantenere.

Sarebbe piuttosto semplice se avessi solo il codice lato server scritto in C #, ma in realtà ho anche un bel po 'di componenti javascript e anche alcuni stili e altre risorse. Non so dove dovrebbero essere messi. Dal punto di vista della separazione, se alcuni file javascript sono utilizzati solo da un widget specifico, dovrebbero far parte del suo servizio. D'altra parte, non so come integrare in seguito tutti i widget e le loro risorse, specialmente quando potrebbero esserci alcuni script comuni usati da tutti i componenti.

Finora ho avuto due idee, nessuna delle quali sembra ideale:

  1. Separa solo il codice lato server e lascia tutti i componenti lato client in un progetto comune. L'integrazione, la minimizzazione e la gestione di Js sarebbero più semplici, ma gli sviluppatori avrebbero comunque bisogno di lavorare su due diversi progetti durante l'aggiornamento di un servizio specifico.
  2. Crea pacchetti nuget per ogni microservizio con codice lato server e client. Che dire quindi degli script comuni e dei file che dipendono da essi? Se avessi apportato una modifica sostanziale all'infrastruttura comune, avrei dovuto aggiornare manualmente tutto il codice dipendente. Sarebbe molto più difficile aggiornare i file quando tutti risiedono nello stesso progetto.

Ci sono soluzioni migliori?

    
posta syntax_error 08.02.2015 - 09:30
fonte

2 risposte

5

Vorrei separare solo il codice lato server e lasciare tutti i componenti lato client in un progetto comune. Non sono infastidito dalla tua affermazione secondo cui gli utenti dovrebbero lavorare su più progetti; ogni soluzione di Visual Studio su cui abbia mai lavorato ha più progetti e alcuni ne hanno molti.

L'unica volta che avresti creato i pacchetti Nuget sarebbe se stai usando i microservizi in più soluzioni.

    
risposta data 08.02.2015 - 20:16
fonte
2

Potresti considerare di unire la logica dell'interfaccia utente con la logica lato server e segmentare i risultati in contesti limitati che incapsulano i microservizi. Ecco un tutorial per iniziare .

Ecco il riepilogo:

La logica dell'interfaccia utente dovrebbe concentrarsi sul rendering, ma non sulla gestione, dei dati. La migrazione della logica dall'interfaccia utente al server consente di raggruppare l'intera serie di funzioni all'interno dello stesso livello di applicazione. Logica delle feature core astratta e sufficientemente coprente in termini di unit test. Ciò dovrebbe generare un insieme ben definito di API che i tuoi microservizi possono sfruttare. Quindi dividere il set di funzionalità in Microservices.

Crea un modello di Microservice riutilizzabile. Questa dovrebbe essere una struttura di piastre di caldaia che consente la rapida implementazione di Microservices. La logica delle funzionalità principali dovrebbe essere ospitata nei modelli di Microservice.

Implementa il concetto di pool code per garantire un recapito affidabile dei messaggi. Questo è un concetto più avanzato per garantire una consegna affidabile dei messaggi. Ricorda: probabilmente utilizzerai un bus di servizio per interfacciare i tuoi Microservices.

    
risposta data 01.09.2015 - 14:53
fonte

Leggi altre domande sui tag