Ho un'applicazione MVC e una web API. L'API Web contiene tutta la logica aziendale e il controller mvc ha solo logica ui.
Voglio creare un proxy web API ma non so se sia una buona idea.
Con il proxy web api Il controller è disaccoppiato dal nome dell'azione nella web api e dai verbi e dto utilizzati nella web api. Con una riga di codice, chiamo la web api e ricevo una risposta. Se voglio chiamare l'azione in molti controller, devo usare solo una riga di codice e se c'è una modifica, cambio solo il proxy.
Senza proxy È più semplice, perché nel controller uso httpclient per chiamare la web api, ma se vuoi chiamare la stessa azione da molti controller mvc, devo replicare il codice.
Il proxy che voglio creare è registrato con autofac nell'asax globale e nel costruttore di controller inietto il proxy.
Per esempio se voglio un elenco di prople, con proxy devo Registrare il PeopleProxy nell'asax globale crea il costruttore del controller mvc con IProxyPeople
private IProxyPeople peopleProxy;
MyController(IProxyPeople peopleProxy){
this.peopleProxy = peopleProxy;
}
Chiama con un codice come
peopleProxy.GetPeople()
Senza proxy
Io chiamo l'apri web direttamente dal controller mvc con un codice come
using (HttpClient client = CreateHttpClient())
{
var peoples;
try
{
HttpResponseMessage result = client.GetAsync("api/People").Result;
peoples = result.Content.ReadAsAsync<List<People>>().Result;
}
catch (Exception exc)
{
CLog.LogError(exc);
}
}
Qualcuno pensa che sia meglio chiamare la web api direttamente dal controller perché è più semplice di creare il proxy e non ci sono overhead con autofac. Dovrebbe essere una buona idea creare un proxy web API?