1. 媒介
.NET刊行至今已过了十四个岁首。跟着版本的不停迭代更新,.NET在Windows平台上的表现也是越来越好,能够说Windows平台上一切的运用范例.NET险些都能完成。
只是成也Windows,败也Windows,这十四年来,除了部份“民间”版本,.NET一向没能在官方支撑下挣脱Windows平台的范围,“开源”和“跨平台”这两个词语也是一切.NET开辟者心中的痛苦。终究,.NET Core涌现了,它让开辟者们在官方和社区的支撑走出了Windows,能够在macOS,Linux主流distributions上编写调试并布置.NET顺序。
2. .NET Core 简介
2.1 .NET Core是什么
.NET Core是一个开源通用的开辟框架,支撑跨平台,即支撑在Window,macOS,Linux等体系上的开辟和布置,而且能够在硬件装备,云效劳,和嵌入式/物联网计划中举行运用。.NET Core的源码放在GitHub上,由微软官方和社区配合支撑。
它和传统的.NET Framework,属于“子集—超集”的关联,或许你也能够简朴地以为它就是.NET Framework的跨平台版本(基于BCL的层面上看)。这是由于在当前版本中(1.0),.NET Core中的大部份中心代码都是从.NET Framework中继承重写的,包括Runtime和Libraries(如GC, JIT, 部份范例)。
吐槽:只能谢谢微软《CLR via C#》不必白看呀,我之前看了得有小半年才看完
如今的.NET Core 1.0版本是一个很小的中心,APIs和东西也并不完全,然则跟着.Net Core的不停完善,补充的Apis和立异也会一同整合到.NET Framework中。也就是说,.NET Core微软会同时更新.NET Framework和.NET Core,他们就像俩兄弟,通力合作致富(致谁的富?固然是.NET开辟者们),完成所谓的天下大同,也就是.NET 规范2.0
这里不能不提到一个叫做.NET Standard Library观点。作为.NET平台APIs开辟官方支撑规范,它请求一切的.NET框架APIs都遵照向下兼容。比如说.NET Framwork 4.6支撑.NET Standard Library 1.3,.NET Framwork 4.6.2框架支撑.NET Standard Library 1.5,而.NET Core 1.0框架支撑1.6规范。
终究瞻望以下:
2.2 .NET Core的构成
①.NET Runtime
即CoreCLR。如之前所说,CoreCLR与.NET Framework的CLR并没有什么区别,历程治理,GC,JIT(RyuJIT 编译器)这些部份也都是一样的,只是针对效劳器体系做了响应优化。如今CLR和CoreCLR也在举行同步更新,只是能够一定的是,CoreCLR才是.NET的将来,CLR将作为兼容手腕而存在
②Framework Libraries,
即CoreFX。包括鸠合类,文件体系处置惩罚类,XML处置惩罚类,异步Task类等
③SDK Tools 和 Language Compilers (SDK东西和编译器)
即CLI东西和Roslyn编译器。能够经由过程.NET Core SDK(.NET Core开辟东西包)猎取。
④dotnet'app host
用来拔取并实行对应运转时,供应组件载入准绳和启动.NET Core运用顺序。SDK也是经由过程雷同顺序启动。
Tips:是不是是想起了MSCorEE.dll这个垫片,它一样承载着Windows平台上为.NET运用顺序挑选CLR版本的事情
2.3 .NET Core的特征
①跨平台
能够在Windows,macOS,Linux上运转
②天真的布置机制
1.Portable applications(便携式运用)
这类布置机制和传统的.NET Framework类似,只需目的平台上存在.NET Core Runtime即可。
2.Self-contained application(自宿主运用)
望文生义,这类布置机制将运用和运转时配合打包,即使目的平台上没有装置.NET Core Runtime也能一般运用
第二种体式格局和.NET Native也是不一样的,依然运用CoreCLR,而.NET Native运用CoreRT作为运转时,细致信息请见dotnet/corert
③敕令行东西
.NET顺序一切的运转剧本都能够用敕令行东西实行(cmd,bash)这里有几个罕见的donnet敕令
指令 | 协助 |
---|---|
dotnet new | 发生新的基础 .NET 项目内容 (包括 project.json、Program.cs 以及 NuGet.config |
dotnet restore | 复原所参考的 NuGet 包 |
dotnet build | 制作 .NET 项目 |
dotnet publish | 发生可刊行的 .NET 项目 (包括所属的 Runtime) |
dotnet run | 编译与马上运转 .NET 项目 (较适用于 exe 型项目) |
dotnet repl | 指导交互式的对话 |
dotnet pack | 将项目的产出封装成 NuGet 包 |
④兼容性
经由过程.NET Standard Library与.NET Framework,Xamarin,Mono兼容
⑤开源
.NET Core从属于.NET基金会,由微软举行官方支撑。运用MIT和Apache 2开源协定,文档协定遵照CC-BY
2.4 开辟言语
.NET Core 1.0版本中支撑的编程言语唯一C#(F#和VB暂未完成),这里还要提到一个开源的言语编译器Roslyn,它担任将代码编译成我们熟习的IL言语,然后再借由AOT或JIT编译器编译成机械熟习的机械言语。
3. Get Started
以下内容演示在Windows10和CentOS 7.2下的敕令行生成和宣布demo
3.1 Win 10
3.1.1 装置.NET Core SDK和.NET Core Runtime
.NET Core SDK = 运用.NET Core开辟运用.NET Core Runtime 和 SDK+CLI 东西
3.1.2 简朴的运转效果
翻开cmd,顺次输入mkdir .project(建立目次),cd .\.project(进入目次),dotnet new(新建初始项目),dotnet restore(复原依靠),dotnet run(运转)即可运转第一个Hello World顺序
3.2 CentOS 7.2(当地Hyper-V)
3.2.1 装置和运转
概况请见:www.microsoft.com/net/core#windowsvs2015,大抵敕令以下
sudo yum install libunwind libicu #装置libunwind,libicu包 curl -sSL -o dotnet.tar.gz https://go.microsoft.com/fwlink/?LinkID=809131 #下载dotnet-dev-centos-x64.1.0.0-preview2-003121.tar文件,有时会由于收集题目下载较慢,耐烦守候即可,固然也能够手动下载后放到目次下。 sudo mkdir -p /opt/dotnet && sudo tar zxf dotnet.tar.gz -C /opt/dotnet #建立目次并解压已下载文件 sudo ln -s /opt/dotnet/dotnet /usr/local/bin #将目次链接到$PATH下,不然dotnet敕令没法辨认 mkdir hwapp cd hwapp dotnet new #建立默许.NET Core运用 dotnet restore #复原依靠包 dotnet run #运转,效果将显现Hello World!
第六行敕令后可运用dotnet --info检察是不是链接胜利,显现以下
.NET Command Line Tools (1.0.0-preview2-003121) Product Information: Version: 1.0.0-preview2-003121 Commit SHA-1 hash: 1e9d529bc5 Runtime Environment: OS Name: centos OS Version: 7 OS Platform: Linux RID: centos.7-x64
以上步骤在.NET Core官方网站都能够找到,能够看到运用在经由简朴的dotnet new, dotnet restore, dotnet run敕令后就跑起来了,然则这实际上是类似于开辟环境中的调试运转,而且win上new的运用此时也不能直接跨平台到Linux下运转,所以我们又得提到dotnet publish敕令了
3.2.2 Self-contained applications 宣布
(1) 修正project.json文件
我们如今win10下根据步骤new一个新的HW控制台运用self,根据官方文档请求,我们需要用以下内容替代本来project.json文件(删除"type": "platform",并增添runtimes节点)
{ "version": "1.0.0-*", "buildOptions": { "debugType": "portable", "emitEntryPoint": true }, "dependencies": {}, "frameworks": { "netcoreapp1.0": { "dependencies": { "Microsoft.NETCore.App": { "version": "1.0.0" } }, "imports": "dnxcore50" } }, "runtimes":{ "win10-x64":{}, #win10平台 "centos.7-x64":{} #centos7.2平台 } }
(2) 实行restore和publish操纵
以后实行dotnet restore指令,针对平台举行复原操纵。该步操纵耗时较久,虽然只是两个平台,第一次也花了较长时候。紧接着举行举行dotnet publish -r centos.7-x64 -c release。
dotnet publish指令详见dotnet-publish - Packs the application and all of its dependencies into a folder getting it ready for publishing
(3) 在Linux平台上运转
上述操纵后,我们只需要将宣布后的文件夹(bin/release/netcoreapp1.0/centos7-x64/publish,包括self.exe)上传到Linux root目次下project(新建)文件夹中, 在Shell中输入指令
修正可实行权限后,即可胜利运转“Hello World”,这就是我们“Self-contained applications”体式格局的布置要领
4. 总结
4.1 尾声
至此,.NET Core的进修便告一段落了,以上内容简朴引见了.NET Core的构成和特征,同时也在Windows和Linux体系上经由过程两种差别的布置体式格局胜利运转了示例。相比较之前的.NET Framework傻瓜式布置,.NET Core的新颖真是让我眼前一亮。接下来,我也会将.NET Core和ASP.NET Core的进修记录下来,迎接斧正。
以上就是Core完成周全扫盲贴的ASP要领详解的细致内容,更多请关注ki4网别的相干文章!