原文:Introduction to ASP.NET Core
作者:Daniel Roth、Rick Anderson、Shaun Luttin
翻译:江振宇(Kerry Jiang)
校对:许登洋(Seay)、魏美娟(初见)、姚阿勇(Mr.Yao)

ASP.NET Core 是对 ASP.NET 的一次意义重大的重构。本文介绍了 ASP.NET Core 中的一些新概念,并且解释了它们如何帮助你开发现代的 Web 应用程序。

章节:

  • 什么是 ASP.NET Core?

  • 为什么构建 ASP.NET Core?

  • 应用程序剖析

  • Startup

  • 服务(Services)

  • 中间件 (Middleware)

  • 服务器(Servers)

  • 内容根目录(Content root)

  • Web根目录(Web root)

  • 配置(Configuration)

  • 环境(Environments)

  • 使用 ASP.NET Core MVC 构建 web UI 和 web APIs

  • 客户端开发

  • 后续步骤

什么是 ASP.NET Core?

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

为什么构建 ASP.NET Core?

ASP.NET 的首个预览版作为 .NET Framework 的一部分发布于15年前。自那以后数百万的开发者用它开发和运行着众多非常棒的 Web 应用,而且在这么多年之间我们也为它增加和改进了很多的功能。

ASP.NET Core 有一些架构上的改变,这些改变会使它成为一个更为精简并且模块化的框架。ASP.NET Core 不再基于 System.Web.dll 。当前它基于一系列颗粒化的,并且良好构建的 NuGet 包。这一特点能够让你通过仅仅包含需要的 NuGet 包的方法来优化你的应用。一个更小的应用程序接口通过“只为你需要的功能付出”(pay-for-what-you-use)的模型获得的好处包括更可靠的安全性、简化服务、改进性能和减少成本。

通过 ASP.NET Core,你可以获得的改进:

  • 一个统一的方式用于构建 web UI 和 web APIs

  • 集成 现代的客户端开发框架 和开发流程

  • 一个适用于云的,基于环境的 配置系统

  • 内置的 依赖注入

  • 新型的轻量级的、模块化 HTTP 请求管道

  • 运行于 IIS 或者自宿主(self-host)于你自己的进程的能力

  • 基于支持真正的 side-by-side 应用程序版本化的 .NET Core 构建

  • 完全以 NuGet 包的形式发布

  • 新的用于简化现代 web 开发的工具

  • 可以在 Windows 、Mac 和 Linux 上构建和运行跨平台的 ASP.NET 应用

  • 开源并且重视社区

应用程序剖析

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

using System;using Microsoft.AspNetCore.Hosting;namespace aspnetcoreapp{    public class Program{        public static void Main(string[] args)        {            var host = new WebHostBuilder().UseKestrel().UseStartup<Startup>().Build();host.Run();}}
}

Main 调用遵循 builder 模式的 WebHostBuilder ,用于创建一个 web 应用程序宿主。这个 builder 有些用于定义 web 服务器 (如 UseKestrel)和 startup 类型( UseStartup)的方法。在上面的示例中,web 服务器 Kestrel 被启用,但是你也可以指定其它 web 服务器。我们将会在下一节展示更多关于 UseStartup 的内容。WebHostBuilder 提供了一些可选方法,其中包括寄宿在 IIS 和 IIS Express 中的 UseIISIntegration 和用于指定根内容目录的 UseContentRootBuild 和 Run 方法构建了用于宿主应用程序的 IWebHost 然后启动它来监听传入的 HTTP 请求。

Startup

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

public class Program{    public static void Main(string[] args)    {        var host = new WebHostBuilder().UseKestrel().UseStartup<Startup>()//手工高亮.Build();host.Run();}
}

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

public class Startup{    public void ConfigureServices(IServiceCollection services)    {}    public void Configure(IApplicationBuilder app)    {}
}
  • ConfigureServices 定义你的应用所使用的服务(在下面查看 服务(Services) )(例如 ASP.NET MVC Core framework、Entity Framework Core、Identity 等等)

