我正在构建一个具有表示层 (PL)、业务逻辑层 (BLL) 和数据访问层 (DAL) 的 3 层架构。
传统的 3 层架构逻辑规定 BLL 应充当 PL 和 DAL 之间的中介。PL 甚至不应该知道存在数据库,而 DAL 不应该知道存在 BLL 或 PL。
上述实施将在 3 个不同的物理项目之间创建以下依赖关系,如下所示
- PL 项目 -> BLL DLL 参考
- BLL 项目 -> DAL DLL 参考
- DAL 项目 -> 无参考
然而,通过在 BLL 中定义接口以供 DAL 实现并通过构造函数注入使用 DI,在 BLL 和 DAL 之间应用 IOC 的概念将改变依赖关系,如下所示
- PL 项目 -> BLL DLL 参考,DAL DLL 参考(用于具体类型的 DI 到 BLL 对象的构造函数)
- BLL 项目 -> 无参考
- DAL 项目 -> BLL DLL 参考(用于实现 BLL 接口)
那么国际奥委会和传统的3层冲突吗?
理想情况下,我希望实现以下目标,同时通过 DI 维护我的 IOC。
- PL 项目 -> BLL DLL 参考
- BLL 项目 -> 无参考
- DAL 项目 -> BLL DLL 参考
你怎么做到这一点 ?