Entrambe le classi sottostanti implementano la stessa interfaccia e sono infatti destinate a essere intercambiabili l'una per l'altra. Perché il secondo non è indicato come "cliente" nella letteratura?
Ci sono molti riferimenti a livelli di servizio, repository, ecc.:
Quanto è essenziale creare un livello di servizio ?
Questo è un client WebAPI. Vediamo lo stesso modello con il client WCF, ecc.
namespace Application.WebAPIClient
{
public class UsersClient : BaseClient, IUsersService
{
public async Task<int> SaveUser(User user)
{
string json = JsonConvert.SerializeObject(user);
StringContent content = new StringContent(json, System.Text.Encoding.UTF8, "application/json");
HttpResponseMessage msg = await httpClient.PostAsync("users/saveuser", content);
return Convert.ToInt32(await msg.Content.ReadAsStringAsync());
}
}
}
Perché il seguente non è un "client LAN" o qualche altro tipo di client? Spesso chiamato Repository o Service ma mai client anche se racchiude una chiamata a sqlClient proprio come il codice sopra include una chiamata a HttpClient.
namespace Application.Repository
{
public class UsersRepository : BaseService, IUsersService
{
// ...
public async Task<int> SaveUser(User user)
{
db.Users.Add(user);
await db.SaveChangesAsync();
return user.ID;
}
}
}