【问题标题】:Layer Encapsulation without Model Overload?没有模型重载的层封装?
【发布时间】:2013-09-12 02:54:17
【问题描述】:

我正在开始一个新项目,所以是时候重新评估我的工作方式了。

最近,我创建了一个 3 层/层项目(UI、域、数据),每一层都有自己独立的模型。 DAL 的数据实体由 Domain 层使用,后者将它们映射到由 UI 使用的域模型,然后将它们映射到 ViewModel。

这确实允许在每个级别(尤其是 UI)进行一些区分,但映射非常繁琐(Automapper 帮助了一点),并且域和数据层基本上是 1:1,UI 视图模型是最有用的。

我正在尝试找出如何简化我的下一个项目,我可以参考一些建议。

编辑: 事实上,我正在考虑在域层和数据层之间共享一组 dto。它更多地将我锁定在数据库结构中,但节省了大量相同类型之间的映射。

【问题讨论】:

    标签: c# architecture encapsulation n-tier-architecture


    【解决方案1】:

    我认为您可能需要看看 MVVM,尤其是因为它用于 UI/模型分离,您已经认为它很有用。它较少关注数据(至少不拆分数据)。

    还有很多人拆分Data(在MVVM中称为Model)和数据的序列化。

    据我所知,域和数据是如此紧密耦合,你不应该将它分开(我从不这样做)。但也许你对域和数据的定义有点不同。

    【讨论】:

    • 缺点是我被锁定在 ASP.NET MVC 中(不是坏事),我不想在 MVC 上分层 MVVM。事实上,我可能会创建一组在域和数据之间共享的 DTO,并使用 UI 维护视图模型。缺点是它把我更多地锁定在数据库结构中,但我可以逐个添加例外。
    • MVVM 和 MVC 是相似的“设计模式”,所以我不会同时使用它们。
    猜你喜欢
    • 1970-01-01
    • 2017-02-18
    • 2011-11-22
    • 2011-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-21
    • 1970-01-01
    相关资源
    最近更新 更多