【发布时间】:2016-06-28 16:23:48
【问题描述】:
我正在关注分层架构的 MVC 项目。 在网上阅读和研究之后,我发现拥有单独的层是最佳方法。 所以,我的图层是:
- 表示层有:控制器、视图
- 业务层:单独的类库项目(包括域模型(表示表实体)、业务逻辑服务、单独的 ViewModel 文件夹)
- 数据访问层:调用数据库(SQL 语句、连接)
现在问题来了:
对数据访问层的 BLL 调用:
public PartnerOperation(IDataAccess dataRepository)
{
_dataAccess = dataRepository;
}
public void InsertRequest(PartnerRequestModel partnerRequestModel)
{
_dataAccess.InsertIntoDB(partnerRequestModel); //Domain object passed to DLL method
}
现在,我的 BLL 依赖于依赖于 BLL 的数据访问层,因为域对象位于 BLL 内部。因此,两者都相互引用。
我苦苦寻找了几个星期,但找不到出路。
我已经经历过了 Business Logic Layer and Data Access layer: circular dependency 但它并没有完全解决我的问题。
一些网站支持分层架构,一些声称洋葱方法更好。 例如:this article 声称整个方法(控制器 -> BLL ->DLL)不是最优的。
- 如何克服循环依赖?
- 我构建此 Web 应用程序的方法有效吗?
【问题讨论】:
标签: model-view-controller architecture domain-driven-design repository-pattern business-logic-layer