.NET Core学习之路
1.NET Core环境搭建
安装.NET Core:
.NET Core 包括.NET Core Runtime 和 .NET Core SDK:
- NET Core = 应用运行依赖的 .NET Core Runtime
- NET Core SDK = 使用.NET Core开发应用.NET Core Runtime 和 SDK+CLI(Software Development Kit/Command Line Interface) 工具
下载地址请到dotnet官方网站dot.net (dot net),非常的好记,这个网站也是你入门学.NET Core的入口网站,记住这是个必须要去网站。.NET Core 下载的具体地址:https://www.microsoft.com/net/download#core,这里还列出了注意事项:
a.虽然.NET Core Runtime 和基础库已经1.0 RTM,但是开发工具链(.NET Core CLI,Visual studio 和Visual Studio Code) 还是预览版,具体可以参看https://blogs.msdn.microsoft.com/dotnet/2016/05/06/net-core-rc2-improvements-schedule-and-roadmap/
b.在Windows Servers上部署应用 ,可以单独安装ASP.NET Core Module for IIS 而不需要安装.NET Core runtime,可以通过命令行DotNetCore.1.0.0-WindowsHosting.exe OPT_INSTALL_REDIST=0
c.Mac 系统的最低要求是macOS 10.11 (El Capitan)
d..NET Core 在Red Hat 系列服务器上支持的要 RHEL 7 Server,包括CentOS 7 以上,具体参看 https://access.redhat.com/documentation/en/dot-net-core/
e..NET Core 在Ubuntu上面的支持 需要 Ubuntu 14.04 LTS 和 Ubuntu 16.04 LTS
f.如果之前安装了.NET Core的beta,rc1,rc2的版本,在安装之前需要把他们卸载掉,具体参见 stack overflow 的文章。
.NET Core 的具体安装方法可以参看文章 .Net Core 系列:1、环境搭建。
还有Core的CLI命令请参照张大大的博客:.NET Core 环境搭建和命令行CLI入门
上面一段也是摘自张大大的博客,总结的比我好太多了。
2.NET Core基本介绍
2.1 什么是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上托管。
2.2 ASP.NET Core的改进
1) 在统一的方案中构建Web UI 和 Web API
2) 集成现代客户端开发框架和工作流
3) 以云就绪环境为基础的配置系统
4) 内置依赖注入
5) 全新、轻量级、模块化的HTTP请求管道
6) 在IIS或在自己托管进程中托管应用程序的能力。
7) 以.NET Core为基础,支持并行应用版本控制。
8) 完全以 NuGet 程序包方式分发
9) 一组全新的工具,简化现代Web 开发
10) 在Windows、Mac和Linux等设备上开发和运行 ASP.NET应用
11) 开放源代码和社区聚焦
2.3 ASP.NET Core 项目解读
如上图:一个ASP.NET Core应用其实就是一个简单的控制台应用程序,只是它在Main方法中创建了一个 Web 服务器而已,
using System.IO;
using Microsoft.AspNetCore.Hosting; namespace ProgrammersLiveShow
{
/// <summary>
/// 系统初始化信息
/// </summary>
/// 修改记录:
public class Program
{
public static void Main(string[] args)
{
var host = new WebHostBuilder()
.UseKestrel()
.UseContentRoot(Directory.GetCurrentDirectory())
.UseIISIntegration()
.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方法用来指定你的应用程序的启动类。
该类是定义请求处理管道的地方,也是配置应用需要的服务的地方。Startup类必须是public的,而且必须包含ConfigureServices(IServiceCollection services)和Configure(IApplicationBuilder app)方法。
a) ConfigureServices 定义应用程序中用到的服务(比如:ASP.NET MVC Core 框架,Entity Framework Core,Identity等等)
b) Configure 定义请求处理管道中的中间件
Startup 类的 执行顺序:构造 -> configureServices->configure
。
详情请参考:Startup 和 Middleware(中间件),总结的很不错。
project.json
{
"dependencies": {
"Microsoft.NETCore.App": {
"version": "1.0.0",
"type": "platform"
},
"Microsoft.AspNetCore.Diagnostics": "1.0.0",
"Microsoft.AspNetCore.Server.IISIntegration": "1.0.0",
"Microsoft.AspNetCore.Server.Kestrel": "1.0.0",
"Microsoft.Extensions.Logging.Console": "1.0.0"
},
"tools": {
"Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.0.0-preview2-final"
},
"frameworks": {
"netcoreapp1.0": {
"dependencies": {
"Pls.Service": {
"target": "project"
}
},
"imports": [
"dotnet5.6",
"portable-net45+win8"
]
}
},
"buildOptions": {
"emitEntryPoint": true,
"preserveCompilationContext": true
},
"runtimeOptions": {
"configProperties": {
"System.GC.Server": true
}
},
"publishOptions": {
"include": [
"wwwroot",
"Views",
"appsettings.json",
"web.config",
"Areas",
"nlog.config"
],
"exclude": [ "bin" ]
}
}
具体的解释请看 project.json 引用(中文版的适合英语不好的人翻翻看)。我挑几个上面用到的解释解释:
dependencies:依赖项,定义项目的包依赖项的一个对象,此对象的每个键是包名称,每个值包含版本信息。有关详细信息,请参阅 NuGet 文档站点上的 依赖项解析文章,类型是Object。
tools:定义用作当前项目工具(而不是用作引用)的包依赖项的一个对象。 此处定义的包可用于生成过程中运行的脚本,但不可访问项目自身的代码,类型是Object。
frameworks:框架,指定此项目支持的框架,如 .NET Framework 或通用 Windows 平台 (UWP)。 必须是有效的目标框架名字对象 (TFM)。 每个值都是一个对象,可以包含特定于此框架的信息以及以下各部分中的属性,类型是Object
target:限制依赖项以仅匹配
project
或package,类型是String
buildOptions:其属性控制编译各个方面的一个对象。 下面列出了有效属性。 也可以按框架部分中所述目标框架进行指定,类型是Object。
runtimeOptions:指定在初始化期间向运行时提供的参数,类型是Object。
configProperties:包含用于配置运行时和框架的配置属性,类型是Object。
System.GC.Server:若要启用服务器垃圾回收,则为
true
;否则为false
。 默认值为false
。emitEntryPoint:若要创建可执行文件,则为
true
;否则为false
。 默认值为false
。preserveCompilationContext:若要保留引用程序集和其他上下文数据以实现运行时编译,则为
true
;否则为false
。 默认值为false
。publishOptions:包含编译配置的属性的一个对象,类型是 Object。
include:包含文件以及文件夹,类型是String 或带有通配模式的 String[]。
exclude:指定要从生成中排除的文件,类型是String 或带有通配模式的 String[]。
初心商城:初心商城 MVC/.NET群:159227188
.NET Core学习之路的更多相关文章
- .Net Core 学习之路-基础
.Net Core出来好久了,一直在了解,但始终没有应用到实际项目中.... 准备用.net core搞个SSO,才发现它和.net framework的变化并不是一点点... .net core还在 ...
- .Net Core 学习之路-AutoFac的使用
本文不介绍IoC和DI的概念,如果你对Ioc之前没有了解的话,建议先去搜索一下相关的资料 这篇文章将简单介绍一下AutoFac的基本使用以及在asp .net core中的应用 Autofac介绍 组 ...
- 中小研发团队架构实践之生产环境诊断工具WinDbg 三分钟学会.NET微服务之Polly 使用.Net Core+IView+Vue集成上传图片功能 Fiddler原理~知多少? ABP框架(asp.net core 2.X+Vue)模板项目学习之路(一) C#程序中设置全局代理(Global Proxy) WCF 4.0 使用说明 如何在IIS上发布,并能正常访问
中小研发团队架构实践之生产环境诊断工具WinDbg 生产环境偶尔会出现一些异常问题,WinDbg或GDB是解决此类问题的利器.调试工具WinDbg如同医生的听诊器,是系统生病时做问题诊断的逆向分析工具 ...
- [原创]java WEB学习笔记54:Struts2学习之路---概述,环境的搭建
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- OpenGL学习之路(一)
1 引子 虽然是计算机科班出身,但从小对几何方面的东西就不太感冒,空间想象能力也较差,所以从本科到研究生,基本没接触过<计算机图形学>.为什么说基本没学过呢?因为好奇(尤其是惊叹于三维游戏 ...
- OpenGL学习之路(四)
1 引子 上次读书笔记主要是学习了应用三维坐标变换矩阵对二维的图形进行变换,并附带介绍了GLSL语言的编译.链接相关的知识,之后介绍了GLSL中变量的修饰符,着重介绍了uniform修饰符,来向着色器 ...
- OpenGL学习之路(五)
1 引子 不知不觉我们已经进入到读书笔记(五)了,我们先对前四次读书笔记做一个总结.前四次读书笔记主要是学习了如何使用OpenGL来绘制几何图形(包括二维几何体和三维几何体),并学习了平移.旋转.缩放 ...
- springboot 学习之路 4(日志输出)
目录:[持续更新.....] spring 部分常用注解 spring boot 学习之路1(简单入门) spring boot 学习之路2(注解介绍) spring boot 学习之路3( 集成my ...
- 微服务框架surging学习之路——序列化 (转载https://www.cnblogs.com/alangur/p/10407727.html)
微服务框架surging学习之路——序列化 1.对微服务的理解 之前看到在群里的朋友门都在讨论微服务,看到他们的讨论,我也有了一些自己的理解,所谓微服务就是系统里的每个服务都 可以自由组合.自由组 ...
随机推荐
- [shell基础]——变量
变量的赋值 #定义变量,注意等号两边没有任何空格 variable=#定义环境变量export variable= #双引号:可含空格.可转义特殊字符 variable=" " # ...
- Truncated incorrect DOUBLE value: 'NO_REFUND'
解决办法:Mysql中,如果一个字段是字符串,则一定要加单引号 问题原因: `item_refund_state` ) NOT NULL item_refund_state字段的类型是varchar但 ...
- AngularJS的日期格式化去掉秒
<td>订单创建时间:{{item.odatetime.substring(0,16)}}</td>
- Vue-Render函数理解示例
对应文档节点: https://vuefe.cn/v2/guide/render-function.html#Slots <body> <div id="app" ...
- split 将字符串分割成字符串数组
list_name = list_name.split(","); split() 方法用于把一个字符串分割成字符串数组. 语法 stringObject.split(separa ...
- springboot mybatis 使用多数据源
SpringBoot系列博客目录,含1.5.X版本和2.X版本 springboot2.0正式版发布之后,很多的组件集成需要变更了,这次将多数据源的使用踩的坑给大家填一填.当前多数据源的主要为主从库, ...
- springboot aop使用介绍
第一步:添加依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId&g ...
- Boxlayout中button改变大小
需要先设置maximunsize neuStart.setBorder(BorderFactory.createRaisedBevelBorder()); neuStart.setMaximumSiz ...
- cookie初探——封装和使用cookie(内含彩蛋)
一.什么是cookie? 页面用来保存信息,如:自动登录.记住用户名 二.cookie的特性1.同一个网站中所有页面共享一套cookie2.数量.大小有限3.有过期时间 三.js中使用cookie d ...
- java TreeSet 实现存自定义不可重复数据
本文主要是介绍一下java集合中的比较重要的Set接口下的可实现类TreeSet TreeSet类,底层用二叉树的数据结构 * 集合中以有序的方式插入和抽取元素. * 添加到TreeSet中的元素必须 ...