Principi SOA, incapsulamento e autonomia

2

Stiamo sviluppando più servizi web in C # usando WCF, ma siamo nuovi a farlo.

Quindi, per ciò che abbiamo letto e imparato, questo è il nostro approccio:

  • Abbiamo una libreria di classi che abbiamo chiamato CommonLibrary che ha alcune classi che verranno utilizzate su tutti i nostri servizi (linguaggio, tipo di utente connesso e un oggetto comune che tutti i servizi sono destinati a restituire).
  • Abbiamo un'altra libreria di classi chiamata SecurityLibrary che convalida l'utente che sta utilizzando il metodo.
  • Al momento abbiamo 2 servizi che sono quasi al 90%, entrambi utilizzano CommonLibrary e SecurityLibrary.

Ora le domande:

  • È un approccio sbagliato?
  • Stiamo violando i principi SOA di incapsulamento e autonomia utilizzando la libreria comune / condivisa con ciascuno dei nostri servizi?
  • Una terza persona ci ha detto di copiare tutto il codice di quelle librerie su ciascuno dei nostri servizi in modo da avere un servizio autonomo al 100%, è questo il modo giusto? Penso che sia difficile per la manutenzione e mostra un sacco di duplicati. Qualsiasi aggiornamento effettuato su uno deve essere replicato o unito a quegli altri servizi ...

Grazie per il tuo tempo che ci ha aiutato a chiarire questo.

    
posta user123456 23.01.2015 - 23:51
fonte

1 risposta

2

La mia azienda usa questo approccio (siamo un negozio Java / Maven / Jenkins). Utilizziamo una libreria comune al webclient in 4 o più web client e una libreria comune al webserver in 3 progetti di server web. Solo il vantaggio che un approccio "taglia e incolla" aggiungerebbe a questo è un mistero per me.

Come con l'utilizzo di qualsiasi codice comune, sono essenziali la buona gestione dei rilasci e le pratiche di codifica della versione. Quando aggiorniamo le librerie comuni, i progetti multipli che li utilizzano non vedono la versione aggiornata finché non vengono ricompilati con le loro dipendenze aggiornate per raccogliere la versione più recente. Maven gestisce questo brillantemente, e mi aspetto che C # abbia uno strumento simile.

Quindi, a mio modesto parere, lo stai facendo completamente bene.

    
risposta data 24.01.2015 - 08:58
fonte

Leggi altre domande sui tag