【问题标题】:Can I use viewmodels in my MVC(.net core 3.0) project in my ApplicationLogic project (net standard 2.1)我可以在我的 ApplicationLogic 项目(net standard 2.1)中的 MVC(.net core 3.0)项目中使用视图模型吗?
【发布时间】:2020-03-04 21:13:27
【问题描述】:

我有一个 MVC 应用程序,我的所有视图模型都在其中。我添加了一个业务逻辑层项目,这是一个类库项目 net standard 2.1,我的所有接口和服务都在其中。我正在尝试在业务逻辑项目中使用我的视图模型,但我无法在那里引用它们。我想知道我是否可以在类库中引用 MVC 应用程序,如果我不想添加 DTO,我可以将我的视图模型放在哪里,因为我的应用程序不是一个很大的项目。

【问题讨论】:

    标签: c# asp.net-core architecture n-tier-architecture class-library


    【解决方案1】:

    这里有很多混乱。首先,视图模型或 DTO 没有什么神奇之处,其名称只是对特定使用上下文的描述。归根结底,您有一个代表特定上下文中的一些数据集合的类:仅此而已。其次,业务逻辑不是应用程序逻辑。应用程序逻辑是关于表示和用户交互的,而业务逻辑是关于原始数据的。这两件事不应该交叉,因为业务规则不应该决定展示,展示也不应该决定业务规则。

    业务层不应该对应用层(MVC 应用)中的视图模型有任何了解,因为这会产生紧密耦合(以及循环引用,FWIW)。应用层中的视图模型与业务层中实体之间的映射逻辑仅是应用层的领域。

    【讨论】:

    • 业务层中的实体是指实际的数据库模型。或者我应该在这里添加类似 DTO 的东西,因为我不想将我的数据库模型暴露给应用程序层。但是,添加 DTO 也意味着项目的复杂性更高,因为它需要更多的映射逻辑,我觉得对于这么小的应用程序可能不需要这些逻辑
    猜你喜欢
    • 1970-01-01
    • 2022-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-21
    • 1970-01-01
    • 2020-02-11
    相关资源
    最近更新 更多