我有一个关于 n 层架构的问题。在问这个问题之前,我想了很久很久,因为这里已经有很多类似的问题了……但是,在看了一天半并阅读了这些其他答案之后,我仍然不确定。各种看似相似的术语和不同的方法让我感到困惑。
如果我在不同的类库中有一个 BLL 和一个 DAL,那么在 BLL 和 DAL 之间进行通信的一种方法是使用一个接口,有点像在 BLL 和 DAL 都引用的另一个单独的 DLL 中定义的 DTO。BLL 中的域模型实体将实现此接口,DAL 中的任何 ORM 生成的对象也将实现。为了保存我的业务实体,我可以将它们传递给 DAL,DAL 会很好地接受它们,因为它们实现了共享接口。我还可以将对象传递回实现此接口的 BLL。这似乎是合理的,因为 BLL 和 DAL 只需要了解基本接口,而不是彼此的具体实现。
我的问题是在另一边创建对象的最佳方法是什么?例如,如果我在 BLL 中有一个实现 IPerson 的 Person 对象,以及一个 PersonDataObject 或 DLL 中也实现 IPerson 的任何东西,我将 Person 传递给 DAL 中的一个方法,该方法采用 IPerson 的参数,然后在 DAL 中我d 必须重建 PersonDataObject 才能持久化。这甚至是最好的方法吗?
抱歉,我可能没有很好地解释这一点,因为我很困惑。非常感谢虚拟答案的最佳实践。