前言
.NET Core 并不是 .NET FrameWork 的升級版,它是一個為滿足新一代的軟件設計要求而從頭重新開發的開發框架和平臺,所以它沒有 .NET FrameWork 的歷史包袱,相對于 .NET FrameWork,它具備很多優勢。
.NET Core 有哪些優勢?
優勢一
.NET Core 采用模塊化開發。
.NET Core 核心只包含很少的文件,所有其他模塊都需要單獨安裝。開發的程序用到什么模塊,就安裝什么模塊,這樣各個模塊都可以單獨升級。
不同的程序可以選擇適合自己版本的組件,不用受系統上安裝的其他程序的影響。
比如,A程序可以用一個模塊的1.5版本,而B程序可以用這個模塊的1.8版本,它們不會互相干擾。
優勢二
.NET Core 支持獨立部署(Standalone Deployment)。
所謂獨立部署,就是指將一個應用程序或軟件包打包成一個獨立的、自包含的單元,可以在沒有額外依賴項的情況下在目標環境中運行。
所以也就是說,可以把 .NET Core 運行時環境和開發的程序打包到一起部署。
這樣就不需要在服務器上安裝 .NET Core 運行環境,只要把程序復制到服務器上,程序就能運行,這對容器化、無服務器(Serverless)等非常友好。
優勢三
.NET Core 開發出來的程序性能更高。
相比 .NET FrameWork,.NET Core 的性能真是提高太多了,比如 EF(Entity Framework),EF 最受弊病的就是性能問題,在 .NET Core 時代,EF Core 比 EF 6.0 整整提高了 40 多倍。
因為 .NET Core 的所有管道都是可以插拔的,開發人員可以決定程序需要哪些管道及它們的執行順序,因此用 .NET Core 開發出來的程序啟動更快,內存占用更少,性能更高。
優勢四
ASP.NET Core 終于不再依賴 IIS。
這里用于 “終于” 一詞,因為一直以來,IIS 的復雜性、安全性和性能都備受爭議,但 ASP.NET 卻只能運行在 IIS 服務器里,很多開發人員非常反感這一點,甚至有些開發人員因為這一點,而放棄使用 ASP.NET。
現在,在 .NET Core 時代,我們有了更多更好的選擇,因為 ASP.NET Core 內置了簡單且高效的 Web 服務器 —— Kestrel。
Kestrel 被嵌入 ASP.NET Core 程序中運行,整個 ASP.NET Core 程序其實就是一個控制臺程序。
Kestrel 可被配置上安全、HTTPS、限流、壓縮、緩存等功能,從而成為直接面向終端用戶的 Web 服務器,也可以將其配置成輕量級的 Web 服務器,而安全、HTTPS、限流、壓縮、緩存等功能則由部署在它前面的 IIS、Nginx 等反向代理服務器完成。
優勢五
如今,高可用、高性能和高并發這三個方面受到了業界前所未有的重視,可以說,如今的軟件設計思想就是圍繞著這三個方面不斷地創新發展,集群、分布式、微服務、DDD(領域驅動開發)、最終一致性、容器化部署、依賴注入……等等概念受到前所未有的討論和應用。
.NET Core 有一個關鍵詞就是 “基于云” 開發。
所謂的 “基于云” 開發,就是指程序可以運行在云服務平臺上,并且可以和云服務平臺的其他產品進行集成。
云服務平臺的大部分技術都是開放的,而不是綁定某個具體語言的,因此主流的編程語言都能用于 “基于云” 的開發,.NET Core 也一樣,所以 .NET Core 更符合如今的軟件設計思想,EF Core 更是被譽為領域驅動開發應用場景的最佳實踐。
優勢六
現在要講的第六個優勢就是 跨平臺。
跨平臺有很多優勢,具體可參考前文我們的分析,支持跨平臺的 .NET Core,有著更廣闊的應用場景和可能性。
結語
綜上所述,.NET Core 可以開發能運行在容器環境中的微服務,以便于開發能應對高可用、高性能和高并發的系統。
另外,雖然 .NET Core 是從頭開發的,但更多是對底層的調整,在語法層面上,.NET Core 基本上保持跟 .NET Framework 的一致性,開發人員在 .NET Framework 中學到的絕大部分技術都可以遷移到 .NET Core 中,不會浪費在 “.NET Framework 時代” 的技術投資,這對于數以百萬的 .NET Framework 開發人員而言,也算是一大優勢吧。
當然,.NET Core 優勢遠遠不止于此,本文只是拋磚引玉,如果您知道更多的優勢,歡迎留言討論。
我是老楊,一個奮斗在一線的資深研發老鳥,讓我們一起聊聊技術,聊聊人生。
都看到這了,求個點贊、關注、在看三連唄,感謝支持。