ASP.NET Core介绍

ASP.NET Core是一个新的开源和跨平台的框架,用于构建如Web应用、物联网(IoT)应用和移动后端应用等连接到互联网的基于云的现代应用程序。ASP.NET Core应用可运行于.NET Core和完整的.NET Framework之上。构建它的目的是为那些部署在云端或者内部运行的应用提供一个优化的开发框架。它由最小开销的模块化的组件构成,因此在构建解决方法的同时可以保持灵活性。

ASP.NET Core有一些架构上的改变,这些改变使得它成为一个更为精简并且模块化的框架。

通过ASP.NET Core可以获得的改进如下:

  • 统一的方式用于构建Web UI和Web API
  • 集成现代的客户端开发框架和开发流程
  • 适用于云的基于环境的配置系统
  • 内置依赖项注入
  • 轻型高性能模块化HTTP请求管道
  • 能够在IIS上进行托管或在自己的进程中进行自托管
  • 可以在.NET Core上运行,支持真正的并行应用版本控制
  • 简化新式Web开发的工具
  • 能够在Windows、macOS和Linux上进行生成和运行
  • 开源和关注社区

1.ASP.NET Core应用

ASP.NET Core应用其实就是在一个Main方法中创建一个Web服务器的简单控制台应用程序。

  1. using Microsoft.AspNetCore;
  2. using Microsoft.AspNetCore.Hosting;
  3.  
  4. namespace WebApplication
  5. {
  6. public class Program
  7. {
  8. public static void Main(string[] args)
  9. {
  10. CreateWebHostBuilder(args).Build().Run();
  11. }
  12.  
  13. public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
  14. WebHost.CreateDefaultBuilder(args)
  15. .UseStartup<Startup>();
  16. }
  17. }

Main方法调用WebHost.CreateDefaultBuilder,后者按照生成器模式来创建Web应用程序主机。生成器提供定义Web服务器(例如UseKestrel)和启动类(UseStartup)的方法。

IWebHostBuilder是WebHost.CreateDefaultBuilder调用的返回类型,它提供了许多可选方法,包括用于在HTTP.sys中托管应用的UseHttpSys,以及用于指定根内容目录的UseContentRoot。Build和Run方法生成IWebHost对象,该对象托管应用并开始侦听HTTP请求。

2.StartUp

WebHostBuilder的UseStartup方法为你的应用指定Startup类

Startup类可用来定义请求处理管道和配置应用需要的服务。Startup类必须是公开的(public),并且必须包含如下方法:

  1. public class Startup
  2. {
  3. // This method gets called by the runtime. Use this method to add services to the container.
  4. public void ConfigureServices(IServiceCollection services)
  5. {
  6. services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
  7. }
  8.  
  9. // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
  10. public void Configure(IApplicationBuilder app, IHostingEnvironment env)
  11. {
  12. if (env.IsDevelopment())
  13. {
  14. app.UseDeveloperExceptionPage();
  15. }
  16. else
  17. {
  18. app.UseHsts();
  19. }
  20.  
  21. app.UseHttpsRedirection();
  22. app.UseMvc();
  23. }
  24. }

ConfigureServices方法用于定义你的应用所使用的服务(例如,ASP.NET Core MVC、Entity Framework Core、Identity等)。

Configure方法用于定义你的请求管道中的中间件。

3.服务

服务是应用中用于通用调用的组件。服务通过依赖注入获取并使用。ASP.NET Core内置了一个简单的控制反转(IoC)容器,它默认支持构造器注入,并且可以方便地替换成你自己选用的IoC容器。由于它的松耦合特性,依赖注入(DI)使服务在整个应用中都可以使用。

4.中间件

在ASP.NET Core中,你可以使用中间件构建你的请求处理管道。一般来说,要想使用一个中间件,只需在Configure方法里调用IApplicationBuilder上一个对应的UseXXX扩展方法即可。

ASP.NET Core带来了丰富的内置中间件,也可以创建自己的自定义中间件。

5.服务器

ASP.NET Core托管模式并不直接监听请求,而是依赖于一个HTTP Server实现来转发请求到应用程序。

ASP.NET Core包含了一个托管的跨平台Web服务器:Kestrel,它往往会被运行在一个如IIS或者Nginx的生产Web服务器之后。

6.内容根目录

内容根目录是应用程序所用到的所有内容的根路径,比如它的views和web内容。

7.网站根目录

应用程序的Web根目录是项目中类似于CSS、JS和图片文件公开、静态的资源的目录。Web根目录默认为<contentroot>/wwwroot,但是也可以通过WebHostBuilder来指定另外一个地址。

8.配置

ASP.NET Core使用了一个新的配置模型,用来处理简单的键值对。新的配置模型不是基于System.Configuration或者web.config;相反,它是一个有序拉取数据的配置providers。

9.环境

环境,如"Development"和"Production",是ASP.NET Core中的第一级概念,而且它可以使用环境变量来设置。

10.使用ASP.NET Core MVC构建Web UI和Web API

  • 可以使用Model-View-Controller(MVC)模式创建优秀的、可测试的Web应用程序
  • 可以构建支持多种格式并且完全支持内容协商的HTTP服务
  • Razor提供了一种高效的语言,用于创建Views
  • TagHelpers启用服务器端的代码参与到Razor文件的创建和HTML元素渲染
  • 可以使用自定义或者内置的formatters(JSON、XML)来构建完全支持内容协商的HTTP服务
  • Model Binding自动映射HTTP请求中的数据到action方法参数
  • Model Validation自动执行客户端和服务器端验证

