下一篇:ASP.NET Core(二):入门

英文原版:Introduction to ASP.NET Core

关于ASP.NET Core

ASP.NET Core 是一个全新的开源、跨平台框架,可以用它来构建基于网络连接的现代云应用程序,比如:Web 应用,IoT(Internet Of Things,物联网)应用和移动后端等。ASP.NET Core可以运行在 .NET Core 或完整的 .NET Framework 之上,其架构为发布到云端或本地运行的应用提供了一个最佳的开发框架,由开销很小的模块化组件构成,这就保持了你构造解决方案的灵活性。你可以跨平台地在Windows、Mac和Linux等设备上开发和运行你的 ASP.NET Core 应用。ASP.NET Core 的源代码已经在 GitHub上托管。

为什么构建ASP.NET Core

第一个 ASP.NET 预览版在15年前(2000年)就已经作为.NET Framework的一部分发布。从那时起,有过成千上万的开发者使用它来构建和运行强大的Web应用。这些年来,我们也对它添加和改进了很多功能。

ASP.NET Core具有大量的架构变动,这使得它显得更加精细和模块化。ASP.NET Core 不再依赖于 System.Web.dll 类型库,取而代之的是一组细粒度、高度分解的 NuGet程序包。这使得你可以按需安装NuGet程序包来优化你的应用。更小的表面积可以让你的应用具有严密的安全性,能够降低维护成本,提高性能,同时在“按使用量付费”的模式中减少开销。

使用 ASP.NET Core,你将获得以下基础改进:

a)     在统一的方案中构建Web UI 和 Web API

b)    集成现代客户端开发框架和工作流

c)     以云就绪环境为基础的配置系统

d)    内置依赖注入

e)     全新、轻量级、模块化的HTTP请求管道

f)      在IIS或在自托管进程中托管应用程序的能力。

g)    以.NET Core为基础,支持并行应用版本控制。

h)    完全以 NuGet 程序包方式分发

i)      一组全新的工具,简化现代Web 开发

j)      在Windows、Mac和Linux等设备上开发和运行 ASP.NET应用

k)     开放源代码和社区聚焦

应用程序解剖

一个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 使用一个遵循生成器模式的 WebHostBuilder来创建Web应用程序宿主。生成器具有定义web服务器(UseKestrel)和指定启动类(UseStartup<Startup>())的方法。 上述示例使用的是 Kestrel Web 服务器,但你可以指定其他类型的Web 服务器。在下一节中将展示更多 UseStartup 相关的信息。WebHostBuilder 提供了大量的选项方法,包括指定宿主为 IIS 和 IIS Express 服务器的 UseIISIntegration,指定内容根目录的 UseContentRoot等。其中Build 和Run方法用于构建 IWebHost的实例,它将被用来挂载应用并开始监听到来的HTTP请求。

启动Startup

WebHostBuilder上的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)
{
}
}

a)     ConfigureServices  定义应用程序中用到的服务(请查看服务)(比如:ASP.NET MVC Core 框架,Entity Framework Core,Identity等等)

b)     Configure     定义请求处理管道中的中间件

c)      查看 应用程序启动 以了解更多信息

服务 Service

服务是应用程序中可共用的组件,通过依赖注入可获得服务实例。ASP.NET Core 内置了简单的控制反转容器(Ioc,Inversion Of Control),默认是支持构造器注入的,但是可以轻松地将它替换为你习惯的IoC容器。除了其松散偶尔的好处,DI(Dependency Injection,依赖注入)还能让服务在整个应用程序中可用。例如,日志记录(Logging)就可以在你应用程序的任何地方可用。查看 依赖注入 以了解更多信息。

中间件 Middleware

在 ASP.NET Core中你将使用中间件来组织你的请求管道。ASP.NET Core 中间件在HttpContext中执行同步逻辑,然后按顺序调用下一个中间件或者直接终止请求。常规情况下,通过Configure方法的IApplicationBuilder调用相应扩展方法UseXYZ就可以“Use”(使用)中间件。

ASP.NET Core 本身预制了一组中间件:

a)     静态文件 Static Files

b)    路由 Routing

c)     认证 Authentication

