具有MVC4 EF和存储库模式的N层体系结构

哈里

我正在使用MVC和EF多层创建示例Web应用程序。我还使用存储库模式进行数据库访问。我只是

层是

  1. 学生事务

    • 调用存储库并执行业务逻辑。
  2. 学生资料

    • 实体POCO
    • 实体上下文
    • 实体储存库
  3. 学生对象

    • 包含域对象
  4. MVC Web应用
    • 实体控制器(在此处实例化服务之后)
    • 使用NInject绑定所有接口(该项目包含对所有其他层的引用)。

我需要有关此设计的优缺点的帮助。

基于代码

除了adv。和不满意。http://www.codeproject.com/Articles/430014/N-Tier-Architecture-and-Tips#nAdvantages)是为N层定义的。根据我最近对类似体系结构的经验,我将介绍几个要点:

好处是:

  • 由于控制器是薄层的,并且业务逻辑存储在实际服务中,因此您可以出于不同目的共享服务项目,例如Windows桌面等。将来,您还可以为Webapi公开相同的服务。因此,可重用性很高。

    • 每个图层都在做自己的专属工作,并且在NInject的帮助下,您可以轻松地交换相同的内容。我在当前项目中有一个很好的例子,在该例子中,对于调试模式,我将Exchange Online服务用于邮件网关。而对于发行版,我必须使用SMTP服务作为邮件网关。(请单独检查DI ad。的缺点)。
  • 当您遵循用于NInject的接口时,可以将Mocks用于TDD。因此,您可以在列表中添加TDD和DI权益。

  • Code First是代表您的数据库的一种很好的方法,它是一种干净透明的方法。你知道发生了什么事。

  • 首先通过Code进行数据库版本控制是最大的卖点。

缺点:

  • 即使您在逻辑上分离了这些组件,但是您也不能单独部署这些组件。因此,可以通过适当的会话处理来实现扩展。因此需要更多的工作。

  • CS文件太多,每个控制器一个(1或2个),服务(1个接口和1个类),存储库(1个接口,1个类)一个。因此,取决于您的应用程序,它将广泛地增长。我已经有100多个文件要管理。但是,在Resharper的帮助下,您可以摆脱这一缺点,并将其转化为您自己的利益。

  • 即使您可能为存储库,控制器以及服务编写了通用CRUD操作。有时候,您最终会走上使每个控制器拥有自己的服务之类的道路……

    • 我发现Validation将无处不在,但我认为任何N层都是如此。
  • 如果您首先将POCO与Code一起使用,那么绝对需要非常了解迁移。我仍在努力寻找许多答案。

  • 对于代码优先DbContext,没有直接,简单的方法来调用函数(就像您导入函数一样,在Database first-edmx中)。很干净,但是可能需要很多技巧。

  • 就像Code会先为您创建数据库一样,因此数据库管理不需要版本控制。但是,我发现处理部署,视图,功能等等很复杂。需要编码。

  • 在性能方面,我认为这将取决于您编写代码的方式。

总体而言,我遵循的Webapi架构完全相同,对此架构我感到非常满意。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

MVC体系结构中的模型/业务层/数据访问与存储库有什么区别?

使用存储库模式的具有多个数据源的体系结构

如何在MVC中实现n层体系结构?

尚未担任任何角色的用户列表(具有SimpleMembership和实体框架5的MVC4)

具有实体框架和三层体系结构的登录表单

Togaf 9.1:体系结构存储库和企业连续性之间有什么区别?

如何在具有ASP.NET Core应用程序的N层体系结构中使用EFCore数据库上下文?

ASP.NET MVC n层体系结构-最佳解决方案

mvc4全局错误处理模块化体系结构

kappa体系结构和lambda体系结构有什么区别

是否有必要为n层体系结构中的每个单层编写单元测试代码?

是否可以在具有WebAPI服务的三层体系结构的SQL Server数据库中使用Windows身份验证?

存储库模式和工作单元中的体系结构问题

MVC和存储库模式结构中的订购

数据库体系结构:当记录具有不同数量的属性(列)时

ASP.NET MVC中的业务逻辑层-体系结构

有人可以解释为什么MVC优于三层体系结构吗?

symfony2类和存储库体系结构

具有Xamarin和Asp.Net核心标识的项目体系结构

在具有不同体系结构的群集上应指定哪个AVX和行军?

MVC4图片上传和预览

jQuery Autocomplete,MVC4和WebAPI

MVC4中的捆绑和缩小

Rails MVC体系结构-具有多个控制器源的视图

MVC体系结构-将具有自定义逻辑的字段添加到模型

如何在我的项目存储库中处理EF,MVC4,WebPage和朋友之类的包

带有控制器的体系结构的名称,而非MVC的体系结构的名称

EF中具有通用接口和DI的存储库模式

移动应用程序(MVC除外)中使用的体系结构模式是什么?