2

目前我的网站有一个存储库模式,其中包含规范模式。只需几行代码,我就可以从我的 .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();
    }

现在我的问题是,我的网站是否需要业务层?如果您的回答是肯定的,为什么?目前看来,由于规范模式,我不需要页面和存储库之间的业务层。

感谢您的意见。

4

2 回答 2

3

答案取决于这个应用程序有多大,它将获得多大,以及它可能会改变多少。

任何层的唯一真正意义是隔离功能。在一个小型应用程序中,您可以愉快地在整个 UI 代码中调用存储库。

但是,如果您随后更改存储库的结构方式怎么办?您需要找到并更改所有这些参考。

但是,如果您将所有存储库访问代码编写在向 UI 公开更高级别方法的业务层中,那么此时您要做的工作就会少得多。

可能有特定的安全考虑。例如,如果您的 UI 无权访问存储库,那么您可以将所有安全检查集中在业务层的公共 API 上。如果您有一个 200 页的 Web 应用程序,可以从任何地方访问存储库 - 当然它可能是安全的 - 但您能确定吗?

然后是单元测试......基本上没有正确的方法 - 但如果你的应用程序很小,你很好......如果你的应用程序很大,你可能会在某个时候后悔这个设计。

于 2011-08-12T11:38:59.080 回答
1

从您的代码看来,您不需要业务层。看起来这一切都是关于使用简单规范或数据插入来获取数据。当您对这些对象有一些业务规则时,将需要 BL,例如:删除对象应在删除对象之前检查某些特定条件等

于 2011-08-12T11:19:29.603 回答