官网:https://dotnet.github.io/
linux
Net Core Api:nginx
https://docs.microsoft.com/en-us/dotnet/api/?view=netcore-1.1git
https://docs.microsoft.com/en-us/aspnet/core/api/
github
ASP.NET Core 是一个跨平台的高性能开源框架。具备以下优势:docker
ASP.NET Core 彻底做为 NuGet 包的一部分提供。 借助 NuGet 包,能够将应用优化为只包含必需的依赖项。 较小的应用图面区域的优点包括:提高安全性、减小维护和提升性能。数据库
NetCore是一个开源的模块化的Framework,不论是Web或移动设备都在同一个Framework下运行。apache
并且NetCore也能够在不一样的操做系统上运行,包括Windows、Linux、MACOS。实现了跨平台。npm
NetCore在发布程序时不用事先安装NetFramework而是经过Nuget下载。避免下载安装NetFramework编程
如上图所示,NetCore和NetFramework都是Net Standard Library的实现,一种是跨平台,一种是Windows下特有api
Net Standard Library是跨操做系统的关键所在,定义了一组接口,每一个操做系统都有各自的实现。
Net Core经过nuget能够动态下载当前操做系统的实现,从而实现跨操做系统。
Net Core依赖于Nuget,容许本地application在部署时动态下载,比Net Framework更简单快速轻便
Net Core的系统构成,最上层是应用层,用于UI开发。
CoreFX是公共库,实现了Net Standard Library。包括了经常使用的系统级操做。
Net Core包含两种运行时(Core CLR、Core RT),
CoreCLR是一种基于即时编译程序的运行时。使用跨平台开源的编译器RyuJIT,
Core RT是使用提早编译器(AOT)的运行时。既可使用RyuJIT来实现AOT编程也可使用其余编译器。
用于将C#或VB代码编译为程序集(assembly),编译过程是一个管道时的处理过程一共包含4个步骤
1. Parser解析:根据语法对源代码进行解析
2. Declaration声明:为代码生成元数据,元数据是一个数据表的集合,描述了数据类型和成员
3. Bind绑定:将生成的IL代码与描述它的元数据绑定在一块儿,生成托管模块
4. Emit生成:将一个或多个托管模块合并生成程序集
RyuiJIT负责在程序运行中须要执行某一个方法,须要将已经编译好的IL转换成本机的机器码。
新一代的JIT编译器,第一次实现了AMD64的架构。
.Net Core是ASP.NET的一个重要的从新设计。
.Net Core是一个新的开源和跨平台框架,用于构建现代基于云的互联网链接的应用程序。
.Net Core应用程序能够在Net Core或完整的Net Framework上运行。
能够在Windows、Mac、Linux上跨平台开发和运行ASP.NET Core应用程序。在Github上开源
ASP.NET Core彻底做为nuget的一部分,借助nuget包,能够将应用优化为只包含必须的依赖项。
ASP.NET Core 与经常使用的客户端框架和库(包括:Angular、React、BootStrap)无缝集成。
ASP.NET Core由Net Standard库组成。面向Net Core有如下几个优点
使用dotnet命令,能够建立Net Core项目
dotnet new : 直接建立一个 Hello World项目(控制台)
dotnet new -t:能够指定生成项目,Console,Web,Lib,xunittest(例如:dotnet new -t Web)
dotnet restore:还原项目依赖包
dotnet run:执行项目
dotnet ef : 须要添加 Microsoft.EntityFrameworkCore.Tools.DotNet 只能修改csproj文件
<ItemGroup> <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="1.0.0" /> </ItemGroup>
dotnet ef -h:帮助说明
dotnet ef migrations add initial:执行迁移
dotnet ef database update:更新代码到数据库
Startup 提供了应用程序的入口,而且每一个应用程序都存在,充当应用程序的启动点。NetCore会在主程序集中搜索名Startup类。
使用Hosting:Application能够配置键。若是类的命名符合Startup,则会加载它。多个同名类,会根据命名空间加载。
选择其中的一个,匹配项目的根命名空间优先,不然按照字母排列中的命名空间的第一个类。
Configure方法用于指定如何相应每个HTTP请求。更加复杂的管道配置,能够封装 中间件,并扩展到IApplicationBuilder上。
方法必须接受一个IApplicationBuilder参数,能够指定一些额外的服务,IHostingEnvironment、ILoggerFactory。
这些服务会被注入进来
ConfigureServices方法
用来配置用于应用程序内的服务。 经过参数获取一个IServiceCollection实例并可选的返回IServiceProvider。
ConfigureServices须要在Configure方法以前被调用。由于MVC的某些功能须要从ConfigureServices中请求某些服务。
而这些服务须要在接入请求管道以前先被加入CongureServices中。
IServiceCollection中使用扩展方法来包装含有大量配置细节的ConfigureServices。
可以使用 EF、Identity、MVC。经过依赖注入能够将服务加入到服务容器中,使其在容器中可使用。
在这里也可使用默认的依赖注入
services.AddSingleton<ITodoRepository,TodoRepository>();
中间件是用于组成应用程序管道来处理请求和响应的组件。
管道内的每一个组件均可以选择是否将请求交给下一个组件,并在管道中调用下一个组件以前和以后执行某些操做。
请求委托被用来创建请求管道,请求委托处理每个HTTP请求。
经过IApplicationBuilder类型的Run、Map、Use扩展方法来配置,并在Setup类中传给Configure方法。
位于请求管道内的中间件组件负责调用管道中下一个组件,或适时短路调用链。
¥
参考文献:
npm和bower .net Core为什么改变 .net core系列文章
若是咱们引用jQuery或者Bootstrap,会提示让咱们使用Bower,那么介绍一下Bower的概念
Npm和Bower二者都是包管理器,是.Net Core新出的特性。
占位符