【问题标题】:Does the Business Logic Layer handle View Models in MVC?业务逻辑层是否处理 MVC 中的视图模型?
【发布时间】:2016-05-20 06:42:23
【问题描述】:

我有一个包含 4 个项目的应用程序

  • 演示文稿

  • BLL

  • 型号

  • DA

BLL 是否应该向表示层传递和检索视图模型。 (并处理所有映射)

或者更确切地说,它应该只处理域模型并让表示层(控制器)处理所有映射。

谢谢

【问题讨论】:

  • 为什么要删除虚拟机?
  • 不删除,只是转移到另一个项目。如果我将它保存在表示层中并且 BLL 引用了它们(表示层已经引用了 BLL),则会存在无效的循环依赖。
  • 你的虚拟机应该有对 BLL 的引用而不是相反的。所以现在的问题是为什么你的 BLL 需要 VM 参考?
  • 我了解,我的表示层/VM 层目前仅引用 BLL,而不是相反。但是,如果我希望 BLL 创建 VM 对象并处理它们,就会出现这种情况。这就是为什么我说将 VM 移动到另一个项目并让 BLL 从那里引用它。
  • 我将重组我的问题,以便更容易理解。谢谢

标签: asp.net-mvc architecture model viewmodel


【解决方案1】:

您的开发方法没有什么绝对的。在任何情况下,您都可以选择适合您的。但是,当您选择您的方法时,您应该考虑您未来的维护和扩展可能性。根据您提供的详细信息,我认为您应该考虑一些问题:

  • 用户输入验证:用户输入验证不是 BLL 的一部分。因此,如果您将演示文稿连接到 BLL,您将混合使用这两种方式,并且很难管理您的代码或“分离关注点”
  • 在 mvc 情况下,您总是使用数据注释来表示。将 BLL 用于 VM 可能会使它们难以使用。
  • 在表示层上,您需要 CSS 和 Jquery 等工具。将它们与 BLL 一起使用,可能会使您的代码非常混乱且难以处理 稍后维护。
  • 对于演示文稿的任何微小更改,您都需要更改违反所有原则的 BLL!。
  • 如果将 BLL 与演示混合在一起,将很难为客户提供 WebApi 之类的服务。
  • 从视图中访问 BLL,让黑客的生活更轻松!

还有更多!

【讨论】:

  • 谢谢,换VM的点应该不需要我碰BLL卖给我了!
猜你喜欢
  • 1970-01-01
  • 2012-08-03
  • 1970-01-01
  • 2016-06-05
  • 1970-01-01
  • 1970-01-01
  • 2012-04-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多