用户界面引用DataAccess中的存储库,这是不好的做法吗?我应该在BusinessLogic中创建传递方法,以便UserInterface不与DA程序集耦合吗?
即使在BusinessLogic方法什么都不做但只调用相关的Repository方法的情况下呢?
还是我是挂件?
答案 0 :(得分:2)
而不是将UI与存储库进行对话,而不是根据抽象来考虑实现。在这种情况下,UI取决于IRepository
。 IRepository
的实施方式并不重要。
并将这些全部放入单独的程序集中是过度的。只需使用命名空间来隔离代码。它将更容易维护。
答案 1 :(得分:1)
如果您正在尝试进行域驱动设计,那么在您考虑在UI中使用它之前,请先了解存储库的角色。这里非常好的解释http://devlicio.us/blogs/casey/archive/2009/02/20/ddd-the-repository-pattern.aspx
答案 2 :(得分:1)
我觉得你错过了一层。实体层或数据传输层。
这绝对不是一个很好的做法,用户界面必须知道你的DAL,这就是你拥有业务层的原因。
我认为你应该以经典的方式做到这一点 - 使用数据传输对象,BL-DAL和向后应该是相同的
始终在这些图层之间使用DTO,将对象从UI传输到BL,从BL传输到DAL,然后向后传输。
答案 3 :(得分:0)
我认为分层结构的主要原因是“分离关注”。 SoC基本上提供松散耦合。所以在DAL中引用UI并不是件好事。
另一方面,UI应该处理用户交互(而不是直接从DAL调用)。 BL应该负责验证并调用DAL方法。 DAL是最后一步,它可以根据SQL方面验证数据,然后处理SQL语句。