目前,我的网站上有一个存储库模式,其中包含规范模式。我可以通过几行代码从.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();
}
现在我的问题是,我的网站上需要一个业务层吗?如果您的回答是肯定的,为什么?
目前,由于规范模式的原因,我似乎不需要页面和存储库之间的业务层。
感谢您的意见。
最佳答案
答案取决于该应用程序的大小,将要变得多大以及它可能会改变多少。
任何层的唯一真实点就是隔离功能。在小型应用程序中,您可以很高兴地在整个UI代码中散布对存储库的调用。
但是,如果您随后更改存储库的结构方式又该怎么办?您需要查找并更改所有这些引用。
但是,如果您在业务层中编写了所有存储库访问代码,从而向UI公开了更高级别的方法,那么此时您要做的工作要少得多。
可能有特定的安全考虑。例如,如果您的UI无权访问存储库,则可以将所有安全检查集中在业务层的公共API上。如果您有一个200页的Web应用程序,可以从任何地方访问该存储库-当然它可以是安全的-但是您能确定什么呢?
然后进行单元测试……基本上没有正确的方法-但是,如果您的应用程序很小,那么您就可以了……如果您的应用程序很大,则您可能会后悔这一设计。