由来

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

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

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

  

  优点

  ASP.NET Core 具有如下优点:

  • 生成 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 有两个理由:

  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

  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上)以及分享一些实际设计和应用经验,籍此机会和大家交流些许学习心得,希望大家一起进步。

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

  

ASP.NET Core - 开篇的更多相关文章

  1. 小白开学Asp.Net Core 开篇

    开学Asp.Net Core 开篇 一.准备工作 1.操作环境:Win10 2.开发工具:VS2019 3.运行环境:.Net Core 2.2 4.数据库:SqlServer2012 二.项目搭建 ...

  2. ASP.NET Core - 从Program和Startup开始

    Program 我们先看一下1.x和2.x的程序入口项的一个差异 1.x public class Program { public static void Main(string[] args) { ...

  3. ASP.NET Core模块化前后端分离快速开发框架介绍之1、开篇

    源码地址 GitHub:https://github.com/iamoldli/NetModular 演示地址 地址:https://nm.iamoldli.com 账户:admin 密码:admin ...

  4. 跟我学: 使用 fireasy 搭建 asp.net core 项目系列之一 —— 开篇

    ==== 目录 ==== 跟我学: 使用 fireasy 搭建 asp.net core 项目系列之一 —— 开篇 跟我学: 使用 fireasy 搭建 asp.net core 项目系列之二 —— ...

  5. (一)学习了解OrchardCore笔记——开篇:基于asp.net core的OrchardCore

    想深入了解OrchadCore源码许久了,但是读源码的时候遇到很多问题而网上的参考资料太少了(几乎都是OrchadCms不带OrchardCore的),现在解决得差不多了,做下笔记方便自己查看,有错误 ...

  6. [ASP.NET Core开发实战]开篇词

    前言 本系列课程文章主要是学习官方文档,再输出自己学习心得,希望对你有所帮助. 课程大纲 本系列课程主要分为三个部分:基础篇.实战篇和部署篇. 希望通过本系列课程,能让大家初步掌握使用ASP.NET ...

  7. Docker打包 Asp.Net Core应用,在CentOS上运行

    本文主要介绍下运用docker虚拟技术打包Asp.net core应用. Docker作为一个开源的应用容器引擎,近几年得到广泛的应用,使用Docker我们可以轻松实现应用的持续集成部署,一次打包,到 ...

  8. asp.net core 2.0+sqlsugar搭建个人网站系列(0)

    一些废话 马上就要过年了,回顾这一年最大的收获就是技术有了很大的提升,其他的方面没有什么改变,现在还是单身小屌丝一枚. 这一年来学习的主要重点就是asp.net core,中间也使用 core+EF做 ...

  9. ASP.NET Core 实战:基于 Jwt Token 的权限控制全揭露

    一.前言 在涉及到后端项目的开发中,如何实现对于用户权限的管控是需要我们首先考虑的,在实际开发过程中,我们可能会运用一些已经成熟的解决方案帮助我们实现这一功能,而在 Grapefruit.VuCore ...

随机推荐

  1. storage.go

    package storage import (     "fmt"     "os" ) const DEFAULT_STORAGE_ENGINE = &qu ...

  2. volume.go

    package)) ) ,) ) );) ,     } }

  3. BZOJ_1146_[CTSC2008]网络管理Network_主席树+树状数组

    BZOJ_1146_[CTSC2008]网络管理Network_主席树 Description M公司是一个非常庞大的跨国公司,在许多国家都设有它的下属分支机构或部门.为了让分布在世界各地的N个 部门 ...

  4. Windows Ubuntu Bash申请免费通配符证书(Let's Encrypt)并绑定IIS

    什么是 Let’s Encrypt? 部署 HTTPS 网站的时候需要证书,证书由 CA 机构签发,大部分传统 CA 机构签发证书是需要收费的,这不利于推动 HTTPS 协议的使用. Let’s En ...

  5. Description Resource Path Location Type Cannot change version of project facet Dynamic Web Module to 2.3.

    报错信息:Description Resource Path Location Type Cannot change version of project facet Dynamic Web Modu ...

  6. ASP.Net Core Razor+AdminLTE 小试牛刀

    AdminLTE 一个基于 bootstrap 的轻量级后台模板,这个前端界面个人感觉很清爽,对于一个大后端的我来说,可以减少较多的时间去承担前端的工作但又必须去独立去完成一个后台系统开发的任务,并且 ...

  7. 整合X-Admin前端框架改造ABP

    “站在巨人的肩膀上”,这样一来,不要万事亲恭,在值得的方向上节约时间,毕竟人生就这么一次.在接触ABP以来,一直想花点时间整合LayUI前端框架到ABP中,进而能够逐渐打磨出一套适合自己的框架,开发习 ...

  8. 什么是TensorFlow?

    前言 只有光头才能变强. 文本已收录至我的GitHub仓库,欢迎Star:https://github.com/ZhongFuCheng3y/3y 回顾前面: 从零开始学TensorFlow[01-搭 ...

  9. 在已有的Asp.net MVC项目中引入Taurus.MVC

    Taurus.MVC是一个优秀的框架,如果要应用到已有的Asp.net MVC项目中,需要修改一下. 1.前提约定: 走Taurus.MVC必须指定后缀.如.api 2.原项目修改如下: web.co ...

  10. 【学习笔记Part 1 ● Linux】

    本章目标 Linux简介 Linux发展 Linux界面熟悉 Linux常用命令 Linux简介 经常看到的或者熟悉的操作系统: Windows操作系统:Window 10或者Window 7 Mac ...