溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何使用Core實(shí)現(xiàn)全面掃盲貼的ASP

發(fā)布時(shí)間:2020-07-21 11:43:31 來(lái)源:億速云 閱讀:161 作者:Leah 欄目:編程語(yǔ)言

本篇文章給大家分享的是有關(guān)如何使用Core實(shí)現(xiàn)全面掃盲貼的ASP,小編覺(jué)得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說(shuō),跟著小編一起來(lái)看看吧。

1. 前言

.NET發(fā)行至今已經(jīng)過(guò)了十四個(gè)年頭。隨著版本的不斷迭代更新,.NET在Windows平臺(tái)上的表現(xiàn)也是越來(lái)越好,可以說(shuō)Windows平臺(tái)上所有的應(yīng)用類型.NET幾乎都能完成。

只是成也Windows,敗也Windows,這十四年來(lái),除了部分“民間”版本,.NET一直沒(méi)能在官方支持下擺脫Windows平臺(tái)的局限,“開(kāi)源”和“跨平臺(tái)”這兩個(gè)詞語(yǔ)也是所有.NET開(kāi)發(fā)者心中的痛楚。最終,.NET Core出現(xiàn)了,它讓開(kāi)發(fā)者們?cè)诠俜胶蜕鐓^(qū)的支持走出了Windows,可以在macOS,Linux主流distributions上編寫(xiě)調(diào)試并部署.NET程序。

2. .NET Core 簡(jiǎn)介

2.1 .NET Core是什么

.NET Core是一個(gè)開(kāi)源通用的開(kāi)發(fā)框架,支持跨平臺(tái),即支持在Window,macOS,Linux等系統(tǒng)上的開(kāi)發(fā)和部署,并且可以在硬件設(shè)備,云服務(wù),和嵌入式/物聯(lián)網(wǎng)方案中進(jìn)行使用。.NET Core的源碼放在GitHub上,由微軟官方和社區(qū)共同支持。

它和傳統(tǒng)的.NET Framework,屬于“子集—超集”的關(guān)系,或者你也可以簡(jiǎn)單地認(rèn)為它就是.NET Framework的跨平臺(tái)版本(基于BCL的層面上看)。這是因?yàn)樵诋?dāng)前版本中(1.0),.NET Core中的大部分核心代碼都是從.NET Framework中繼承重寫(xiě)的,包括Runtime和Libraries(如GC, JIT, 部分類型)。

吐槽:只能感謝微軟《CLR via C#》不用白看呀,我之前看了得有小半年才看完

現(xiàn)在的.NET Core 1.0版本是一個(gè)很小的核心,APIs和工具也并不完整,但是隨著.Net Core的不斷完善,補(bǔ)充的Apis和創(chuàng)新也會(huì)一起整合到.NET Framework中。也就是說(shuō),.NET Core微軟會(huì)同時(shí)更新.NET Framework和.NET Core,他們就像倆兄弟,共同努力致富(致誰(shuí)的富?當(dāng)然是.NET開(kāi)發(fā)者們),實(shí)現(xiàn)所謂的天下大同,也就是.NET 標(biāo)準(zhǔn)2.0

這里不得不提到一個(gè)叫做.NET Standard Library概念。作為.NET平臺(tái)APIs開(kāi)發(fā)官方支持標(biāo)準(zhǔn),它要求所有的.NET框架APIs都遵循向下兼容。比如說(shuō).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標(biāo)準(zhǔn)。

最終展望如下:

如何使用Core實(shí)現(xiàn)全面掃盲貼的ASP

2.2 .NET Core的組成

①.NET Runtime

即CoreCLR。如之前所說(shuō),CoreCLR與.NET Framework的CLR并沒(méi)有什么區(qū)別,進(jìn)程管理,GC,JIT(RyuJIT 編譯器)這些部分也都是一樣的,只是針對(duì)服務(wù)器系統(tǒng)做了相應(yīng)優(yōu)化?,F(xiàn)在CLR和CoreCLR也在進(jìn)行同步更新,只是可以肯定的是,CoreCLR才是.NET的未來(lái),CLR將作為兼容手段而存在

