ASP.NET MVC4 n-Tier架构:最好的方法

时间:2013-02-07 07:03:05

标签: asp.net-mvc-4 entity-framework-5 n-tier-architecture

我为MVC4 webapp + EntityFramwork5开发了3层架构。 我想保留separete图层,所以只有DAL知道我正在使用EF,例如。

实际上我有很多课程来管理它:

DAL

  1. 实体POCO
  2. 实体DataContext:DbContext
  3. 实体存储库
  4. BL

    1. 实体ViewModel
    2. 实体服务(实例化实体存储库)
    3. 网络

      1. 实体控制器(实例化实体服务)
      2. 这很有效,但很难保持。我想在DAL中删除实体存储库并直接使用DataContext(如果我没有错,在所有DbContext被设计为存储库和工作单元之后),但这将迫使我添加一个引用我的BL中的EntityFramework.dll。这不是一个大问题,但我不确定它是最好的选择。

        有什么建议吗?

        (我希望我提供足够的信息,如果你需要更多,请问)

1 个答案:

答案 0 :(得分:5)

您可以使用this thisthis文章。

An experienced Architect does not need to go through every single step in the book to get a reasonable design done for a small web
     

应用。这样的建筑师可以利用他们的经验来加速   处理。因为我之前已经做过类似的Web应用程序   了解我的可交付成果,我将采取更快的方法   完成DMS设计的初始部分。希望如此   协助我缩短这篇文章的篇幅。

For those who do not have experience, let me briefly mention the general steps that involved in architecturing a software below...

Understand the initial customer requirement - Ask questions and do research to further elaborate the requirement
Define the process flow of the system preferably in visual (diagram) form. I usually draw a process-flow diagram here. In my
     努力,我会先尝试定义系统的手动版本   然后尝试将其转换为自动版本   确定流程及其关系。这个过程流程   我们在这里绘制的图表可以用作验证的媒介   与客户一起获取要求。       确定满足您要求的软件开发模型       在设计开始之前完全捕获并定义需求时,您可以使用“Water-Fall”模型。但当时   要求未定义,可以使用'Spiral'的变体来处理   接着就,随即。       未定义需求时,系统会在设计时定义。在这种情况下,您需要保留足够的空间   在各自的模块中,预期后来的扩展。       确定要使用的架构。就我而言,为了设计我们的文档管理系统(DMS),我将使用它的组合   ASP.NET MVC和Multitier架构(三层变体)。       分析系统并识别其模块或子系统       一次选择一个子系统并进一步分析它并识别属于该系统部分的所有粒度级别要求。       识别数据实体并定义实体之间的关系(实体关系图或ER图)。这样可以   然后确定业务实体(一些业务实体)   直接映射您的系统的类)并定义业务   流程。       组织你的实体。这是您规范化数据库的地方,并决定要使用的OOP概念和设计模式   等
      使您的设计保持一致。在所有模块和层中遵循相同的标准。这包括简化概念(作为一个   例如,如果您在两个中使用了两种不同的设计模式   不同的模块实现相同的目标,然后选择更好   在这两个地方使用和使用的方法   项目。       调整设计是整个过程的最后一部分。为此,您需要与项目团队召开会议。在那里面   遇到你需要向你的团队展示你的设计并让他们问   有关它的问题。以此为契机,诚实地评估/   调整你的设计。