È buona pratica incapsulare la comunicazione con il servizio web?

1

Sto lavorando su un'applicazione ASP.NET necessaria per comunicare con un servizio web Flask.

Il mio pensiero iniziale era quello di includere la comunicazione con il servizio web direttamente nel file aspx, simile allo scenario 1. Tuttavia, pensavo che Scenario 2 potesse essere una soluzione più pulita in quanto posso nascondere le proprietà come url e dettagli del implementazione all'interno di una classe aggiuntiva.

La mia domanda è, introducendo un'altra classe per gestire la comunicazione diretta con il servizio web, e quindi usando quell'oggetto all'interno del modulo web, sono troppo complicato o è una decisione progettuale fattibile?

Scenario 1:

private sealed string url = "someUrl";

public partial class AspWebPage 
{
    private string GetAllData() 
    { 
        string jsonResponse = "";
        using(var client = new WebClient())
        {
            // some code to get data from web service
        }
        return jsonResponse;
    }
}

Scenario 2:

public class MiddleManClass
{
    private sealed string url = "someUrl";

    public string GetAllData(string key) { // code to get data }

    public string SubmitData(SomeType data) { // code to submit data }

}

public partial class AspWebPage 
{

    protected void Page_Load(object sender, EventArgs e)
    {
       ...
       var data = middleManClass.GetAllData(someKey);
       ...
    }

    protected void btnSave_Click(object sender, EventArgs e)
    {
        ...
        middleManClass.submitData(someData);
        ...
    }

}
    
posta Joe Dawtry 12.05.2016 - 15:09
fonte

1 risposta

2

Bene,

Pensaci in questo modo: "Cosa succederà se avrò bisogno di usare il mio WS da qualche altra parte?"

Dalla tua prima implementazione posso già dire che potresti dover fare un po 'di copia / incolla con il passare del tempo, e non lo vuoi (DRY Principle). Un altro vantaggio per separare la comunicazione è il test e l'aggiornamento. Lavorare con i partner non è mai un compito facile e potresti incontrare diversi problemi. Sarebbe bello avere un solo posto per modificare il codice e applicare la correzione ovunque.

E sui test, se dichiari un'interfaccia (modo di parlare OOP) durante i test, puoi cambiare l'implementazione in questo modo puoi testare il codice che chiama il tuo servizio e non il servizio stesso.

Quindi 2a implementazione per la vittoria.

    
risposta data 12.05.2016 - 16:35
fonte

Leggi altre domande sui tag