②Framework Libraries,

即CoreFX。包括集合類,文件系統(tǒng)處理類,XML處理類,異步Task類等

③SDK Tools 和 Language Compilers (SDK工具和編譯器)

即CLI工具和Roslyn編譯器??梢酝ㄟ^(guò).NET Core SDK(.NET Core開(kāi)發(fā)工具包)獲取。

④dotnet'app host

用來(lái)選取并執(zhí)行對(duì)應(yīng)運(yùn)行時(shí),提供組件載入原則和啟動(dòng).NET Core應(yīng)用程序。SDK也是通過(guò)相同程序啟動(dòng)。

Tips:是不是想起了MSCorEE.dll這個(gè)墊片,它同樣承載著Windows平臺(tái)上為.NET應(yīng)用程序選擇CLR版本的工作

如何使用Core實(shí)現(xiàn)全面掃盲貼的ASP

2.3 .NET Core的特性

①跨平臺(tái)

可以在Windows,macOS,Linux上運(yùn)行

②靈活的部署機(jī)制

1.Portable applications(便攜式應(yīng)用)

這種部署機(jī)制和傳統(tǒng)的.NET Framework相似,只要目標(biāo)平臺(tái)上存在.NET Core Runtime即可。

2.Self-contained application(自宿主應(yīng)用)

顧名思義,這種部署機(jī)制將應(yīng)用和運(yùn)行時(shí)共同打包,即便目標(biāo)平臺(tái)上沒(méi)有安裝.NET Core Runtime也能正常使用

第二種方式和.NET Native也是不一樣的,仍然使用CoreCLR,而.NET Native使用CoreRT作為運(yùn)行時(shí),詳細(xì)信息請(qǐng)見(jiàn)dotnet/corert

③命令行工具

.NET程序所有的運(yùn)行腳本都可以用命令行工具執(zhí)行(cmd,bash)這里有幾個(gè)常見(jiàn)的donnet命令

指令幫助
dotnet new產(chǎn)生新的基本 .NET 項(xiàng)目?jī)?nèi)容 (包含 project.json、Program.cs 以及 NuGet.config
dotnet restore還原所參考的 NuGet 包
dotnet build建造 .NET 項(xiàng)目
dotnet publish產(chǎn)生可發(fā)行的 .NET 項(xiàng)目 (包含所屬的 Runtime)
dotnet run編譯與立即運(yùn)行 .NET 項(xiàng)目 (較適用于 exe 型項(xiàng)目)
dotnet repl引導(dǎo)交互式的對(duì)話
dotnet pack將項(xiàng)目的產(chǎn)出封裝成 NuGet 包

④兼容性

通過(guò).NET Standard Library與.NET Framework,Xamarin,Mono兼容

⑤開(kāi)源

.NET Core從屬于.NET基金會(huì),由微軟進(jìn)行官方支持。使用MIT和Apache 2開(kāi)源協(xié)議,文檔協(xié)議遵循CC-BY

2.4 開(kāi)發(fā)語(yǔ)言

.NET Core 1.0版本中支持的編程語(yǔ)言僅有C#(F#和VB暫未實(shí)現(xiàn)),這里還要提到一個(gè)開(kāi)源的語(yǔ)言編譯器Roslyn,它負(fù)責(zé)將代碼編譯成我們熟悉的IL語(yǔ)言,然后再借由AOT或JIT編譯器編譯成機(jī)器熟悉的機(jī)器語(yǔ)言。

3. Get Started

以下內(nèi)容演示在Windows10和CentOS 7.2下的命令行生成和發(fā)布demo

3.1 Win 10

3.1.1 安裝.NET Core SDK和.NET Core Runtime

.NET Core SDK = 使用.NET Core開(kāi)發(fā)應(yīng)用.NET Core Runtime 和 SDK+CLI 工具

3.1.2 簡(jiǎn)單的運(yùn)行結(jié)果

打開(kāi)cmd,依次輸入mkdir .project(創(chuàng)建目錄),cd .\.project(進(jìn)入目錄),dotnet new(新建初始項(xiàng)目),dotnet restore(還原依賴),dotnet run(運(yùn)行)即可運(yùn)行第一個(gè)Hello World程序

如何使用Core實(shí)現(xiàn)全面掃盲貼的ASP

3.2 CentOS 7.2(本地Hyper-V)

3.2.1 安裝和運(yùn)行

詳情請(qǐng)見(jiàn):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文件,有時(shí)會(huì)因?yàn)榫W(wǎng)絡(luò)問(wèn)題下載較慢,耐心等待即可,當(dāng)然也可以手動(dòng)下載后放到目錄下。
sudo mkdir -p /opt/dotnet && sudo tar zxf dotnet.tar.gz -C /opt/dotnet #創(chuàng)建目錄并解壓已下載文件
sudo ln -s /opt/dotnet/dotnet /usr/local/bin #將目錄鏈接到$PATH下,否則dotnet命令無(wú)法識(shí)別
mkdir hwapp
cd hwapp
dotnet new #創(chuàng)建默認(rèn).NET Core應(yīng)用
dotnet restore #還原依賴包
dotnet run #運(yùn)行,結(jié)果將顯示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官方網(wǎng)站都可以找到,可以看到應(yīng)用在經(jīng)過(guò)簡(jiǎn)單的dotnet new, dotnet restore, dotnet run命令后就跑起來(lái)了,但是這其實(shí)是類似于開(kāi)發(fā)環(huán)境中的調(diào)試運(yùn)行,而且win上new的應(yīng)用此時(shí)也不能直接跨平臺(tái)到Linux下運(yùn)行,所以我們又得提到dotnet publish命令了