  • Configure 定义你的请求管道中的 中间件(middleware)

  • 更多内容请参考: Application Startup

服务(Services)

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

中间件(Middleware)

在 ASP.NET Core 中,你可以使用 Middleware 构建你的请求处理管道。 ASP.NET Core 中间件为一个 HttpContext 执行异步逻辑,然后按顺序调用下一个中间件或者直接终止请求。一般来说你要使用一个中间件,只需要在 Configure 方法里调用 IApplicationBuilder 上一个对应的 UseXYZ 扩展方法。

ASP.NET Core 带来了丰富的内置中间件:

  • 静态文件(Static files)

  • 路由(Routing)

  • 身份验证(Authentication)

你也可以创建你自己的 自定义中间件。

你也可以在 ASP.NET Core 中使用任何基于 OWIN 的中间件。查看 OWIN 获取更多信息。

服务器(Servers)

ASP.NET Core 托管模式并不直接监听请求;而是依赖于一个 HTTP server 实现来转发请求到应用程序。这个被转发的请求会以一组 feature 接口的形式被包装,然后被应用程序组合到一个 HttpContext中去。 ASP.NET Core 包含了一个托管的跨平台 web 服务器,被称为 Kestrel,它往往会被运行在一个如 IIS 或者 nginx 的生产 web 服务器之后。

内容根目录(Content root)

内容根目录是应用程序所用到的所有内容的根路径,例如它的 views 和 web 内容。内容根目录默认与宿主应用的可执行程序的应用根目录相同;一个替代的地址可以通过 WebHostBuilder 来设置。

Web根目录(Web root)

你的应用的Web根目录(Web root)是你项目中所有公共的、静态的资源,如 css、js 和 图片文件的目录。静态文件中间件将默认只发布 Web 根目录(Web root)和其子目录中的文件。 Web 根目录(Web root)默认为 /wwwroot,但是你也可以通过 WebHostBuilder 来指定另外一个地址。

配置(Configuration)

ASP.NET Core 使用了一个新的配置模型用于处理简单的键值对。新的配置模型并非基于System.Configuration 或者 web.config ;而是从一个有序的配置提供者集合拉取数据。内置的配置提供者支持多种不同的文件格式如(XML,JSON, INI)和用于支持基于环境的配置环境变量。你也可以实现你自己自定义的配置提供者。查看 Configuration 获取更多信息。

环境(Environments)

环境,如 “Development” 和 “Production”,是 ASP.NET Core 中的第一级概念而且它可以设置成使用环境变量。查看 Working with Multiple Environments 获取更多信息。

使用 ASP.NET Core MVC 构建 web UI 和 web APIs

  • 你可以使用 Model-View-Controller(MVC)模式创建优秀的并且可测试的 web 应用程序。查看MVC 和 测试。

  • 你可以构建支持多种格式并且完全支持内容协商的 HTTP 服务。 查看 Formatting

  • Razor 提供了一种高效的语言用于创建 Views

  • Tag Helpers 启用服务器端的代码参与到 - Razor 文件的创建和 HTML 元素渲染

  • 你可以使用自定义或者内置的 formatters (JSON, XML)来构建完全支持内容协商的 HTTP 服务

  • Model Binding 模型绑定 自动的映射 HTTP 请求中的数据到 action 方法参数

  • Model Validation 模型验证 自动的执行客户端和服务器端验证

客户端开发

ASP.NET Core 在设计时已考虑到和各种客户端框架(AngularJS,KnockoutJS 和 Bootstrap)的无缝集成。查看 Client-Side Development 获取更多信息。

相关文章:

  • ASP.NET Core 1.0 入门——了解一个空项目

  • ASP.NET Core 1.0 部署 HTTPS (.NET Framework 4.5.1)

  • .NET Core 1.0、ASP.NET Core 1.0和EF Core 1.0简介

