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服务器的简单控制台应用程序。

using Microsoft.AspNetCore;
using Microsoft.AspNetCore.Hosting; namespace WebApplication
{
public class Program
{
public static void Main(string[] args)
{
CreateWebHostBuilder(args).Build().Run();
} public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>();
}
}

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),并且必须包含如下方法:

   public class Startup
{
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
} // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseHsts();
} app.UseHttpsRedirection();
app.UseMvc();
}
}

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. 2018icpc沈阳/gym101955 J How Much Memory Your Code Is Using? 签到

    题意: 给你定义一堆变量,计算一下这些变量共占了多少k内存. 题解: 按题意模拟即可,善用ceil() // // Created by melon on 2019/10/22. // #includ ...

  2. postgreSQL执行计划

    " class="wiz-editor-body wiz-readonly" contenteditable="false"> explain命 ...

  3. Linux中TLS

    TLS(Thread Local Storage) 线程局部存储. 在Linux操作系统中,TLS保存成GDT中描述的一个段. 1: /* 2: * This creates a new proces ...

  4. ACM 中的对拍程序

    所谓对拍,就是随机生成数据,然后用一个肯定正确的暴力算法的程序,去测试一个要提交的程序. 由于比赛中一般使用 Linux 系统,所以本篇博客的代码都是 Linux 下的程序代码. 其实最简单的方式是写 ...

  5. Error configuring application listener of class org.springframework.web.context.

    1.java.lang.NoClassDefFoundError: org/objectweb/asm/ClassVisitor 缺少asm-3.3.jar 2.java.lang.NoClassDe ...

  6. Python测试代理ip是否有效

    方式一: 通过icanhazip.com返回的ip地址进行检测 import requests '''代理IP地址(高匿)''' proxy = { 'http': 'http://117.85.10 ...

  7. python-模块 time, os, sys

    时间模块 和时间有关系的我们就要用到时间模块.在使用模块之前,应该首先导入这个模块. #常用方法 1.time.sleep(secs) (线程)推迟指定的时间运行.单位为秒. 2.time.time( ...

  8. UVALive 4794 Sharing Chocolate

    Sharing Chocolate Chocolate in its many forms is enjoyed by millions of people around the world ever ...

  9. 【Movie】绿皮书

    今天和室友一起去看了<绿皮书>,一部获得奥斯卡的电影. 起初我是没什么太大期望的,纯粹是因为特价票10块钱,加上身边一个小姐姐的力荐. 看完我觉得,啊不愧是奥斯卡电影啊.推荐. 以下可能会 ...

  10. 微服务-熔断器 Hystrix 的原理与使用

    前言 分布式系统中经常会出现某个基础服务不可用造成整个系统不可用的情况, 这种现象被称为服务雪崩效应. 为了应对服务雪崩, 一种常见的做法是手动服务降级. 而Hystrix的出现,给我们提供了另一种选 ...