3.2.2 Self-contained applications 發(fā)布

(1) 修改project.json文件

我們現(xiàn)在win10下按照步驟new一個(gè)新的HW控制臺(tái)應(yīng)用self,按照官方文檔要求,我們需要用以下內(nèi)容替換原來(lái)project.json文件(刪除"type": "platform",并增加runtimes節(jié)點(diǎn))

{
 "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平臺(tái)
 "centos.7-x64":{} #centos7.2平臺(tái)
 }
}

(2) 執(zhí)行restore和publish操作

之后執(zhí)行dotnet restore指令,針對(duì)平臺(tái)進(jìn)行還原操作。該步操作耗時(shí)較久,雖然只是兩個(gè)平臺(tái),第一次也花了較長(zhǎng)時(shí)間。緊接著進(jìn)行進(jìn)行dotnet publish -r centos.7-x64 -c release。

如何使用Core實(shí)現(xiàn)全面掃盲貼的ASP

dotnet publish指令詳見(jiàn)dotnet-publish - Packs the application and all of its dependencies into a folder getting it ready for publishing

(3) 在Linux平臺(tái)上運(yùn)行

上述操作后,我們只需要將發(fā)布后的文件夾(bin/release/netcoreapp1.0/centos7-x64/publish,包含self.exe)上傳到Linux root目錄下project(新建)文件夾中, 在Shell中輸入指令

如何使用Core實(shí)現(xiàn)全面掃盲貼的ASP

修改可執(zhí)行權(quán)限后,即可成功運(yùn)行“Hello World”,這就是我們“Self-contained applications”方式的部署方法

4. 總結(jié)

4.1 尾聲

至此,.NET Core的學(xué)習(xí)便告一段落了,以上內(nèi)容簡(jiǎn)單介紹了.NET Core的組成和特性,同時(shí)也在Windows和Linux系統(tǒng)上通過(guò)兩種不同的部署方式成功運(yùn)行了示例。相比較之前的.NET Framework傻瓜式部署,.NET Core的新奇真是讓我眼前一亮。接下來(lái),我也會(huì)將.NET Core和ASP.NET Core的學(xué)習(xí)記錄下來(lái),歡迎指正。

以上就是如何使用Core實(shí)現(xiàn)全面掃盲貼的ASP,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見(jiàn)到或用到的。希望你能通過(guò)這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注億速云行業(yè)資訊頻道。

向AI問(wèn)一下細(xì)節(jié)
推薦閱讀:
  1. hadoop掃盲
  2. Promise掃盲貼

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI