ASP.NET Core - 开篇

   由来

  ASP.NET Core 是一个跨平台的高性能开源框架,ASP.NET Core第一次出如今咱们眼前是以 ASP.NET vNext 命名的,而后又从新命名为ASP.NET 5,为了代表它并非 ASP.NET 的简单迭代升级,最终命名为 ASP.NET Core。这是一个从新设计的Web开源框架,它最重要的特性是再也不依赖IIS(依然能够部署在IIS上),支持跨平台,能够在任何平台上部署,这要得益于KestrelServer。git

  ASP.NET Core的性能和ASP.NET有着本质上的区别,由于大部分的ASP.NET被传统的System.Web库所限制,从新设计后的ASP.NET Core具备出色的性能和内存低占用,它的设计更符合现代化的开发思想(模块化),这些设计思想可使ASP.NET Core整个应用程序更容易开发和维护。github

  ASP.NET Core本质上就是一个控制台程序,可是又跟Framework的控制台程序不一样,由于它在启动的过程当中注册了一系列服务,并且构建了一系列的中间件和MVC的路由造成管道监听Http请求和处理。windows

  

   优势

  ASP.NET Core 具备以下优势:api

  • 生成 Web UI 和 Web API 的统一场景。
  • 针对可测试性进行构建。
  • Razor Pages 可使基于页面的编码方式更简单高效。
  • 可以在 Windows、macOS 和 Linux 上进行开发和运行。
  • 内置依赖项注入。
  • 轻型的高性能模块化 HTTP 请求管道。
  • 可以在 IIS、Nginx、Apache、Docker 上进行托管或在本身的进程中进行自托管。

 

  .NET生态圈

  咱们能够看到当前的.NET生态圈以下:服务器

  为何会有.NET Standard 这个东西?从上面的图来看,.NET主要分为三个部分: .NET FrameWork, .NET Core, Xamarin,目前要掌握这三部分的.NET,就意味着须要掌握三种不一样的各自的基础类库用来写出在三种平台上运行的代码。这就是 .NET Standard 出现的原因,以及它要处在的位置,这意味着开发者们只须要掌握以 .NET Standard 做为目标平台的基础类库,就能够在全部 .NET 平台上写出可运行的程序。框架

  咱们须要 .NET Standard 有两个理由:ide

  1. 对一致性的动力。 咱们想达成一个共识,全部 .NET 平台都必须实现一组必需的 API 才能够得到进入 .NET 库生态系统的权限。
  2. 优秀的跨平台工具的基础。 咱们但愿一个简化的工具体验,你只须要选择一个版本号来指定全部 .NET 平台的通用部分。

  版本差别

  在通过了1.x的沉淀后,2.x版本趋向于风格上的稳定,有兴趣知道各个版本的一些特性和变化,能够参考ASPNET.Core各个版本差别以及新特性 ,有兴趣的还能够关注3.x的预览版。模块化

 

  环境

  相似于ASP.NET依赖于Framework,ASP.NET Core 同样须要本身的Runtime和SDK,在Core2.x以后,须要下载VS2017才可进行开发微服务

 

  WebAPI

  在ASP.NET Core体系中,再也不有独立的WebAPI程序集,这个已经整合到MVC中工具

  

  咱们经过[ApiController]标签以及[Route("api/xx")]路由标志这是一个ApiController,这里须要注意的是官方推荐自定义的API基类最好继承ControllerBase,而不是直接继承Controller,Controller主要是给MVC用的。

 

  MVC

  ASP.NET Core MVC 框架是轻量级、开源、高度可测试的框架,并针对 ASP.NET Core 进行了优化。它提供一种基于开发模式的实现方式,用于生成可完全分开管理事务的动态网站。 它提供对标记的彻底控制,支持 TDD 友好开发并使用最新的 Web 标准。

  MVC中加了些许新概念(如TagHelper,ViewComponents等),在实际开发过程当中也和ASP.NET MVC有了较大的区别,后面在实际开发过程当中讲更多讲解实际的应用。

 

  重要对象和概念

   在咱们开始进入ASP.NET Core体系以前,咱们先了解在ASP.NET Core体系中重要的几个对象和概念,后面咱们会陆续碰到再仔细分解。

    HttpContext:请求上下文,对应Http请求的整个生命周期

  IHostingEnvironment:应用程序的运行的宿主环境配置信息

  ILogger:日志接口

  IConfiguration: 用于应用程序的配置

  IServiceCollection:Aspnet Core原生的依赖注入容器,负责服务注册

  IServiceProvider:负责解析注册的实例

  IApplicationBuilder:用于构建请求管道

  Middleware:中间件,管道的组成者

  WebHost:应用宿主

 

  .NET Core 或 .NET Framework的选择

  在如下状况,对服务器应用程序使用 .NET Core:

  • 用户有跨平台需求。
  • 用户正在面向微服务。
  • 用户正在使用 Docker 容器。
  • 须要高性能和可扩展的系统。
  • 需按应用程序提供并行的 .NET 版本。

  在如下状况,对服务器应用程序使用 .NET Framework :

  • 应用当前使用 .NET Framework(建议扩展而不是迁移)。
  • 应用使用不可用于 .NET Core 的第三方 .NET 库或 NuGet 包。
  • 应用使用不可用于 .NET Core 的 .NET 技术。
  • 应用使用不支持 .NET Core 的平台。

 

  在观望了1.x版本后,以及在2.x的一个实际应用经验中,秉着学习交流的想法,将我的的一些经验写下来,后续的文章将会把ASP.NET Core 中一些核心模块的源码进行解读(ASP.NET Core 的源代码已经所有托管在 GitHub 上)以及分享一些实际设计和应用经验,籍此机会和你们交流些许学习心得,但愿你们一块儿进步。

  本系列文章更多偏向于原理的解读和实际的应用,若是须要入门的帮助,建议从微软的入门教程 开始进行学习。

相关文章
相关标签/搜索