新聞中心
隨著計(jì)算機(jī)技術(shù)的不斷發(fā)展,應(yīng)用程序的開發(fā)也愈發(fā)復(fù)雜和多樣化。許多開發(fā)者面對(duì)不同的操作系統(tǒng)、開發(fā)語言和框架,紛繁復(fù)雜的環(huán)境已經(jīng)成為開發(fā)者必須面對(duì)的問題??缙脚_(tái)開發(fā)便是應(yīng)運(yùn)而生,其可以大大降低開發(fā)成本和時(shí)間,同時(shí)增加軟件的靈活性和可移植性。.NET Core是開發(fā)跨平臺(tái)應(yīng)用程序的首選,其中特別是.NET Core在Linux環(huán)境下的應(yīng)用更為廣泛。

創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供陽城網(wǎng)站建設(shè)、陽城做網(wǎng)站、陽城網(wǎng)站設(shè)計(jì)、陽城網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)與制作、陽城企業(yè)網(wǎng)站模板建站服務(wù),10年陽城做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。
.NET Core,是一個(gè)免費(fèi)、開源、跨平臺(tái)的框架,它可以用來構(gòu)建不同類型應(yīng)用,如Web應(yīng)用、桌面應(yīng)用、云應(yīng)用等,并且支持不同類型的操作系統(tǒng),例如Windows、Linux和macOS等。.NET Core是在一系列互聯(lián)網(wǎng)領(lǐng)先公司的支持下開發(fā)出來的,諸如微軟、谷歌和Facebook等,這讓.NET Core擁有許多偉大的功能和特性,還可以通過社區(qū)持續(xù)優(yōu)化成長(zhǎng),這給所有的開發(fā)者提供了更豐富的選擇。
在跨平臺(tái)開發(fā)中,Linux是優(yōu)秀的選擇之一,因?yàn)樗哂懈咝?、穩(wěn)定、安全和靈活的特性。Linux上的.NET Core可以滿足開發(fā)者的絕大部分需求,可以快速地構(gòu)建出高性能、安全和可擴(kuò)展的應(yīng)用程序。此外,Linux還具有較高的自由性、開發(fā)標(biāo)準(zhǔn)、文檔和強(qiáng)大的社區(qū)支持,這讓開發(fā)者可以更加深入的探究.NET Core的開發(fā)和應(yīng)用。
使用.NET Core開發(fā)應(yīng)用程序要比傳統(tǒng)的.NET Framework更加優(yōu)秀,強(qiáng)大和靈活。.NET Core可以使用微軟提供的Visual Studio進(jìn)行開發(fā),還支持使用其他的代碼編輯器和開發(fā)工具,例如Visual Studio Code、 Sublime、IntelliJ等等。同時(shí),.NET Core可以使用C#、F#等各種編程語言構(gòu)建應(yīng)用,這給開發(fā)者提供了更多的選擇,還可以大大簡(jiǎn)化軟件開發(fā)流程。
.NET Core還擁有以下優(yōu)秀特性:
– 跨平臺(tái)應(yīng)用程序開發(fā)
– 云端應(yīng)用程序開發(fā)和實(shí)施
– 面向現(xiàn)代應(yīng)用程序的微服務(wù)和容器化
– 對(duì) WebAssembly 和拆分 ngen 支持
.NET Core Linux是現(xiàn)代應(yīng)用程序開發(fā)的首選框架之一。Linux的開源和透明讓.NET Core更適用于靈活、跨平臺(tái)、高效和可拓展的開發(fā)需要。未來,.NET Core將繼續(xù)保持開源、跨平臺(tái)、安全漏洞補(bǔ)丁及時(shí)更新,成為開發(fā)者的首選框架之一。
相關(guān)問題拓展閱讀:
- 一文回顧.NET Core 基礎(chǔ)設(shè)施演進(jìn)之路
- 如何系統(tǒng)地學(xué)習(xí)Docker?
一文回顧.NET Core 基礎(chǔ)設(shè)施演進(jìn)之路
作者丨Matt Mitchell
譯者丨平川
隨著.NET Core 3.0 預(yù)覽版 6 的推出,我們認(rèn)為有必要簡(jiǎn)要回顧一下基礎(chǔ)設(shè)施系統(tǒng)的 歷史 ,以及在過去一年左右時(shí)間里所做的重大改進(jìn)。如果你對(duì)構(gòu)建基礎(chǔ)設(shè)施感興趣,或者希望了解如何構(gòu)建像.NET Core 這樣大的產(chǎn)品,那么這篇文章將非常有趣。
從 3 年前開始,.NET Core 項(xiàng)目就與傳統(tǒng)的微軟項(xiàng)目有很大的不同。
我們?cè)缙诘幕A(chǔ)設(shè)施決策是圍繞必要性和便利性做出的。我們使用 Jenkins 進(jìn)行 GitHub PR 和 CI 驗(yàn)證,因?yàn)樗С挚缙脚_(tái)的 OSS 開發(fā)。我們的官方構(gòu)建版本位于 Azure DevOps(當(dāng)時(shí)稱為 VSTS)和 TeamCity(由 ASP 使用)中,其中有簽名和其他關(guān)鍵的交付基礎(chǔ)設(shè)施。我們搭配使用手動(dòng)更新包依賴項(xiàng)版本和自動(dòng)化 GitHub PR 的方法將存儲(chǔ)庫集成在一起。團(tuán)隊(duì)獨(dú)立地構(gòu)建了他們需要的工具來進(jìn)行打包、布局、本地化,以及在大型開發(fā)項(xiàng)目中出現(xiàn)的所有其他常見任務(wù)。雖然不是很理想,但在某種程度上,這在早期已經(jīng)運(yùn)行得足夠好了。隨著項(xiàng)目從.NET Core 1.0 和 1.1 發(fā)展到 2.0 以及更高版本,我們希望投資于進(jìn)一步整合的技術(shù)棧、更快的交付周期和更簡(jiǎn)單的服務(wù)。我們希望每天多次使用最新的運(yùn)行時(shí)來生成一個(gè)新的 SDK。我們希望所有這些都不降低獨(dú)立存儲(chǔ)庫的開發(fā)速度。
.NET Core 面臨的許多基礎(chǔ)設(shè)施方面的挑戰(zhàn)都源于存儲(chǔ)庫結(jié)構(gòu)的隔離和分布式特性。盡管多年來它變化很大,但該產(chǎn)品是由 20 到 30 個(gè)獨(dú)立的 Git 存儲(chǔ)庫組成(ASP.NET Core 直到最近還比它多得多)。一方面,擁有許多獨(dú)立的開發(fā)豎井會(huì)使這些豎井中的開發(fā)非常高效;開發(fā)人員可以在庫中快速迭代,而不用擔(dān)心棧的其他部分。另一方面,它使得整個(gè)項(xiàng)目的創(chuàng)新和集成效率大大降低。下面是一些例子:
在所有這些情況下,都有可能在許多層面上出現(xiàn)失敗,從而進(jìn)一步減緩進(jìn)程。隨著.NET Core 3.0 計(jì)劃的正式啟動(dòng),很明顯,如果不對(duì)基礎(chǔ)設(shè)施進(jìn)行重大更改,我們就無法創(chuàng)建所需范圍的版本。
為了減輕痛苦,我們?nèi)荦R下:
Arcade
在.NET Core 3.0 之前,有 3 到 5 種不同的工具實(shí)現(xiàn)分散在不同的存儲(chǔ)庫中,這和你如何計(jì)算有關(guān)。
雖然在這個(gè)世界上,每個(gè)團(tuán)隊(duì)都可以定制他們的工具,只構(gòu)建他們需要的東西,但這確實(shí)有一些顯著的缺點(diǎn):
開發(fā)人員在存儲(chǔ)庫之間切換時(shí)效率更低
例如:當(dāng)開發(fā)人員從 dotnet/corefx 切換到 dotnet/core-sdk 時(shí),存儲(chǔ)庫的“語言”是不同的。她輸入什么來構(gòu)建和測(cè)試?日志放在哪里?如果她需要在存儲(chǔ)庫中添加一個(gè)新項(xiàng)目,該如何做?
需要的每個(gè)特性都要構(gòu)建 N 次
例如:.NET Core 生成了大量的 NuGet 包。雖然有一些變化(例如,共享運(yùn)行時(shí)包如出自 dotnet/core-setup 的 Microsoft.NETCore.App 就與 Microsoft.AspNet.WebApi.Client 等“普通”包的構(gòu)建方式不同),但生成它們的步驟非常相似。遺憾的是,由于存儲(chǔ)庫在布局、項(xiàng)目結(jié)構(gòu)等方面的差異,如何實(shí)現(xiàn)這些打包任務(wù)方面也產(chǎn)生了差異。存儲(chǔ)庫如何定義應(yīng)該生成什么包、這些包中包含什么、它們的元數(shù)據(jù)等等。如果沒有共享工具,團(tuán)隊(duì)通常更容易實(shí)現(xiàn)另一個(gè)打包任務(wù),而不是重用另一個(gè)。這當(dāng)然會(huì)導(dǎo)致資源壓力。
借助 Arcade,我們努力使所有的存儲(chǔ)庫采用公共的布局、存儲(chǔ)庫“語言”和任務(wù)集(可能的話)。這并非沒有陷阱。任何一種共享工具最終都會(huì)解決一些“剛剛好”問題。如果共享工具過于規(guī)范,那么在任何規(guī)模的項(xiàng)目中進(jìn)行所需的定制都將變得非常困難,并且更新該工具也將變得非常困難。使用新的更新很容易破壞存儲(chǔ)庫。構(gòu)建工具遭受了這種痛苦。使用它的存儲(chǔ)庫與它緊密耦合,以至于它不僅不能用于其他存儲(chǔ)庫,而且對(duì)構(gòu)建工具進(jìn)行任何更改常常會(huì)以意想不到的方式傷害用戶。如果共享工具不夠規(guī)范,那么存儲(chǔ)庫在使用工具時(shí)往往會(huì)出現(xiàn)差異,并且推出更新通常需要在每個(gè)單獨(dú)的存儲(chǔ)庫中做大量的工作。那么,為什么要共享工具呢?
實(shí)際上,Arcade 嘗試同時(shí)使用了這兩種方法。它將公共存儲(chǔ)庫“語言”定義為腳本集(請(qǐng)參閱 eng/common)、公共存儲(chǔ)庫布局和作為 MSBuild SDK 推出的公共構(gòu)建目標(biāo)集。選擇完全采用 Arcade 的存儲(chǔ)庫具有可預(yù)測(cè)的行為,使得更改很容易在存儲(chǔ)庫之間傳播。不希望這樣做的存儲(chǔ)庫可以從提供基本功能(如簽名和打包)的各種 MSBuild 任務(wù)包中進(jìn)行選擇,這些任務(wù)包在所有存儲(chǔ)庫中看起來都是一樣的。當(dāng)我們對(duì)這些任務(wù)進(jìn)行更改時(shí),我們會(huì)盡力避免破壞性更改。
讓我們來看看 Arcade 提供的主要特性,以及它們?nèi)绾渭傻轿覀兏蟮幕A(chǔ)設(shè)施中。
Azure DevOps
如上所述,較大的團(tuán)隊(duì)通過 2.2 版本使用了一個(gè) CI 系統(tǒng)的組合:
許多差異僅僅是出于必要性。Azure DevOps 不支持公共 GitHub PR/CI 驗(yàn)證,所以 ASP.NET Core 轉(zhuǎn)向 AppVeyor 和 Travis 來填補(bǔ)這個(gè)空白,而.NET Core 則投資于 Jenkins。經(jīng)典 Azure DevOps 對(duì)構(gòu)建編排沒有太多的支持,所以 ASP.NET Core 團(tuán)隊(duì)求助于 TeamCity,而.NET Core 團(tuán)隊(duì)則在 Azure DevOps 之上構(gòu)建了一個(gè)名為 PipeBuild 的工具來幫助克服困難。所有這些差異都是非常昂貴的,即使是以一些不明顯的方式:
當(dāng) Azure DevOps 開始推出基于 YAML 的構(gòu)建管道和對(duì)公共 GitHub 項(xiàng)目的支持時(shí),隨著.NET Core 3.0 的啟動(dòng),我們意識(shí)到,我們擁有一個(gè)獨(dú)特的機(jī)會(huì)。有了這種新的支持,我們可以將現(xiàn)在所有的工作流從單獨(dú)的系統(tǒng)轉(zhuǎn)移到現(xiàn)代的 Azure DevOps 中,并對(duì)我們處理正式 CI 和 PR 工作流的方式進(jìn)行一些更改。我們的工作大致如下:
到目前為止,所有主要的.NET Core 3.0 存儲(chǔ)庫都在 Azure DevOps 上進(jìn)行公共 PR 和正式 CI。一個(gè)很好的例子是 dotnet/arcade 本身的正式構(gòu)建 /PR 管道。
Maestro 和依賴流
.NET Core 3.0 基礎(chǔ)架構(gòu)的最后一塊拼圖就是我們所說的依賴流。這并不是.NET Core 獨(dú)有的概念。除非它們是完全自包含的,否則大多數(shù)軟件項(xiàng)目都包含對(duì)其他軟件的某種版本化引用。在.NET Core 中,這些包通常表現(xiàn)為 NuGet 包。當(dāng)我們需要庫提供的新特性或修復(fù)時(shí),我們通過更新項(xiàng)目中引用的版本號(hào)來獲取這些新更新。當(dāng)然,這些包也可能有對(duì)其他包的版本化引用,那些其他包可能有更多的引用,等等。這就形成了一張圖。當(dāng)每個(gè)存儲(chǔ)庫拉取其輸入依賴項(xiàng)的新版本時(shí),更改將在圖中流動(dòng)。
一個(gè)復(fù)雜的圖
大多數(shù)軟件項(xiàng)目的主要開發(fā)生命周期(開發(fā)人員經(jīng)常從事的工作)通常涉及少量相互關(guān)聯(lián)的存儲(chǔ)庫。輸入依賴關(guān)系通常是穩(wěn)定的,更新很少。當(dāng)他們確實(shí)需要更改的時(shí)候,通常是手工操作。開發(fā)人員評(píng)估輸入包的可用版本,選擇合適的版本,然后提交更新。但在.NET Core 中并非如此。組件需要獨(dú)立,以不同的節(jié)奏交付,并具有高效的內(nèi)循環(huán)開發(fā)體驗(yàn),這導(dǎo)致了大量具有大量相互依賴關(guān)系的存儲(chǔ)庫。相互依賴關(guān)系也形成了一個(gè)相當(dāng)深的圖:
Dotnet/core-sdk 存儲(chǔ)庫作為所有子組件的聚合點(diǎn)。我們提供了一個(gè)特定的 dotnet/core-sdk 構(gòu)建,它描述了所有其他引用的組件。
我們還希望新的輸出能夠快速通過這個(gè)圖,以便盡可能多地驗(yàn)證最終產(chǎn)品。例如,我們期望 ASP.NET Core 或.NET Core 運(yùn)行時(shí)的最新片段盡可能多地在 SDK 中表現(xiàn)自己。本質(zhì)上,這意味著定期快節(jié)奏地更新每個(gè)存儲(chǔ)庫中的依賴項(xiàng)。在一個(gè)足夠大的圖中,就像.NET Core 一樣,這很快就變成了一個(gè)不可能手工完成的任務(wù)。這種規(guī)模的軟件項(xiàng)目可能會(huì)通過以下幾種方法來解決這個(gè)問題:
.NET Core 已經(jīng)嘗試了所有 3 種方法。我們?cè)?1.x 的早期漂移版本。在 2.0 中實(shí)現(xiàn)了一定程度的自動(dòng)化依賴流,并為 2.1 和 2.2 構(gòu)建了一個(gè)復(fù)合構(gòu)建。在 3.0 中,我們決定大量投資于自動(dòng)化依賴流,放棄其他方法。我們想在一些重要的方面改進(jìn)我們以前的 2.0 基礎(chǔ)設(shè)施:
這些概念的設(shè)計(jì)使得存儲(chǔ)庫所有者不需要棧或其他團(tuán)隊(duì)流程的全局知識(shí)就可以參與依賴流。他們只需要知道三件事:
.NET Core 3 開發(fā)通道的流圖,包括.NET Core 3 Dev 流的其他通道(例如,Arcade 的“.NET Tools Latest”)。
一致和不一致
非一致性會(huì)導(dǎo)致哪些問題?
不一致性表示可能的錯(cuò)誤狀態(tài)。舉個(gè)例子,讓我們看看 Microsoft.NETCore.App。這個(gè)包表示特定的 API 表面。雖然存儲(chǔ)庫依賴關(guān)系圖中可能會(huì)引用 Microsoft.NETCore.App 的多個(gè)版本,但 SDK 只提供一個(gè)。這個(gè)運(yùn)行時(shí)必須滿足可在該運(yùn)行時(shí)上執(zhí)行的間接引用組件(例如 WinForms 和 WPF)的所有需求。如果運(yùn)行時(shí)不滿足這些需求(例如破壞性 API 變更),可能就會(huì)發(fā)生故障。在不一致的圖中,因?yàn)樗写鎯?chǔ)庫都沒有使用相同版本的 Microsoft.NETCore.App,有可能錯(cuò)過了一個(gè)破壞性的變更。
這是否意味著不一致始終是一種錯(cuò)誤狀態(tài)?
不。例如,我們假設(shè)圖中 Microsoft.NETCore.App 的不一致只代表一個(gè)非破壞性 JIT Bug 修復(fù) coreclr 中的一個(gè)變更。從技術(shù)上講,微軟沒有必要在圖中的每一點(diǎn)上獲取新的 Microsoft.NETCore.App。只需針對(duì)新的運(yùn)行時(shí)交付相同的組件就足夠了。
如果不一致只是偶爾的問題,那么我們?yōu)槭裁催€要努力才能推出一致的產(chǎn)品呢?
因?yàn)楹茈y確定什么時(shí)候不一致無關(guān)緊要。簡(jiǎn)單地將一致性作為所需狀態(tài)進(jìn)行交付,要比試圖理解不一致的組件之間的任何語義差異對(duì)最終產(chǎn)品所產(chǎn)生的影響更容易。這是可以做到的,但是從構(gòu)建頻率來說,它是時(shí)間密集型的,并且容易出錯(cuò)。強(qiáng)制將一致性作為默認(rèn)狀態(tài)更安全。
依賴流的好處
隨著存儲(chǔ)庫圖越來越大,所有這些自動(dòng)化和跟蹤都有許多明顯的優(yōu)勢(shì)。它為我們解決日常生活中的實(shí)際問題提供了很多可能性。雖然我們剛剛開始 探索 這個(gè)領(lǐng)域,但系統(tǒng)已經(jīng)可以開始回答一些有趣的問題,并處理以下場(chǎng)景:
隨著.NET Core 3.0 逐步結(jié)束,我們正在尋找新的領(lǐng)域來改進(jìn)。雖然計(jì)劃仍處于(非常)初期的階段,但我們預(yù)計(jì)在以下幾個(gè)關(guān)鍵領(lǐng)域進(jìn)行投資:
多年來,我們已經(jīng)對(duì)基礎(chǔ)設(shè)施進(jìn)行了相當(dāng)大的改進(jìn)。從 Jenkins 到 Azure DevOps,從手工依賴流到 Maestro++,從許多工具實(shí)現(xiàn)到一個(gè)工具實(shí)現(xiàn),我們對(duì).Net Core 3.0 所做的改變是一個(gè)巨大的進(jìn)步。我們已經(jīng)為開發(fā)和交付比以往任何時(shí)候都更可靠、更令人興奮的產(chǎn)品做好了準(zhǔn)備。
原文鏈接:
如何系統(tǒng)地學(xué)習(xí)Docker?
1Docker 技術(shù)可謂是近年最火熱的技術(shù)之一,鋪天蓋地的技術(shù)論壇和各種講座,大家都在分享關(guān)于如何容器化及如何使用Docker優(yōu)化自己運(yùn)維和開發(fā)流程的經(jīng)驗(yàn)。隨著Docker技術(shù)的逐漸普及,使用Docker已經(jīng)不再是一個(gè)難題?,F(xiàn)在更加重要的是生產(chǎn)環(huán)境容器化的更佳實(shí)踐,段姿另外就是容器的編排框架之爭(zhēng)。但是,對(duì)于技術(shù)人員來說,除去Docker 外表的繁華外,什么是容器,容器到底是怎么創(chuàng)建的,容器底層的技術(shù)探秘也是非常重要的。2023年開始接觸 Docker的時(shí)候,經(jīng)歷了從最初的新奇—感嘆竟然還有Docker 這樣的好工具,到逐漸熟悉Docker的各種功能,嘗試在生產(chǎn)環(huán)境中使用Docker技術(shù)的過程。但是,每每被人問到:“Docker技術(shù)到底是怎么實(shí)現(xiàn)的呢”我只能粗粗淺淺地說:“Docker是使用Linux Kernel的Namespace 和 Cgroups實(shí)現(xiàn)的一種容器技術(shù)?!蹦敲矗裁词荖amespace,什么是Cgroups,Docker是怎么使用它們的,容器到底是怎么一步步被創(chuàng)建出來的.問到這些,我就會(huì)支支吾吾地不知所以。螞橡由此可見,了解容器技術(shù)的底層技術(shù),然后明白它們是如何工作的,尤為重要,這些才是整個(gè)容器技術(shù)的基石,掌握了這些基石才能更加容易地向上攀登。
2從docker的用途上來考慮,看docker能否解決你工作中遇到的問題。例如在實(shí)際開發(fā)過程中,經(jīng)常遇到的持續(xù)集成問題,軟件開發(fā),測(cè)試,部署,如何做成自動(dòng)化的。配合github Jenkins和docker實(shí)現(xiàn)自動(dòng)化部署,系統(tǒng)持續(xù)集成。docker最重要的是編排,如何合理有效穩(wěn)定的管理各個(gè)容器,調(diào)度容器??梢钥纯磌8s,自己動(dòng)手搭建握物絕跑跑看。docker本身并沒有引入新的技術(shù),都是在linux原有的基礎(chǔ)上做的融合??梢躁P(guān)注docker源碼分析。UCloud也支持Docker,推出了UDocker產(chǎn)品。UCloud – 專業(yè)云計(jì)算服務(wù)商。
目前,騰訊云平臺(tái)支持 Docker ,以下是在騰訊云生產(chǎn)環(huán)境中體驗(yàn)、使用Docker的教程,可以讓你更好地理解Docker的不同使用場(chǎng)景。在騰訊云服務(wù)器上體驗(yàn)Docker利用 Docker 快速搭建 git 倉(cāng)庫 Gitlab 與代碼審閱 Gerrit 平臺(tái)在 CVM 上使用騰訊云 Docker 鏡像加速構(gòu)建Docker 部署dotnetcore此外,騰訊云還推出了容器服務(wù)CCS,可以在托管的云服務(wù)器實(shí)例集群上輕松運(yùn)行應(yīng)用程序。皮坦高使用該服務(wù),您將無需安裝、運(yùn)維、擴(kuò)展您燃尺的集群管理基礎(chǔ)設(shè)施,只需進(jìn)行簡(jiǎn)單的信圓API調(diào)用,便可啟動(dòng)和停止Docker應(yīng)用程序,查詢集群的完整狀態(tài),以及使用各種云服務(wù)。
關(guān)于dotnet core linux的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。
創(chuàng)新互聯(lián)成都網(wǎng)站建設(shè)公司提供專業(yè)的建站服務(wù),為您量身定制,歡迎來電(028-86922220)為您打造專屬于企業(yè)本身的網(wǎng)絡(luò)品牌形象。
成都創(chuàng)新互聯(lián)品牌官網(wǎng)提供專業(yè)的網(wǎng)站建設(shè)、設(shè)計(jì)、制作等服務(wù),是一家以網(wǎng)站建設(shè)為主要業(yè)務(wù)的公司,在網(wǎng)站建設(shè)、設(shè)計(jì)和制作領(lǐng)域具有豐富的經(jīng)驗(yàn)。
分享題目:跨平臺(tái)編程首選——.NETCoreLinux(dotnetcorelinux)
URL網(wǎng)址:http://m.5511xx.com/article/ccdjjgc.html


咨詢
建站咨詢
