Centos7上開發.Net Core項目


本文主要內容是簡單介紹如何在centos7上開發.Net Core項目,在此之前我們首先了解下.Net Core的基本特性。

1 .Net Core和.Net FrameWork的異同

1.1 .Net Core優勢

  .Net Core發布兩年了,這兩年.Net Core的發展十分迅速,到目前已經推出來了.Net Core3.0預覽版,支持通過.Net Core來開發桌面應用程序(WPF,WinForm),現在.Net平台的開發者應該不會對“.Net Core就是.Net的未來”這一說法再有質疑。我所在的公司自去年開始從.Net Framework向.Net Core遷移,現在技術已基本成型。個人覺得從.Net Framework到.Net Core平台的轉換路線對我們開發人員來說十分平緩,在開發業務代碼時和使用.Net Framework幾乎沒有什么區別。

.Net Core的特點:
跨平台: 可以在 Windows、macOS 和 Linux 上運行;
跨體系結構: 在多個體系結構(包括 x64、x86 和 ARM)上以相同的行為運行代碼;
部署靈活:十分適合搭配 Docker 容器來輕松部署項目在不同的平台上;
兼容性:.NET Core 通過 .NET Standard與 .NET Framework、Xamarin 和 Mono 兼容;
開放源代碼:.NET Core 平台是開放源代碼,使用 MIT 和 Apache 2 許可證。 
ASP.Net Core的優勢: 輕型高性能的模塊化HTTP請求管道; 內置依賴注入,(可以使用第三方替換); 能夠在IIS,nginx,Apache,docker上進行托管或在自己的進程中進行托管; 雲就緒配置系統; 生成mvc和webapi的統一場景,控制器不在分為Controller和ApiController,只有一個統一的Controller(請求處理管道統一)。

1.2 .Net Core和.Net Framewoke的編譯過程對比

  

  在傳統.Net Framework中,我們的代碼會調用FCL中的基礎類庫,代碼通過編譯器編譯成IL(中間語言),中間語言在CLR中通過JIT(just in time,即時編譯器)編譯成本機代碼(就是CPU可處理的二進制指令),最后本機代碼運行在Windows平台上。這里FCL是隨着.Net Framework的版本更新而更新的,即如果我們要使用新的FCL就必須更新.Net Framework;.Net Framework的FCL中包含了所有基礎類庫(很多基礎類庫我們的項目並沒有使用到)這也造成了代碼冗余。

  在.Net Core中CoreFX就是基礎類庫(相當於.Net Framework中的FCL),Linux/Windows/Macos都有自己的CoreFX,每個版本的CoreFX都實現.Net Standard中定義的標准接口。我們的代碼通過Nuget按需獲取CoreFX中的類庫(模塊化,減少引入不需要的類庫),然后通過跨平台的Roslyn編譯器編譯成IL,IL在CoreCLR中通過RyuJIT(Ryu即時編譯器)編譯成操作系統對應的本機代碼,然后在對應的操作系統上運行。

  我們可以看出.Net Core通過Nuget按需獲取基本類庫,使得項目更利於模塊化管理,更輕巧。

2 Centos7開發.Net Core項目

2.1 開發前提

1.軟件安裝

1.安裝VMWare虛擬機管理軟件 2.安裝Centos7虛擬機 3.安裝PuTTy或者XShell遠程操作工具

PuTTy/XShell工具一直next安裝即可,操作和我們使用Linux命令行一樣,主要用於遠程登錄和操作Linux系統。

VMWare和Centos7虛擬機安裝可以看看這一篇 :VMWare安裝和配置

2.Net Core安裝

  .Net Core的安裝包有兩種:runtime和SDK

.net core SDK
包含runtime、Roslyn、CoreFX、netCore CLI等,想當於javaz中的jdk,開發時使用

.net core Runtime
主要包含CoreCLR,用於運行.Net Core項目,相當於java中的jre,部署時使用

  為了在Linux上進行開發,我們選擇安裝SDK,下載地址:https://dotnet.microsoft.com/download,我們也可以在線安裝兩行代碼就可以搞定

//1.安裝.NET sdk前,首先注冊,並安裝一些必要的依賴項。一台設備只需要執行一次
sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm
//2.安裝SDK
sudo yum install dotnet-sdk-2.2
//3.驗證是否成功,用於查看版本號
dotnet --version

2.2 Centos上開發Console應用程序

  我們使用CLI工具在centos上開發Console應用程序,開發過程如下圖,幾行簡單的代碼就可以完成一個Console項目的開發,並在Centos上運行成功。

2.3 Centos上開發MVC應用程序

  開發mvc項目和控制台項目的過程基本一致,按下圖中的命令即可新建一個mvc項目並運行成功。

  我們看到運行成功后只能在本機上訪問,那么如果我們想讓我們的電腦訪問虛擬機上的mvc網站怎么辦呢?很簡單,修改下mvc項目的配置即可

  然后切換到mvc根目錄,執行 dotnet run ,運行結果如下:

  在我們的筆記本電腦上打開瀏覽器,輸入url(虛擬機Ip:5000),訪問結果如下:

2.4 Centos上開發Web API應用程序

  .Net Core中Mvc和WebApi采用的是同一的http處理管道,控制器都繼承於統一的Controller(沒有了ApiController)所以開發WebApi項目和開發mvc項目的過程基本一樣,如下:

  我們看到運行后的url為http://localhost:5000,webapi應用只能在本機訪問,如果要讓其他設備可以訪問,那么需要修改配置文件,和mvc中修改的方式一樣。修改完成后,再次通過 dotnet run 命令啟動項目,我們就可以在其他設備上訪問centos上部署的WebApi項目了。如下

3.小結

  這里簡單介紹了.Net Core的一些特性,並在Centos7虛擬機上使用CLI工具開發Console、MVC、WebAPI應用。在Centos等Linux系統上,我們可以使用vim編輯器進行代碼編寫,但是這種方式很不方便。實際開發中我們會使用VS或者VsCode工具進行開發,然后將發布版本部署在Linux系統上。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM