Uso de “lojas” em uma aplicação web
-
21-09-2019 - |
Pergunta
Vejo um uso intenso de objetos "store" no aplicativo da web em que estou trabalhando.Existe um nome para esse padrão e você diria que esses tipos estão no BLL ou DAL?
Esses armazenamentos contêm fragmentos do que eu consideraria um tipo DAL clássico, associado a um único tipo.
Por exemplo, temos um TabStore contendo métodos para persistência e recuperação de Tabs.Dentro de cada método no TabStore existe um código para invocar a consulta NHibernate apropriada.
Quais são as armadilhas (se houver) de trabalhar com esse padrão?É realmente uma simples tentativa de separar o que antes poderia ter sido um tipo Dal monolítico em tipos menores e mais gerenciáveis?
Método de exemplo:
public IList<Tab> GetAllTabInstancesForUserId(Guid userId)
{
IList<Tab> tabInstances =
UoW.Session.CreateQuery("from Tab t where t.UserId=:userId order by t.TabOrder")
.SetGuid("userId", userId)
.SetCacheable(true)
.List<Tab>();
return tabInstances;
}
Solução
Pode ser o que é mais comumente conhecido como Repositório.
O Repositório abstrato pertence ao Modelo de Domínio, mas deve ser implementado por classes concretas em um separado Componente de acesso a dados.
Outras dicas
Se bem entendi a pergunta, "lojas" estão mais relacionadas ao DAL do que ao BLL, já que deveria haver pouca lógica nelas - afinal o papel delas é apenas "armazenar".
Mais alguns detalhes seriam definitivamente úteis, incluindo trechos de código onde a 'loja' é usada ...
Mas com base no que você tem em sua pergunta, parece que os desenvolvedores usaram o termo 'loja' em vez de 'Repositório', o que implica o Padrão de repositório (que estão relacionados à sua camada de acesso a dados).
Após sua atualização... definitivamente parece que o que os desenvolvedores originalmente chamaram de 'loja' é um 'repositório'.