【问题标题】:MVC Site ArchitectureMVC 站点架构
【发布时间】:2012-08-02 16:53:51
【问题描述】:

我正在使用 MVC4 构建一个在线产品。

目前,我将项目结构化为明显的 xx.Web、xx.Data、xx.Services

以下是我想征求您意见的一组问题:

1- 对于数据层,我将使用存储库模式。我创建了一个 .dbml 来托管我的数据库表。我应该为每个表创建一个类还是应该使用 .dbml 生成的类? 2- 对于存储库接口,我应该将它们放在哪里?在不同的项目 xx.Data.Common 中还是在 xx.Data 内的文件夹中?

3- 错误记录和安全代码在哪里?我为此创建了一个 xx.Web.Common 项目?

对于 MVC 应用程序的通用架构是否有任何指导方针?我的意思是我做了一些研究,但是你被 Ninject 等扩展的音调淹没了......

我只想实施最佳做法。谢谢

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-4 architecture


    【解决方案1】:

    http://sharparchitecture.net/ 是开箱即用的最佳实践起始模板。但是,我认为我在网上看到的大多数解决方案都是过度设计的,并且针对的是企业级网站。

    如果您只是制作在线产品,那么一个简单的 2-3 层解决方案就足够了。从最简单的解决方案开始。当/如果需要时,您可以随时添加或创建新图层。

    【讨论】:

    • 这就是我的想法。也许实现存储库模式和 Ninject 将是一个好的开始。问题是您阅读了大量的解决方案,但您从未在实际情况中看到它的优势。掌握理论的东西不会教如何或何时实现这些功能。不过感谢您的提醒。
    • +1 表示首先采取最简单的路线。恕我直言,一个好的方法是专注于代码的可维护性,以便轻松添加新内容。
    【解决方案2】:

    1- 对于数据层,我将使用存储库模式。我创建了一个 .dbml 来托管我的数据库表。我应该为每个表创建一个类还是应该使用 .dbml 生成的类?

    如果你从头开始构建你的网站,我建议你使用Code First with Entity Framework,因为 Linq2Sql 已经不再进化了。

    您不需要将模型与数据库表进行 1 : 1 映射,专注于设计领域模型,数据库将自动生成。此外,无需从存储库与表映射 1 : 1。您需要了解具有聚合和聚合根的存储库模式

    2- 对于存储库接口,我应该将它们放在哪里?在不同的项目 xx.Data.Common 中还是在 xx.Data 内的文件夹中?

    应该有一个名为:xx.Domain 的 dll 来放置您的域模型和存储库接口。这样,xx.Domain 就是核心程序集,不依赖任何其他程序集。

    3- 错误记录和安全代码在哪里?我为此创建了一个 xx.Web.Common 项目?

    应该有更多的 dll 调用:xxx.CrossCuttings 用于日志记录和安全性。

    使用 IoC 容器在层和可测试性之间建立松散耦合。

    不是 MVC 架构的通用准则,但尽量保持代码简单、可维护和灵活是关键。

    【讨论】:

      猜你喜欢
      • 2010-11-02
      • 2011-03-29
      • 1970-01-01
      • 2011-09-13
      • 2023-03-07
      • 1970-01-01
      • 2023-03-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多