深入浅出ASP.NET Core学习笔记02MVC和依赖注入

举报
孙小北 发表于 2021/06/16 21:51:22 2021/06/16
【摘要】 MVC和依赖注入 详解mvc的设计模式 什么是MVCMVC是用于实现应用程序的用户界面层的架构设计模式。模型Model:包含一组数据的类和管理该数据的逻辑信息视图View:包含显示逻辑,用于显示Controller提供给它的模型中的数据控制器Controller:处理Http请求,调用模型,请选择一个视图来呈现该模型 区别于应用程序分层设计mvc(Modal,View,Controller...

MVC和依赖注入

详解mvc的设计模式

什么是MVC

  • MVC是用于实现应用程序的用户界面层架构设计模式
    image.png
  • 模型Model:包含一组数据的类和管理该数据的逻辑信息
  • 视图View:包含显示逻辑,用于显示Controller提供给它的模型中的数据
  • 控制器Controller:处理Http请求,调用模型,请选择一个视图来呈现该模型

区别于应用程序分层设计

image.png

  • mvc(Modal,View,Controller)只是一种设计模式,不是框架。应用程序逻辑分层中(用户展现层、业务逻辑处理层、数据访问读取层),mvc只是用于用户展现层。

MVC 工作面过程

image.png

  • 路由规则将url映射到Controller Action方法

在asp.net core项目中配置MVC

步骤一:将所需的mvc服务添加到asp.net core中的依赖注入容器中。

public void ConfigureServices(IServiceCollection services)
{
  services.AddMvc();
}

步骤二:添加MV中间件到请求处理管道中

public void Configure(IApplicationBuilder app,IHostingEnvironment env)
{
  app.UseMvcWithDefaultRoute();
}

AddMvc 和 AddMvcCore的关系

  • AddMvcCore()方法只会添加最核心的MVC服务
  • AddMvc()方法添加了所有必须的MVC服务,其内部会调用AddMvcCore()

依赖注入

  • 依赖注入是一种软件设计模式,指一个或多个依赖(或服务)被注入,或通过引用传递,传入一个依赖对象(或客户端)并成为客户状态的一部分。该模式通过自身的行为分离了客户依赖的创建,允许程序松耦合设计,同时遵循依赖倒置和单一职责原则。与服务定位器模式对比,它允许用户了解他们用来查找依赖的机制。

ASP.NET Core依赖注入

ASP.NET Core依赖注入容器注册服务

  • AddSingleton()
  • AddTransient()
  • AddScoped()
    image.png
    image.png

依赖注入的两点

  • 低耦合
  • 提供了高测试性,使单元测试更加的容易

ASP.NET Core中的模型绑定与验证

  • 模型绑定是将http请求中的数据映射到控制器操作方法上对应的参数
  • 操作方法上对应的参数可以是简单类型如整数、字符串等,也可以是复杂类型,如 Customer, Employee等模型
  • 模型绑定节约了大量时间,减少了自定义代码将请求数据映射到操作方法参数的繁琐过程

模型绑定将按以下指定顺序在以下位置查找来自http请求中的数据:

  • Form values(表单中的值)
  • Route values(路由中的值)
  • Query strings(查询字符串)

模型验证

(1)在属性上添加验证属性 [Required]等
(2)使用ModelState.IsValid 属性验证属性是成功还是失败
(3)使用 asp-validation-for 和 asp-validation-summary标签帮助器来显示错误信息

EntityFramework Core

  • 使用EntityFramework Core(EF Core)数据访问
  • ORM(对象关系映射器)Object-Relational Mapper
  • EF Core 是轻量级,可扩展和开源的软件
  • EF Core 也是跨平台的
  • EF Core 是微软官方推荐的数据访问平台
    image.png

两种模式:Code First 和 DB First

image.png

仓储模式

  • 松耦合,易扩展
  • 代码更清晰,易于重用和维护
    image.png
【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。