ASP.NET MVC应用迁移到ASP.NET Core及其异同简介 (3)

  

ASP.NET MVC应用迁移到ASP.NET Core及其异同简介

  注:本例存在Controller名称重名情况,但ASP.NET Core MVC没有提供如ASP.NET中通过命名空间区别的方式区别Controller重名,本例通过修改名称解决问题,如需命名空间区分Controller可参考:https://stackoverflow.com/questions/34306891/restrict-route-to-controller-namespace-in-asp-net-core

过滤器迁移

  全局过滤器的配置则是由原来的通过FilterConfig对象注册改为Startup的ConfigureServices方法中对MVC进行配置:

  

ASP.NET MVC应用迁移到ASP.NET Core及其异同简介

  

ASP.NET MVC应用迁移到ASP.NET Core及其异同简介

依赖注入迁移

  ASP.NET Core内置了依赖注入功能,甚至一些组件都提供了专门的拓展方法将其服务添加到容器中,如EFCore、Identity、MVC。

  

ASP.NET MVC应用迁移到ASP.NET Core及其异同简介

  上图为ASP.NET Core默认的为将DbContext、Identity以及MVC相关服务添加到容器的代码,除此之外为了顺应依赖注入思想,这里将原有代码的仓储和服务类型均注册到容器中,其依赖通过构造方法进行注入。
  仓储代码:

  

ASP.NET MVC应用迁移到ASP.NET Core及其异同简介

  业务代码:

  

ASP.NET MVC应用迁移到ASP.NET Core及其异同简介

  控制器代码:

  

ASP.NET MVC应用迁移到ASP.NET Core及其异同简介

  服务注册代码:

  

ASP.NET MVC应用迁移到ASP.NET Core及其异同简介

  注:本例中实现依赖的是实现而非抽象,这不符合依赖倒置原则,所以此处仅作为ASP.NET Core依赖注入使用示例。另外为了让EFCore支持MySQL,所以需要在项目中添加Pomelo.EntityFrameworkCore.MySql组件:

  

ASP.NET MVC应用迁移到ASP.NET Core及其异同简介

Web静态资源及View迁移

  ASP.NET的页面是基于HTML实现的,一个ASP.NET的页面除了HTML代码外还会引用一些外部静态资源,如css、js、image、font等内容,而ASP.NET中专门提供了Bundle技术来管理这些资源(可参考:《ASP.NET没有魔法——ASP.NET MVC界面美化及使用Bundle完成静态资源管理》),那么ASP.NET Core是如何管理这些资源的呢?
  首先要处理ASP.NET Core中静态文件的访问问题,在ASP.NET中由于它依赖IIS,而静态文件访问已经被IIS处理了,所以程序中无需关心,但ASP.NET Core不一样,需要在其请求管道中添加相应的处理中间件:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zyfgyj.html