你还可以创作自己的中间件

你可以在ASP.NET Core 环境中使用任何基于 OWIN的中间件。查看 .NET开放Web 接口(Open Web Interface for .NET,OWIN) 以了解更多信息

服务器 Server

ASP.NET Core宿主模型不会直接监听请求,它依靠HTTP 服务器的实现来转发请求到应用程序。转发的请求被包装成一组功能接口,然后组合成一个应用程序 HttpContext。ASP.NET Core 包含一个名为 Kestrel的托管跨平台Web服务器,通过它你可以在典型的web 服务器产品(比如 IIS或nginx等)上运行应用程序。

内容根目录 Content Root

内容根目录指的是应用程序使用的所有文件的基础路径,比方说它的视图和web内容。默认情况下内容根目录与挂载应用程序的可执行文件的基础目录是相同的。通过 WebHostBuilder可以指定其替代目录。

Web目录 Web Root

应用程序的Web目录就是你项目中存放css、js、图像文件等等公共、静态资源的目录。静态文件中间件默认情况下只对Web目录及其子目录下的文件起作用。默认的Web目录是 <内容根目录>/wwwroot,但是你可以通过 WebHostBuilder 将其指定为其他目录。

配置 Configuration

ASP.NET Core使用一个新的配置模型来处理简单的名/值对。新的配置模型并不依赖于 System.Configuration 和 Web.config,取而代之的是,它从已排序的配置提供器(Configuration Provider)集合拉取配置。内置的配置提供器支持多种文件格式(XML,JSON,INI),还支持环境变量,这样就可以使用基于环境的配置了。你还可以编写自定义配置提供器。

查看 配置 以了解更多信息。

环境 Environment

比如“开发环境”和“生产环境”,这些在 ASP.NET Core 中都是一流概念,并且可以通过环境变量设置。查看 在多重环境中工作(Working with Multiple Environments) 以了解更多信息。

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

a)     你可以创建遵循MVC模式的高度分解、可测试的Web应用程序。查看 MVC 和 测试 以了解更多信息

b)    你可以构建支持多种格式、完全支持内容协商的 HTTP 服务。查看 格式化响应数据 以了解更多信息

c)     Razor 提供了产出性语言来创建视图

d)    Tag 帮助器(Tag Helpers)允许服务端代码在Razor文件中参与创建和呈现 HTML元素

e)     通过自定义或内置的格式化器(JSON,XML),你可以创建完全支持内容协商的HTTP服务。

f)      模型绑定能够自动将HTTP请求参数映射为操作方法参数

g)    模型验证能够自动执行客户端和服务端验证

客户端开发 Client-side development

ASP.NET Core被设计来无缝集成大量客户端框架,包括 AngularJS,KnockoutJS和Bootstrap。查看 客户端开发 以了解更多信息。

下一篇:ASP.NET Core(二):入门

