首頁 >後端開發 >C#.Net教程 >Core實現全面掃盲貼的ASP方法詳解

Core實現全面掃盲貼的ASP方法詳解

Y2J
Y2J原創
2017-05-04 10:55:191736瀏覽

本篇文章主要介紹了.NET Core,.NET Core是一個開源通用的開發框架,支援跨平台,即支援在Window,macOS,Linux等系統上的開發和部署有興趣的可以了解一下。

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 和###Lang###uage Compilers (SDK工具和編譯器) ######即CLI工具和Roslyn編譯器。可以透過.NET Core SDK(.NET Core開發工具包)取得。 ######④dotnet'app host#########用來選取並執行對應執行時間,提供元件載入原則和啟動.NET Core應用程式。 SDK也是透過相同程式啟動。 ######Tips:是不是想起了MSCorEE.###dl###l這個墊片,它同樣承載著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命令

## 建置.NET 項目dotnet publish產生可發行的.NET 專案(包含所屬的Runtime)dotnet run編譯與立即執行.NET 專案(較適用於exe 型專案)dotnet repl#引導互動式的對話
指令 幫助
dotnet new #產生新的基本.NET 專案內容(包含project.json、Program.cs 以及NuGet.config
dotnet restore 還原所參考的NuGet 套件
dotnet build



##dotnet pack

將專案的產出封裝成NuGet 套件

④相容性

 透過.NET Standard Library與.NET Framework,Xamarin,Mono相容

⑤開源

.NET Core從屬於.NET基金會,由微軟進行官方支援。 2開源協議,文件協議遵循CC-BY

2.4 開發語言

.NET Core 1.0版本中支援的

程式語言

只有C# (F#和VB暫未實現),這裡還要提到一個開源的語言編譯器Roslyn,它負責將程式碼編譯成我們熟悉的IL語言,然後再藉由AOT或JIT編譯器編譯成機器熟悉的機器語言。 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方法詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn