拆分大型mvc应用程序的解决方案的正确方法是什么?

时间:2012-08-02 12:49:09

标签: c# asp.net-mvc model-view-controller architecture projects-and-solutions

我创建的应用程序在数据库中有超过70个表,并且在接下来的阶段会增加。

我使用Asp.net MVC:模型,实体框架,视图模型,存储库,视图,控制器,动作过滤器,参考,多语言,....

我的解决方案中这些部件的最佳位置是什么?

我已经看到了拆分解决方案的不同方法。例如:

  - Solution
        - Core.UI
            - Domain
            - UI
               - Models
            - Persistence
        - Core.Test
        - UI
            - Content
            - Controller
            - Views
            - Scripts

或者其他人说将其拆分为

  - Solution
        - Model
        - Entities
        - Web
        - References

...

您对DDD(域驱动设计)有何看法?以及如何实施它?你推荐它吗?


  • 我希望项目中的最佳灵活性最佳选择因为 当项目很大时,改变其结构将会更加困难。
  • 我想以各种形式交换信息(Web和HTML, 客户端应用程序,移动,xml ....)
  • 我想改变并构建我项目的基本部分 单独(现在和将来)

如果您可以帮我详细说明。

非常感谢...

2 个答案:

答案 0 :(得分:3)

这里的关键是你要避免耦合,以便在整个应用程序开发过程中保持高效。为此,您需要执行面向服务的体系结构

而不是将问题分解为水平切片(图层)的n层应用, 面向服务的体系结构取而代之的是应用程序(服务)的垂直切片。

Start with this video by Udi Dahan如果您想学习面向服务的体系结构的基本思想。提示:如果你已经设计了数据库,那么你就错了。

你想要阅读的两个人是Udi DahanGreg Young。我还建议DDD Google Group提出更详细的问题。 DDD问题并不总是适合StackOverflow以及其他计算问题,因为它们非常细致,并且通常需要大量的来回才能找到问题的根源。

答案 1 :(得分:1)

直接回答这个问题并不容易。这取决于您的业务需求,您的应用程序规模等。

Microsoft Spain提供了一个参考实现。虽然它有一些缺点,但它仍然是一个很好的起点。如果你有足够的时间,只需确定哪些概念/模式是必需的,哪些不是。

http://microsoftnlayerapp.codeplex.com/