Come implementare due diversi servizi Web che eseguono la stessa logica aziendale?

5

Stiamo sviluppando un'API HTTP ReSTful con Servicestack (.NET).

Alcuni dei client API, che hanno un sottoinsieme delle azioni, richiedono un servizio che possa essere facilmente aggiunto con tutte le entità, come con "Aggiungi riferimento servizio" con Visual Studio.

Stiamo pensando di creare un semplice servizio web asmx, ma i nostri pensieri su come farlo si dividono in due:

  1. asmx WS chiamerà il servizio ServiceStack con un client HTTP.
  2. Asmx WS farà riferimento allo stesso BL a cui fa riferimento il servizio principale e lo chiamerà direttamente.

Qual è il modo preferito?

C'è qualche altro modo che consiglieresti?

    
posta Mithir 08.03.2013 - 16:30
fonte

2 risposte

2

Se la tua API ha un livello di visualizzazione / modifica dei modelli utente, puoi metterli in un assembly separato e fornire al tuo client un semplice driver / bridge basato su .NET che utilizza gli stessi modelli e invoca la tua API per loro. In questo modo fornisci loro ciò che genera il codice di associazione asmx per te.

    
risposta data 09.03.2013 - 00:30
fonte
1

Considerare la possibilità di scrivere adattatori per l'input nella logica dell'applicazione. L'applicazione non deve conoscere realmente i client che accedono alla logica di business. Invece si scrive codice che adatta i richiami del client (in questo caso i servizi Web) nella propria applicazione in ciò di cui ha bisogno. Questo è un principio di base nel modello di porte e adattatori di Allistair Cockburn ( "Porte e adattatori" o "Modello esagonale" )

L'idea alla base di questo principio è limitare l'entanglement tra la business logic e l'interazione con entità esterne.

Il classico Design Patterns ha una descrizione del modello generico "Adapters". Le porte e gli adattatori utilizzano questo modello.

    
risposta data 08.03.2013 - 16:57
fonte

Leggi altre domande sui tag