Asp.net mvc 4 ASP.NET MVC4 n层体系结构:最佳方法

Asp.net mvc 4 ASP.NET MVC4 n层体系结构:最佳方法,asp.net-mvc-4,entity-framework-5,n-tier-architecture,Asp.net Mvc 4,Entity Framework 5,N Tier Architecture,我正在为MVC4 webapp+EntityFramwork5开发一个三层架构。 我想保持层的分离,因此只有DAL知道我在使用EF,例如 事实上,我有很多课程需要管理: DAL 实体POCO 实体DataContext:DbContext 实体存储库 BL 实体视图模型 实体服务(实例化实体存储库) WEB 实体控制器(实例化实体服务) 这是可行的,但很难维持。我想删除DAL中的实体存储库,直接使用DataContext(如果我没有错的话,毕竟DbContext被设计成一个存储库和一个工作单元)

我正在为MVC4 webapp+EntityFramwork5开发一个三层架构。 我想保持层的分离,因此只有DAL知道我在使用EF,例如

事实上,我有很多课程需要管理:

DAL

  • 实体POCO
  • 实体DataContext:DbContext
  • 实体存储库
  • BL

  • 实体视图模型
  • 实体服务(实例化实体存储库)
  • WEB

  • 实体控制器(实例化实体服务)
  • 这是可行的,但很难维持。我想删除DAL中的实体存储库,直接使用DataContext(如果我没有错的话,毕竟DbContext被设计成一个存储库和一个工作单元),但这将迫使我在BL中添加对EntityFramework.dll的引用。这不是一个大问题,但我不确定这是最佳选择

    有什么建议吗

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

    您可以使用和文章

    应用程序。这样的架构师可以利用他们的经验来加速开发 过程因为我以前做过类似的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
    
    我将首先尝试定义系统的手动版本 然后尝试将其转换为自动版本,同时 识别过程及其关系。这个流程 我们在这里绘制的图表可以用作验证 还捕获了客户的需求。 确定适合您需求的软件开发模型 当需求在设计开始前被完全捕获和定义时,您可以使用“瀑布”模型。但是当 需求未定义,可以使用“螺旋”的变体来处理 用这个。 当需求未定义时,系统在设计时被定义。在这种情况下,您需要保持足够的空间 在各自的模块中,预计会进行后续扩展。 确定要使用的体系结构。在我的例子中,为了设计我们的文档管理系统(DMS),我将使用 ASP.NET MVC和多层体系结构(三层变体)。 分析系统并确定其模块或子系统。
    一次选择一个子系统,并进一步分析它,确定属于该系统部分的所有粒度级需求。 识别数据实体并定义实体之间的关系(实体关系图或ER图)。那可以 然后确定业务实体(一些业务实体 直接映射到系统的类)并定义业务 工艺流程。 组织你的实体。在这里,您可以规范化数据库,并决定使用什么OOP概念和设计模式 等等
    使您的设计保持一致。在所有模块和层中遵循相同的标准。这包括简化概念(作为 例如,如果您在两个项目中使用了两种不同的设计模式 不同的模块实现相同的目标,然后选择更好的 在这两个地方都采用这种方法),并在 项目 优化设计是该过程的最后一部分。为此,您需要与项目团队召开会议。因为 满足您的需求,向团队展示您的设计,并让他们提问 关于它的问题。把这当作一个诚实评估的机会/ 调整你的设计


    我不太清楚你为什么提到你的项目很难维持。你认为哪一层很难维护?例如,如果我在POCO中添加一个字段,我需要更新datacontext(并非总是)、dal存储库、BL视图模型和BL服务。。不少。。但在这种结构中可能是必须的(或设计错误),hi@Davide,你也可以为你的项目应用一些GOF设计模式。例如,如果您可以将字段添加到POCO中,您可以使用“Builder”模式:)。请明确说明这是您第一次引用的长引号,并且还包括编号列表?谢谢幸好你没有给出一个只有链接的答案。
    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