.netcore入门14:使用vs2019创建asp.net core应用的四种模板的区别和用法

环境:

  • .netcore 3.1.101
  • vs2019 16.4.5

试验目的:
探索asp.net core应用的四种类型:“空”模板项目、“API”模板项目、“web-razorpages”、“web-mvc”。

一、“空”模板项目

这个是最简单和基础的项目!

1.1 创建的选项如下:

.netcore入门14:使用vs2019创建asp.net core应用的四种模板的区别和用法

1.2 特点及使用方法

默认创建后,在项目里不能创建controllers、views和razorpages,但是你仍然可以处理简单的网络请求,如下:
.netcore入门14:使用vs2019创建asp.net core应用的四种模板的区别和用法
当然,你可以将它扩展为webapi、web应用(razorpages)或web应用(mvc)。扩展的方法是在ConfigureServices()方法里注入相关的服务,然后在app.UseEndpoints()里进行路由的映射就可以了。
注意: 后面创建的三个实例工程都将和这个“空”模板项目做比较。

二、“API”模板项目

前后端分离的项目(如:vue+aspnetcore)一般选择此类型

2.1 创建的选项如下:

.netcore入门14:使用vs2019创建asp.net core应用的四种模板的区别和用法

2.2 特点及使用方法

这个项目相比“空”模板的项目,多出来如下东西:

  • a). 注册了controllers服务:services.AddControllers();
  • b). 终结点映射设置里直接将所有的请求映射到了controller上,路由规则由具体的Controller上的特性规定:app.UseEndpoints(endpoints => endpoints.MapControllers());
  • c). 给了一个示例的Controller,它的大致内容如下:
    .netcore入门14:使用vs2019创建asp.net core应用的四种模板的区别和用法

三、“web 应用程序”之RazorPages

这种类型的项目用的较少,类似于以前的aspx,但是简单的项目写起来也是很方便的

3.1 创建的选项如下:

.netcore入门14:使用vs2019创建asp.net core应用的四种模板的区别和用法

3.2 特点及使用方法

这个项目相比“空”模板项目多出如下东西:

  • a). 注册了RazorPages服务:services.AddRazorPages();
  • b). 终结点映射设置里直接将所有的请求映射到了RazorPages上:app.UseEndpoints(endpoints => endpoints.MapRazorPages());
  • c). 给了示例的RazorPage,它的大致内容如下:
    .netcore入门14:使用vs2019创建asp.net core应用的四种模板的区别和用法

四、“web 应用”之mvc

在asp.net时代,mvc是做web应用的首选,如今SPA(单页面应用)盛行下有下滑趋势,但它作为web应用开发应该还是坚挺的!

4.1 创建的选项如下

.netcore入门14:使用vs2019创建asp.net core应用的四种模板的区别和用法

4.2 特点及使用方法

相比“空”模板项目,多了如下东西:

  • a). 注册了controller和views服务:services.AddControllersWithViews();
  • b). 终结点映射设置里将所有的请求映射到了指定了规则的路由上:app.UseEndpoints(endpoints => endpoints.MapControllerRoute(name: "default", pattern: "{controller=Home}/{action=Index}/{id?}"));
  • c). 给了示例的Controller、Model和View,它的大致内容如下:.netcore入门14:使用vs2019创建asp.net core应用的四种模板的区别和用法

五、总结

从上面新建的几个示例中可以看到,除“空”模板外他们都是有各自的应用场景:

  • “空”项目:学习、研究;适用于特别简单的项目(几个api的应用);一般都是基于此项目引入其他(mvc/api等)的服务后再使用。
  • “web api”:单页面应用;前后端分离项目,应用较广泛。
  • “web mvc”:asp.net mvc的升级版,传统c#开发web网站的进阶版;如果不是太考虑前后端分离,应用此模式是最佳的,应用一般。
  • “web razorpages”:aspx的升级版,对于小型项目,不考虑前后端分离,可以使用此模式,应用一般。

注意:
你可以将其中的任何一个项目修改成其他的项目类型而不用考虑引入nuget包或修改工程属性,因为他们的区别仅在于ConfigureServices()Configure()里面的写法不同而已,至于其他的工程文件,你在书写时遵从约定即可。