目前我的网站上有一个存储库模式,其中包含规范模式。我只需几行代码即可从我的.aspx页面中获取数据,例如:
private IRepository repository;
protected void Page_Load(object sender, EventArgs e)
{
repository = new GenericRepository();
Specification<Book> specification = new Specification<Book>(b => b.Year == 1988);
lvBooks.DataSource = repository.GetAll<Book>(specification);
lvBooks.DataBind();
}
现在我的问题是,我的网站是否需要业务层?如果您的答案是肯定的,为什么? 目前看来,由于规范模式,我不需要在页面和存储库之间的业务层。
感谢您的意见。
答案 0 :(得分:3)
答案取决于这个应用程序有多大,它有多大,以及它可能会有多大变化。
任何层的唯一真正意义就是隔离功能。在一个小应用程序中,您可以愉快地在整个UI代码中调用存储库。
但是,如果您随后以存储库结构的方式更改某些内容会怎么样?您需要查找并更改所有这些参考文献。
但是,如果您在业务层中编写了所有存储库访问代码,并向UI公开了更高级别的方法,那么此时您的工作要少得多。
可能存在特定的安全考虑因素。例如,如果您的UI无权访问存储库,那么您可以将所有安全检查集中在业务层的公共API上。如果你有一个200页的网络应用程序,可以从任何地方访问存储库 - 当然它可能是安全的 - 但你有多确定?
然后是单元测试......基本上没有正确的方法 - 但是如果你的应用程序很小你很好......如果你的应用程序很大,你可能会在某个时候后悔这个设计
答案 1 :(得分:1)
从您的代码中看来,您似乎不需要业务层。因为看起来所有关于使用简单规范或数据插入的数据获取。当你有关于这些对象的一些业务规则时,BL将是必需的,例如:删除对象应该在删除对象之前检查某些特定条件等