Ho un'applicazione ASP.NET MVC con il seguente controller e azione:
public class AccountsController
{
public ActionResult Index()
{
var accounts = AccountsManager.GetAccounts();
return View(accounts);
}
}
e AccountsManager
classe come questa:
public class AccountsManager
{
private static ILogger Logger ...
private static ICache Cache ...
private static IAccountsService Service ...
private static IMapper ViewModelMapper ...
private const string CacheKey = "Accounts";
public static AccountViewModel[] LoadAccounts()
{
try
{
if (Redis.TryGet(CacheKey, out var cached))
return cached;
var accounts = Service.GetAccounts();
var vms = ViewModelMapper.Map<AccountViewModel[]>(accounts);
Redis.Set(CacheKey, vms);
return vms;
}
catch (Exception ex)
{
Logger.Error(ex);
throw;
}
}
}
Quindi, questa classe AccountsManager
rimuove la duplicazione del codice e incapsula la seguente logica:
- Comunicazione con back-end
- Risoluzione delle dipendenze
- Caching
- Accesso
- Gestione degli errori
- ViewModel mapping
- Richiedi riprovare, servizio auth ecc.
Tuttavia, chiamare queste classi XXXManager
mi fa sentire a disagio poiché questa parola Manager
è ambigua.
Come viene solitamente chiamato questo livello?