ASP.NET Core (一):简介的更多相关文章

  1. asp.net core mvc简介

    MVC 通常而言,我们使用.NET Core MVC 构建网页应用与 API,MVC是使用模型-视图-控制器(Model-View-Controller)设计模式. 创建项目 使用如下命令创建一个名称 ...

  2. ASP.NET Core Caching简介

    在.NET Core中提供了Caching的组件.目前Caching组件提供了三种存储方式: Memory Redis SQLSever 1.Memeor Caching 新建一个ASP.NET Co ...

  3. 《ASP.NET Core In Action》读书笔记系列三 ASP.NET Core如何处理请求的?

    在本节中,您将看到ASP.NET Core应用程序如何运行的,从请求URL开始到页面呈现在浏览器中. 为此,您将看到 一个HTTP请求在Web服务器中是如何被处理的.ASP.NET Core如何扩展该 ...

  4. asp.net core系列 70 即时通迅-WebSocket+Redis发布订阅

    一.概述 在asp.net core 中可以用WebSocket 或asp.net core SignalR来开发即时通迅.在项目中由于开发前后端分离,对于SignalR前端技术人员不想依赖juqer ...

  5. asp.net core react 项目实战(一)

    asp.net-core-react asp.net core react 简介 开发依赖环境 .NET Core SDK (reflecting any global.json): Version: ...

  6. ASP.NET Core 3.0 入门

    原文:ASP.NET Core 3.0 入门 课程简介 与2.x相比发生的一些变化,项目结构.Blazor.SignalR.gRPC等 课程预计结构 ASP.NET Core 3.0项目架构简介 AS ...

  7. ASP.Net Core 3.1 使用实时应用SignalR入门

    参考文章:微软官方文档:https://docs.microsoft.com/zh-cn/aspnet/core/signalr/introduction?view=aspnetcore-3.1 和 ...

  8. ASP.NET Core 3.1 中间件

    参考微软官方文档 : https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/middleware/?view=aspnetcore-3.1 ...

  9. ASP.NET Core 6 从入门到企业级实战开发应用技术汇总

    系列目录     [已更新最新开发文章,点击查看详细] 本系列博客主要介绍.NET6相关技术,从基础入门.进阶提升到高级升华,最后通过一个企业级项目实战来检验技术应用能力.把个人技术与经验分享出来,抛 ...

  10. ASP.NET Core 1.1 简介

    ASP.NET Core 1.1 于2016年11月16日发布.这个版本包括许多伟大的新功能以及许多错误修复和一般的增强.这个版本包含了多个新的中间件组件.针对Windows的WebListener服 ...

随机推荐

  1. ORA-20000: ORU-10027: buffer overflow, limit of 10000 bytes

        要用dbms_output.put_line来输出语句,遇到以下错误: ERROR 位于第 1 行: ORA-20000: ORU-10027: buffer overflow, limit ...

  2. HDU 1089 A+B for Input-Output Practice (I)

    #include <cstdio> int main() { int a,b; while(scanf("%d%d",&a,&b)!=EOF) prin ...

  3. zend framework多模块配置

    上次接触zend framework已经很久远了,10年的事情了.最近在做一个项目,时间不紧,就又把ZF拿出来折腾.而我发现以前做ZF的记忆已经在我脑中如梦幻泡影,消失无踪,为了配置多模块还又去查了资 ...

  4. 开发板-PC机(宿主机)-虚拟机(VM)之间网络通信设置方法及须要注意的问题

    1.不使用路由器交换机 硬件连接: 使用网线将开发板和PC机相连 串口线将PC机和开发板相连 使用命令: ifconfig -a 串口控制端查看开发板的网络配置 route -n 串口控制端查看开发板 ...

  5. hadoop学习;安装jdk,workstation虚拟机v2v迁移;虚拟机之间和跨物理机之间ping网络通信;virtualbox的centos中关闭防火墙和检查服务启动

    JDK 在Ubuntu下的安装 与 环境变量的配置 前期准备工作: 找到  JDK 和 配置TXT文件  并拷贝到桌面下  不是目录 而是文件拷贝到桌面下 以下的命令部分就直接复制粘贴就能够了 1.配 ...

  6. Duplicate entry &#39;97112&#39; for key 1

    1.错误描写叙述 2014-07-08 10:27:13,939 ERROR(com.you.conn.JDBCConnection:104) -com.mysql.jdbc.exceptions.j ...

  7. 【SqlServer数据类型、C#数据类型、SqlDbType】对应关系及转换

    // sql server数据类型(如:varchar)// 转换为SqlDbType类型public static SqlDbType SqlTypeString2SqlType(string sq ...

  8. FreeCodeCamp:Title Case a Sentence

    要求: 确保字符串的每个单词首字母都大写,其余部分小写. 像'the'和'of'这样的连接符同理. 结果: titleCase("I'm a little tea pot") 应该 ...

  9. Xcode之外的文档浏览工具--Dash (在iOS代码库中浏览本帖)

    链接地址:http://www.cocoachina.com/bbs/read.php?tid=273479 Xcode之外的文档浏览工具--Dash    (在iOS代码库中浏览本帖)       ...

  10. Hadoop2.6 Ha 安装

    Hadoop 2.6安装文档 版本说明:hadoop 2.6  linux-64位 Zookeeper3.4.6 jdk 1.7.0_75 1.       Ssh无密码 ssh-keygen vim ...