Asp.net mvc 4 ASP.NET MVC4 n层体系结构:最佳方法
我正在为MVC4 webapp+EntityFramwork5开发一个三层架构。 我想保持层的分离,因此只有DAL知道我在使用EF,例如 事实上,我有很多课程需要管理: DALAsp.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被设计成一个存储库和一个工作单元)
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