Come strutturare un progetto che supporta più versioni di un servizio?

3

Spero di avere alcuni suggerimenti sulla creazione di un progetto (ASP.NET MVC, ma suppongo che non abbia molta importanza) rispetto alle versioni multiple di un servizio (in questo caso, in realtà più set di servizi WCF).

Al momento, l'app Web utilizza solo alcuni dei servizi, ma l'obiettivo finale sarebbe utilizzare le funzionalità di tutti i servizi. Il codice utilizzato per implementare una funzione di servizio sarebbe probabilmente molto simile tra le versioni nella maggior parte dei casi (ma, ovviamente, tutto varia).

Quindi, come struttureresti un progetto come questo?

Separare i rami di controllo del codice sorgente per ciascuna versione diversa? Un po 'come dimenticare perché non credo che la fusione tra filiali debba essere qualcosa che faremo molto spesso.

Diversi file di progetto / soluzione nello stesso ramo? Potrebbe collegare facilmente gli stessi progetti condivisi

Costruisci un qualche tipo di livello di astrazione sui servizi, in modo che, indipendentemente dal servizio utilizzato, sia lo stesso per l'applicazione Web?

    
posta Nick Canzoneri 03.02.2011 - 22:50
fonte

2 risposte

7

Quindi utilizzerei il Pattern dell'adapter qui . Sottragga i servizi a un'interfaccia che soddisfi le esigenze della tua app. E attuare i dettagli di tale astrazione sul servizio. Direi che questo è un approccio utile anche se stai utilizzando un servizio perché aiuta a non divulgare i dettagli del servizio sottostante nella tua applicazione.

Ad esempio, se voglio un'applicazione per archiviare un file ma non mi interessa dove sia, creerei un'interfaccia IFileStorage in questo modo.

public interface IFileStorage
{
  void StoreFile(Stream fileStream);
}

Quindi, potrei fornire un adattatore DropBoxFileStorage e un adattatore LocalFileStorage. O potrebbe essere chiamato in base alla configurazione o anche alla selezione dell'utente.

    
risposta data 03.02.2011 - 23:11
fonte
0

Vorrei andare alla via dell'astrazione. In questo modo è infinitamente espandibile con pochissima gestione. Qualsiasi altra cosa come la ramificazione del codice sorgente comporta un sacco di lavoro che può diventare fastidioso.

Questa è più di una regola generale che altro

    
risposta data 03.02.2011 - 22:58
fonte

Leggi altre domande sui tag