  • 云服务器下ASP.NET Core 1.0环境搭建(包含mono与coreclr)

  • 使用VS Code开发ASP.NET Core 应用程序

  • dotnet run是如何启动asp.net core站点的

  • ASP.NET Core提供模块化Middleware组件

  • “dotnet restore"和"dotnet run"都做了些什么?

  • 探秘 dotnet run 如何运行 .NET Core 应用程序

  • .NET Portability Analyzer 已开源

  • ASP.NET Core的配置(1):读取配置信息

  • ASP.NET Core的配置(2):配置模型详解

  • .NET Core 1.0 RC2 历险之旅

  • 使用VS Code开发 调试.NET Core 应用程序

  • 让我们Core在一起:ASP.NET Core & .NET Core

  • .NET Core VS Code 环境配置

  • 官方博客明确了 .NET Core RC2/RTM 时间表

  • .NET Core全新的配置管理[共9篇]

  • 利用记事本创建一个ASP.NET Core RC2 MVC应用

  • 微软.NET 正式劈腿成功,横跨所有平台

  • .NET Core 1.0 CentOS7 尝试

  • 解读发布:.NET Core RC2 and .NET Core SDK Preview 1

  • [.NET Core].NET Core R2安装及示例教程

  • ASP.NET Core 开发-中间件(Middleware)

  • 结合Jexus + Kestrel 部署 asp.net core 生产环境

  • 通过Jexus 部署 dotnetcore版本MusicStore 示例程序

  • ASP.NET Core 中文文档 第一章 入门

  • 用 Visual Studio Code 在 macOS 上创建首个 ASP.NET Core 应用程序

  • 用 Visual Studio 和 ASP.NET Core MVC 创建首个 Web API

  • 用 Visual Studio 发布一个 Azure 云 Web 应用程序

  • ASP.NET Core MVC 与 Visual Studio 入门

  • 第二章指南(4.2)添加 Controller

  • DotNet Core 介绍

  • asp.net core 中间件详解及项目实战

  • 教你实践ASP.NET Core Authorization(免看文档教程)

  • asp.net core 使用 Redis 和 Protobuf 进行 Session 缓存

  • asp.net core 中间件详解及项目实战

  • 第二章 指南(4.3)添加 View

  • dotnet core开发体验之开始MVC

  • dotnet core 开发体验之Routing

  • 聊聊ASP.NET Core默认提供的这个跨平台的服务器——KestrelServer

  • 简析.NET Core 以及与 .NET Framework的关系

  • .NET Core 使用Dapper 操作MySQL

  • 使用 CommandLineApplication 类创建专业的控制台程序

  • 简析 .NET Core 构成体系

  • .NET Core也可以使用MongoDB了

  • .NET Core & ASP.NET Core 1.0在Redhat峰会上正式发布

  • .NET Core:面向未来的开源跨平台开发技术

  • 微软说它深爱着Linux,现在它用行动证明了

原文地址:http://www.cnblogs.com/dotNETCoreSG/p/aspnetcore-0-intro.html


.NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注

赞赏

人赞赏

ASP.NET Core 介绍相关推荐

  1. ASP.NET Core 介绍和项目解读

    1. 前言 2. ASP.NET Core 简介 2.1 什么是ASP.NET Core 2.2 ASP.NET Core的特点 2.3 ASP.NET Core 项目文件夹解读 2.3.1 项目文件 ...

  2. 1.ASP.NET Core介绍

    优点: 1.跨平台,高性能,开源,运行在.Net Core 或.Net Framework框架上(asp.net core 3.0及以后只支持.Net Core). 2.各平台上开发工具支持,能够开发 ...

  3. ASP.NET Core介绍

    认识ASP.NET Core ASP.NET Core是一个跨平台,高性能,开源的框架,用于构建现代,基于云的网络应用程序,使用ASP.NET Core可以实现: 开发web应用,服务,IoT应用和移 ...

