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

  现在.Net Core项目与.Net Framework项目一样都是使用MSBuild格式的csproj文件来管理项目的相关属性,如名称、版本号、包依赖、项目依赖等等,所以实际上项目的迁移最大的改动就是将csproj的内容改为.Net Core的即可(.Net Core的csproj文件详情参考文档:https://docs.microsoft.com/en-us/dotnet/core/tools/csproj),改动csproj文件有两种方法,如果熟悉文件格式,那么直接改动原有文件即可,如果不熟悉那么可以通过重新创建项目的方式,让VS来完成创建/修改工作。

通过创建新项目完成类库迁移

  本文将通过重新创建项目的方式来完成项目迁移,以保证csproj配置文件的正确性。
  首先通过VS创建一个.Net Standard的类库项目:

  

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

  然后把相应的代码复制到新建项目的目录下,删除不存在的命名空间即可。
  注:.Net Core会自动识别项目目录下的代码文件,而原来的.Net Fx项目需要在csporj文件中引入,所以这里直接复制代码文件即可识别到项目中。

迁移EntityFramework

  本例程序中用于实现仓储的类库依赖了EF,而实现MySQL EF的类库还依赖了My SQL的EF相关组件。
另外随着.Net Core的推出,EF也推出了EFCore,另外新版本的.Net大量引入了Options模式来对程序进行配置,关于Options模式可参考文档:https://docs.microsoft.com/en-us/aspnet/core/fundamentals/configuration/options?view=aspnetcore-2.1
  中文文档:https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/configuration/?tabs=basicconfiguration
  所以在迁移EF的时候,除了创建新的项目,还需要安装新的Nuget包并且修改相应的配置代码:
  1. 安装EFCore组件:
  安装Microsoft.EntityFrameworkCore:

  

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

  2.处理EFCore的配置:
  EFCore配置文档:https://docs.microsoft.com/zh-cn/ef/core/miscellaneous/configuring-dbcontext

  

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

  注:EFCore针对不同数据库的配置信息通过DbContextOptions对象完成,所以构造方法不再是一个简单的连接字符串,另外EFCore提供了针对ASP.NET Core容器的依赖注入方法,为了利用依赖注入可以把DbContext配置交由ASP.NET Core项目完成,包括对不同数据源的支持。

  通过上面的方法即可把例子中的类库项目完成迁移,接下来进行MVC项目的迁移工作。

迁移ASP.NET MVC

  ASP.NET Core是一项变革,除了跨平台之外,它还改变了原先ASP.NET的思想和开发方式,如MVC及API的Controller合二为一、拥抱现代前端开发方式方法、Dorcker支持等,接下来将通过介绍其迁移过程来了解ASP.NET与ASP.NET Core的异同。

创建一个新的ASP.NET Core MVC项目

  相对与类库来说MVC项目的迁移要复杂的多,因为新的ASP.NET在项目文件结构、程序启动、开发方式等方面都有了区别,这里仍然使用创建新项目的方式完成ASP.NET MVC应用的迁移:
  创建一个ASP.NET Core MVC应用:

  

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

  下面是新项目的目录结构:

  

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

  ASP.NET Core MVC与原先ASP.NET MVC类似核心仍然是Controllers、Models、Views三个目录,另外通过wwwroot目录对HTML资源进行了整合、配置文件变更为Json格式、删除了Global.asax取而代之的是Program.cs和Startup.cs文件。
  ASP.NET开发的Web应用程序需要IIS作为宿主才可以运行,而ASP.NET Core作为一种可跨平台的Web应用开发框架其应用必定是与IIS完全解耦的,所以它的启动方式也完全不一样。
  ASP.NET Core中引入了Program类型,如Console应用一样通过Main方法来运行程序,而ASP.NET Core的Main方法主要内容是指明一个Startup类型完成Web服务器的创建。而Startup类型则负责了整个应用的配置和HTTP请求管道搭建的任务,所以首先要完成的工作就是将原先Global及Owin Startup文件中的内容移植到Startup文件中,下面就开始详细介绍ASP.NET Core MVC的变化及迁移方法。
  MVC除了包含Controller、Model、View等文件外,还需要进行路由、过滤器等功能配置,所以首先需要将原项目的相关文件(controller、model、view等注:因为原项目和ASP.NET Core的MVC都依赖Identity实现用户管理功能,所以涉及到用户管理的部分不需要复制)复制到新项目中,修改命名空间引用如:System.Web.Mvc->Microsoft.AspNetCore.Mvc并修复其它命名空间引用错误。
  接下来完成其它几个重要方面的迁移。

路由迁移

  将原有的路由配置包含Area的路由配置转移至Startup类型的Configure方法中:

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

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