Net Core学习笔记

Net Core

官网: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 包,能够将应用优化为只包含必需的依赖项。 较小的应用图面区域的优点包括:提高安全性、减小维护和提升性能。数据库

Net Core 与 Net Framework

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构成体系

Net Core的系统构成,最上层是应用层,用于UI开发。

CoreFX是公共库,实现了Net Standard Library。包括了经常使用的系统级操做。

Net Core包含两种运行时(Core CLR、Core RT),

CoreCLR是一种基于即时编译程序的运行时。使用跨平台开源的编译器RyuJIT,

Core RT是使用提早编译器(AOT)的运行时。既可使用RyuJIT来实现AOT编程也可使用其余编译器。

Roslyn编译器

用于将C#或VB代码编译为程序集(assembly),编译过程是一个管道时的处理过程一共包含4个步骤

1. Parser解析:根据语法对源代码进行解析

2. Declaration声明:为代码生成元数据,元数据是一个数据表的集合,描述了数据类型和成员

3. Bind绑定:将生成的IL代码与描述它的元数据绑定在一块儿,生成托管模块

4. Emit生成:将一个或多个托管模块合并生成程序集

RyuJIT编译器

RyuiJIT负责在程序运行中须要执行某一个方法,须要将已经编译好的IL转换成本机的机器码。

新一代的JIT编译器,第一次实现了AMD64的架构。

介绍

.Net Core是ASP.NET的一个重要的从新设计。

.Net Core是一个新的开源和跨平台框架,用于构建现代基于云的互联网链接的应用程序。

.Net Core应用程序能够在Net Core或完整的Net Framework上运行。

能够在Windows、Mac、Linux上跨平台开发和运行ASP.NET Core应用程序。在Github上开源

优势

  • 生成WebUI和WebAPI的统一场景
  • 集成新式客户端框架和开发工做流
  • 基于环境的云就绪配置系统
  • 内置依赖项注入
  • 轻型的高性能模块化HTTP请求管道
  • 可以在IIS、Nginx、Apache、Docker上进行托管或在本身的进程中自托管
  • 定目标到NetCore时,可使用并行应用版本控制
  • 简化新式Web开发的工具
  • 可以在Windows、MacOS、Linux进行生成和运行
  • 开放源代码和更完善的开源社区

ASP.NET Core彻底做为nuget的一部分,借助nuget包,能够将应用优化为只包含必须的依赖项。

使用ASP.NET Core MVC生成WebAPI和WebUI

  • ASP.NET Core MVC提供生成Web API和Web应用所需的功能:
  • MVC模式使WebAPI和Web应用可测试
  • ASP.NET Core 新增Razor页面是基于页面的编程模型,可简化Web UI生成并提升工做小绿绿
  • Razor标记提供了适用于Razor页面和MVC视图的高效语法
  • 标记帮助程序使服务器代码能够在Razor文件中参与建立和呈现HTML元素
  • 内置的多数据格式和内容协商支持使WebAPI可访问多种客户端,包括浏览器和移动设备
  • 模型绑定自动将HTTP请求中的数据映射到操做方法参数
  • 模型验证自动执行客户端和服务端验证

客户端开发

ASP.NET Core 与经常使用的客户端框架和库(包括:Angular、React、BootStrap)无缝集成。

面向Net Framework 的ASP.NET Core

ASP.NET Core由Net Standard库组成。面向Net Core有如下几个优点

  • 跨平台
  • 提升的性能
  • 并行版本控制
  • 新API
  • 开源

使用命令建立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类

Startup 提供了应用程序的入口,而且每一个应用程序都存在,充当应用程序的启动点。NetCore会在主程序集中搜索名Startup类。

使用Hosting:Application能够配置键。若是类的命名符合Startup,则会加载它。多个同名类,会根据命名空间加载。

选择其中的一个,匹配项目的根命名空间优先,不然按照字母排列中的命名空间的第一个类。

Configure方法

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

参考文献:

npm和bower   .net Core为什么改变   .net core系列文章

若是咱们引用jQuery或者Bootstrap,会提示让咱们使用Bower,那么介绍一下Bower的概念

Npm和Bower二者都是包管理器,是.Net Core新出的特性。

 

 

 

 

 

 

 

 

 

占位符

相关文章
相关标签/搜索