SOA: rendere ogni livello di un servizio impilare un pacchetto (NuGet ecc.)?

0

Dire che ho un servizio che ha la seguente gerarchia:

  • Regolatore
  • Business Logic
  • Adattatore dati

Tutti questi costituiscono un servizio che presenta un'API HTTP che può essere utilizzata da altri servizi. Insieme, questi livelli formano una parte funzionale di un'applicazione.

Ha senso raggruppare ciascuno di questi livelli insieme come 1 unità con versione? O per pacchettizzare ogni individuo con la sua versione e poi utilizzarlo come dipendenza del pacchetto usando NuGet ad esempio. Il controller utilizza il pacchetto di business logic che a sua volta consuma il pacchetto dell'adattatore dati.

Ci sarebbero dei benefici rispetto agli altri?

In sostanza, quello che sto chiedendo è se i pacchetti vengano lasciati per il codice condiviso su molti servizi / applicazioni o se anche le viscere di un servizio usano i pacchetti per gestire le sue dipendenze interne nel proprio stack?

    
posta Mike L. 12.02.2015 - 02:08
fonte

2 risposte

1

Dipende dalla tua applicazione.

Ad esempio, ho un prodotto che comprende un'installazione server che comprende diversi servizi e un'applicazione client. Noi li impacchettiamo come 2 pezzi - mentre ciascuno dei componenti lato server può essere installato individualmente, nessuno lo fa mai (o lo farà) quindi ha senso installarli come un singolo oggetto. Questo ci consente di ridurre lo sforzo richiesto per far funzionare insieme diverse versioni di questi pezzi.

Tuttavia, a nessuno piace aggiornare i client in quanto richiede a un ingegnere di visitare alcuni siti remoti, quindi li installiamo separatamente e assicuriamo che i vecchi client possano ancora parlare con il server aggiornato.

Quindi abbiamo una mezza dozzina di componenti, ma questi finiscono con 2 installatori. Tutto dipende dal tuo sistema e dalla tua gestione delle dipendenze tra di loro. Dipende anche dal tuo cliente - se questi pacchetti vengono creati per gli sviluppatori, allora forse avrà senso impacchettarli singolarmente per consentire l'acquisizione più rapida delle modifiche.

    
risposta data 13.04.2015 - 09:38
fonte
0

Se disponi di altre "UI" (il servizio web può essere pensato come la parte ui della tua applicazione), allora potrebbe essere logico impacchettare BL e DAL come un unico pacchetto e avere il tuo servizio (e altre interfacce utente) consumarlo. Altrimenti è più facile trattare tutto come una singola unità.

Potresti anche considerare se distribuirai nuove versioni del servizio lasciando anche quelle in esecuzione come applicazioni separate. In questo caso hai più UI (ciascuna installazione di versione) ma potresti doverle distribuire con versioni successive di BL e DAL (se ad esempio sono presenti modifiche db).

    
risposta data 12.02.2015 - 02:55
fonte

Leggi altre domande sui tag