2

假设您有三层(带有命名空间):

  • 用户界面 ( App.UI) - 调用业务层流程并使用对象进行通信
  • 业务层 ( App.Core) - 使用对象编排流程并使用 DAL 层
  • DAL ( App.Data) - 直接操作存储和持久化对象

假设您有 User 表,因此反映在您的 DAL 层中,App.Data.User并且可能也反映在App.Data.Users.

您的 UI 中有一个显示应用程序用户的视图。

要真正拥有一个分离(分层)的应用程序,您还应该拥有App.Core.User并且App.Core.Users可能必须手动创建。

最好的解决方案(在我看来)当然是:应该有第四层业务对象(App.Objects,其中包含类App.Objects.UserApp.Objects.Users. 这些 POCO 将在所有层之间共享。业务层只允许使用 DAL,UI 只允许使用 BL,但它们都将App.Objects用于公共对象模型。

Asp.net MVC 模板暗示直接在视图上使用 DAL 对象,LINQ 2 实体本身也不创建任何 POCO...

那么当使用任何自动代码生成时,我们应该使用 DAL 对象还是手动硬编码我们共享的 POCO?第一部分似乎是一个简单的出路,但没有将 DAL 与 UI 分开(以后可能会有安全性和可伸缩性问题),第二部分容易出错并且对于中等大小的数据库非常乏味。

你有什么建议?

4

1 回答 1

1

你所谓的 App.Objects 基本上就是你的领域模型,在所有层之间共享以传递数据是合乎逻辑的,但你需要决定这个模型是贫血的还是活跃的。

于 2009-06-03T10:05:57.207 回答