  4. asp向不同的用户发送信息_【asp.net core 系列】 1 带你了解一下asp.net core

    0. 前言 这是一个新的系列,名字是<http://ASP.NET Core 入门到实战>.这个系列主讲http://ASP.NET Core MVC,辅助一些前端的基础知识(能用来实现我 ...

  5. 送福利 | 送书5本《ASP.NET Core项目开发实战入门》带你走进ASP.NET Core开发

    <ASP.NET Core项目开发实战入门>从基础到实际项目开发部署带你走进ASP.NET Core开发. ASP.NET Core项目开发实战入门是基于ASP.NET Core 3.1 ...

  6. ASP.NET Core依赖注入解读使用Autofac替代实现

    1. 前言 关于IoC模式(控制反转)和DI技术(依赖注入),我们已经见过很多的探讨,这里就不再赘述了.比如说必看的Martin Fowler<IoC 容器和 Dependency Inject ...

  7. ASP.NET Core依赖注入解读amp;使用Autofac替代实现

    1. 前言 关于IoC模式(控制反转)和DI技术(依赖注入),我们已经见过很多的探讨,这里就不再赘述了.比如说必看的Martin Fowler<IoC 容器和 Dependency Inject ...

  8. 使用Visual Studio Code开发Asp.Net Core WebApi学习笔记(一)-- 起步

    一.安装Visual Studio Code 安装文件下载地址:VS Code,当前最新版本是1.3. 推荐安装最新版,因为附带Debug插件,支持在vs code上进行断点调试. 二.安装.Net ...

  9. ASP.NET Core 十种方式扩展你的 Views

    原文地址:http://asp.net-hacker.rocks/2016/02/18/extending-razor-views.html 作者:Jürgen Gutsch 翻译:杨晓东(Savor ...

最新文章

  1. 洛谷 P2746 [USACO5.3]校园网Network of Schools
  2. Android APK 签名(图)
  3. iOS 定位功能的实现
  4. SAP Spartacus LockFocusDirective的单步调试
  5. hash table(开放寻址法-线性探查实现的哈希表)
  6. poj 3678 Katu Puzzle(2-sat)
  7. 信息学奥赛一本通 1405:质数的和与积 | OpenJudge NOI 2.1 7827:质数的和与积 | 小学奥数 7827
  8. android asmack调用MultiUserChat.getHostedRooms方法出现空指针的异常解决方案
  9. python测试用例不通过发送报告_pycharm 执行unittest 没有生成测试报告
  10. php递归算法的简单示例,php递归函数 php递归算法经典实例大全 | 帮助信息-动天数据...
  11. word转pdf免费网站
  12. node mysql菜鸟教程_Node.js Web 模块
  13. 超简单的Oracle 数据库安装教程(Oracle安装包)
  14. C语言分数加减乘除化简操作集(含测试源码)
  15. linux 系统的磁盘 mbr 转gpt方法
  16. VisualStudio 如何使用UML呢?(转自简书雨落随风)
  17. 如何在Linux系统下更改系统语言?
  18. FastJson的JSON.isValid()出现BUG!
  19. NPDP产品经理小知识:安索夫矩阵
  20. 【福利继续无套路】整理的一系列IT视频

热门文章

  1. 剑指offer-面试题13.在O(1)时间删除链表节点
  2. 想说爱你不容易 | 使用最小 WEB API 实现文件上传
  3. 2020年CNCF和开源项目开发速度
  4. .net core 下使用StackExchange的Redis库访问超时解决
  5. ML.NET Cookbook:(4)如何调试实验或预览管道?
  6. 在 k8s 中部署 Prometheus 和 Grafana
  7. IdentityServer4系列 | 资源密码凭证模式
  8. 翠香猕猴桃 和 薄皮核桃,快来下单
  9. .Net Core In Docker 在容器内编译并发布
  10. 面试官:你不懂六大设计原则,回去等通知吧!