Net Core

官网:https://dotnet.github.io/

Net Core Api:

https://docs.microsoft.com/en-us/dotnet/api/?view=netcore-1.1

https://docs.microsoft.com/en-us/aspnet/core/api/

简介

ASP.NET Core 是一个跨平台的高性能开源框架。具有如下优点:

ASP.NET Core 完全作为 NuGet 包的一部分提供。 借助 NuGet 包,可以将应用优化为只包含必需的依赖项。 较小的应用图面区域的优势包括:提升安全性、减少维护和提高性能。

Net Core 与 Net Framework

NetCore是一个开源的模块化的Framework,不管是Web或移动设备都在同一个Framework下运行。

而且NetCore也可以在不同的操作系统上运行,包括Windows、Linux、MACOS。实现了跨平台。

NetCore在发布程序时不用事先安装NetFramework而是通过Nuget下载。避免下载安装NetFramework

如上图所示,NetCore和NetFramework都是Net Standard Library的实现,一种是跨平台,一种是Windows下特有

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文件

  1. <ItemGroup>
  2. <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="1.0.0" />
  3. </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新出的特性。

占位符

Net Core学习笔记的更多相关文章

  1. .NET CORE学习笔记系列(2)——依赖注入[7]: .NET Core DI框架[服务注册]

    原文https://www.cnblogs.com/artech/p/net-core-di-07.html 包含服务注册信息的IServiceCollection对象最终被用来创建作为DI容器的IS ...

  2. .NET CORE学习笔记系列(2)——依赖注入[6]: .NET Core DI框架[编程体验]

    原文https://www.cnblogs.com/artech/p/net-core-di-06.html 毫不夸张地说,整个ASP.NET Core框架是建立在一个依赖注入框架之上的,它在应用启动 ...

  3. .NET CORE学习笔记系列(2)——依赖注入[5]: 创建一个简易版的DI框架[下篇]

    为了让读者朋友们能够对.NET Core DI框架的实现原理具有一个深刻而认识,我们采用与之类似的设计构架了一个名为Cat的DI框架.在上篇中我们介绍了Cat的基本编程模式,接下来我们就来聊聊Cat的 ...

  4. .NET CORE学习笔记系列(2)——依赖注入[4]: 创建一个简易版的DI框架[上篇]

    原文https://www.cnblogs.com/artech/p/net-core-di-04.html 本系列文章旨在剖析.NET Core的依赖注入框架的实现原理,到目前为止我们通过三篇文章从 ...

  5. .NET CORE学习笔记系列(2)——依赖注入【3】依赖注入模式

    原文:https://www.cnblogs.com/artech/p/net-core-di-03.html IoC主要体现了这样一种设计思想:通过将一组通用流程的控制权从应用转移到框架中以实现对流 ...

  6. .NET CORE学习笔记系列(2)——依赖注入【2】基于IoC的设计模式

    原文:https://www.cnblogs.com/artech/p/net-core-di-02.html 正如我们在<控制反转>提到过的,很多人将IoC理解为一种“面向对象的设计模式 ...

  7. .NET CORE学习笔记系列(2)——依赖注入【1】控制反转IOC

    原文:https://www.cnblogs.com/artech/p/net-core-di-01.html 一.流程控制的反转 IoC的全名Inverse of Control,翻译成中文就是“控 ...

  8. .NET Core学习笔记(7)——Exception最佳实践

    1.为什么不要给每个方法都写try catch 为每个方法都编写try catch是错误的做法,理由如下: a.重复嵌套的try catch是无用的,多余的. 这一点非常容易理解,下面的示例代码中,O ...

  9. .net core学习笔记,组件篇:服务的注册与发现(Consul)初篇

    1.什么是服务注册中心? 在学习服务注册与发现时,我们要先搞明白到底什么是服务注册与发现. 在这里我举一个生活中非常普遍的例子——网购来简单说明,网购在我们日常生活中已经是非常普遍了,其实网购中的(商 ...

  10. Asp.Net Core学习笔记:入门篇

    Asp.Net Core 学习 基于.Net Core 2.2版本的学习笔记. 常识 像Django那样自动检查代码更新,自动重载服务器(太方便了) dotnet watch run 托管设置 设置项 ...

随机推荐

  1. 【[TJOI2014]上升子序列】

    这本质上是一个\(dp\) 如果没有"两个上升子序列相同,那么只需要计算一次"这一个性质,那么就很好做了,我们用\(dp[i]\)表示以\(i\)结尾的上升子序列个数,那么就有\( ...

  2. 【CSS单位】px、em、rem

    1.PX为单位 在Web页面初期制作中,我们都是使用“px”来设置我们的文本,因为他比较稳定和精确.但是这种方法存在一个问题,当用户在浏览器中浏览我们制作的Web页面时,他改变了浏览器的字体大小,这时 ...

  3. WEB测试—功能测试

    1. 链接测试        1.1 测试点: 是否添加链接 链接页面是否存在 链接页面与需求是否一致:页面的正确性.打开方式 等              一般,该链接测试在集成测试阶段(页面均开发 ...

  4. CPP-基础:临界区

    VC windows api 多线程---临界区 临界区(Critical Section)是一段独占对某些共享资源访问的代码,在任意时刻只允许一个线程对共享资源进行访问.如果有多个线程试图同时访问临 ...

  5. java中printf的用法

    目前printf支持以下格式:           %c        单个字符           %d        十进制整数           %f        十进制浮点数        ...

  6. 分享一个可下拉刷新的ScrollView

    原理:就是动态改变ScrollView header的margin实现 主要的代码: http://blog.csdn.net/swust_chenpeng/article/details/39289 ...

  7. Android杀死进程方法

    1. android.os.Process.killProcess(pid) 只能终止本程序的进程,无法终止其它的 具体代码如下: ?12 Process.killProcess(Process.my ...

  8. uiwebview与objective-c

    利用oc调用js很简单, 系统直接提供了方法stringByEvaluatingJavaScriptFromString [webView stringByEvaluatingJavaScriptFr ...

  9. Knowledge Point 20180305 十进制转换成二进制浮点数

    如何将十进制的浮点数 转换二进制的浮点数,分为两部分: 1. 先将整数部分转换为二进制, 2. 将小数部分转换为二进制, 然后将整数部分与小数部分相加. 以 20.5 转换为例,20转换后变为1010 ...

  10. MyBatis之Mapper XML 文件详解(三)-Result Maps

    resultMap 元素是 MyBatis 中最重要最强大的元素.它就是让你远离 90%的需要从结果 集中取出数据的 JDBC 代码的那个东西, 而且在一些情形下允许你做一些 JDBC 不支持的事 情 ...