ASP.NET Core学习——1的更多相关文章

  1. ASP.NET Core学习系列

    .NET Core ASP.NET Core ASP.NET Core学习之一 入门简介 ASP.NET Core学习之二 菜鸟踩坑 ASP.NET Core学习之三 NLog日志 ASP.NET C ...

  2. WebAPI调用笔记 ASP.NET CORE 学习之自定义异常处理 MySQL数据库查询优化建议 .NET操作XML文件之泛型集合的序列化与反序列化 Asp.Net Core 轻松学-多线程之Task快速上手 Asp.Net Core 轻松学-多线程之Task(补充)

    WebAPI调用笔记   前言 即时通信项目中初次调用OA接口遇到了一些问题,因为本人从业后几乎一直做CS端项目,一个简单的WebAPI调用居然浪费了不少时间,特此记录. 接口描述 首先说明一下,基于 ...

  3. ASP.NET Core学习指导

    ASP.NET Core 学习指导 "工欲善其事必先利其器".我们在做事情之前,总应该做好充分的准备,熟悉自己的工具.就像玩游戏有一些最低配置一样,学习一个新的框架,也需要有一些基 ...

  4. Asp.Net Core学习笔记:入门篇

    Asp.Net Core 学习 基于.Net Core 2.2版本的学习笔记. 常识 像Django那样自动检查代码更新,自动重载服务器(太方便了) dotnet watch run 托管设置 设置项 ...

  5. ASP.NET Core学习零散记录

    赶着潮流听着歌,学着.net玩着Core 竹子学Core,目前主要看老A(http://www.cnblogs.com/artech/)和tom大叔的博客(http://www.cnblogs.com ...

  6. ASP.NET Core学习之三 NLog日志

    上一篇简单介绍了日志的使用方法,也仅仅是用来做下学习,更何况只能在console输出. NLog已是日志库的一员大佬,使用也简单方便,本文介绍的环境是居于.NET CORE 2.0 ,目前的版本也只有 ...

  7. ASP.NET Core学习之一 入门简介

    一.入门简介 在学习之前,要先了解ASP.NET Core是什么?为什么?很多人学习新技术功利心很重,恨不得立马就学会了. 其实,那样做很不好,马马虎虎,联系过程中又花费非常多的时间去解决所遇到的“问 ...

  8. ASP.NET Core学习总结(1)

    经过那么长时间的学习,终于想给自己这段时间的学习工作做个总结了.记得刚开始学习的时候,什么资料都没有,光就啃文档.不过,值得庆幸的是,自己总算还有一些Web开发的基础.至少ASP.NET的WebFor ...

  9. Asp.net Core学习笔记

    之前记在github上的,现在搬运过来 变化还是很大的,感觉和Nodejs有点类似,比如中间件的使用 ,努力学习ing... 优点 不依赖IIS 开源和跨平台 中间件支持 性能优化 无所不在的依赖注入 ...

  10. 2019年ASP.NET Core学习路线

    - [先决条件] + C# + Entity Framework + ASP.NET Core + SQL 基础知识 - [通用开发技能] + 学习 GIT, 在 GitHub 中创建开源项目 + 掌 ...

随机推荐

  1. Python每日一题 003

    将 002 题生成的 200 个激活码(或者优惠券)保存到 MySQL 关系型数据库中. 代码 import pymysql import uuid def get_id(): for i in ra ...

  2. 跨主机网络-overlay(18)

    docker overlay跨主机网络 .环境 docker版本 Docker version -ce, build fc4de44 3台主机 192.168.55.51 host1 192.168. ...

  3. express上传图片

    var express = require('express') var app = express() var proxy = require('http-proxy-middleware') co ...

  4. nodejs操作消息队列RabbitMQ

    一. 什么是消息队列 消息队列(Message Queue,简称MQ),从字面意思上看,本质是个队列,FIFO先入先出,只不过队列中存放的内容是message而已.其主要用途:不同进程Process/ ...

  5. windows2003 disk mirror failed redundency

    操作前請確認 mirror 磁盤已備份 windows2003 disk mirror failed redundency時,offline + online並不可以自動修復. 需要offline f ...

  6. Java第四次作业,面向对象高级特性(继承和多态)

    Java第四次作业-面向对象高级特性(继承和多态) (一)学习总结 1.学习使用思维导图对Java面向对象编程的知识点(封装.继承和多态)进行总结. 2.阅读下面程序,分析是否能编译通过?如果不能,说 ...

  7. angular5引入sass

    angular/cli支持使用sass新建工程:如果是新建一个angular工程采用sass:ng new My_New_Project --style=sass这样所有样式的地方都将采用sass样式 ...

  8. linux CentOS7 安装 Java

    1. http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html先去下载 java 对应的 ...

  9. tex, virtex, initex - 文本格式化和排版

    SYNOPSIS 总览 tex [options] [commands] DESCRIPTION 描述 这份手册页并不全面.此版本的 TeX 完整的文档可以从 info 文件或者手册 Web2C: A ...

  10. 两台群晖之间传输数据NFS

    如何在两台局域网的群晖之间传输数据,可以用NFS的方式来实现.摘抄如下,地址http://www.nasyun.com/thread-64638-1-1.html?reload=true 假设要把群晖 ...