什麼是EEP .NET Core
EEP.NET從2006年推出至今,已經有超過10年的時間了,從最早使用.NET
webform技術開始,陸續整合了extjs、DevExpress、Silverlight、jQuery、jQuery
Mobile、AngularJS、.NET MVC到最新的RWD等等各種不同框架。訊光在Visual Studio中所整合的技術,也都只能在Windows作業系統與Visual
Studio開發工具上使用。
為了要能擁有Visual
Studio拉元件、設定屬性、少寫html這種開發方式的便利性,綁定在體積極為龐大的Visual
Studio開發工具中,除了需額外購買微軟授權外,更無法跨平台方式來開發其他平台的應用軟體。直到近幾年.NET
Core的出現,微軟難得以Open Source的胸襟,針對.NET開放了原始碼,並更改了核心讓.NET可以擁有跨平台的能力,立即得到全球開發者的青睞,紛紛加入了.NET
Core的社群,並開始嘗試在.NET Core核心上進行應用軟體的開發。因此,擁有眾多客群的EEP.NET開發平台,當然也隨著.NET Core重新提供一個EEP .NET Core開發平台來讓客戶搭上這坡.NET Core的潮流。
甚麼是.NET Core
.NET Core 是一個由Microsoft和.NET社區維護的開源通用開發平台。跨平台(支持Windows,macOS和Linux),可用於構建裝置,雲和IoT應用程序。現在已經改名為.NET5。.NET Core可用於建立如下的應用程式,例如:
l Web 應用程式、web Api 和微服務
l 雲端中的無伺服器函式(Serverless)
l 雲端原生應用程式
l 行動應用程式
l 傳統型應用程式(如Windows WPF/Windows Forms)
l 遊戲
l 物聯網 (IoT)
l 機器學習
l 主控台應用程式
l Windows 服務
.NET
Core支援多種平台,如Windows、macOS、Linux、Android、iOS、tvOS、watchOS等平台,支援的處理器架構包括
x64、x86、ARM32、ARM64等。支援的語言則包含 C#、F#、Visual
Basic等。
其中ASP.NET
Core 是.NET Core的重要成員之一,他是一個跨平台的.NET框架,用於在Windows,Mac或Linux上構建基於雲的現代Web應用程序。由Microsoft和社區開發的免費,開放源代碼的Web框架,性能高於ASP.NET。它是一個模塊化框架,可在Windows的完整.NET Framework和跨平台的.NET Core上運行。其架構圖如下:
ASP .NET Core的優點
ASP.NET Core 具有下列優點:
l 用於建置 Web UI 和 Web API 的統一劇本。
l 可測試性架構。
l Razor
Pages 更容易撰寫以頁面為焦點的案例程式碼,也更具生產力。
l Blazor 可讓您在瀏覽器中使用 C# 與 JavaScript。共用伺服器端與用戶端應用程式邏輯都是以 .NET 撰寫。
l 能夠在
Windows、macOS 和 Linux 上開發並執行。
l 開放原始碼和以社區為焦點。
l 整合現代化的用戶端架構和開發工作流程。
l 支援使用gRPC裝載遠端程序呼叫(RPC)服務。
l 雲端就緒、以環境為基礎的組態系統。
l 內建的相依性插入。
l 輕量、高效能且模組化的 HTTP 要求管線。
l 能夠裝載于下列各項web
server:如: Kestrel(預設)、IIS、HTTP.sys、Nginx、Apache、Docker等。
l 並存版本控制。
但是需注意的是,.NET
Core並未完整移植.NET FrameWork,例如下列功能將無法在.NET
5(.NET Core的下一個版本)中使用:
l ASP.NET
Web Forms 的應用程式: ASP.NET Web Forms 僅適用于
.NET Framework。 ASP.NET Core 無法用於
ASP.NET Web Forms。
l ASP.NET
Web Pages 應用程式:ASP.NET Web Pages 未隨附於
ASP.NET Core 中。
l WCF 服務實作。即使有 wcf 用戶端程式庫可從 .NET 5 取用 wcf 服務,但 wcf 伺服器的執行目前只在
.NET Framework 中提供。
l 工作流程相關的服務: Windows
Workflow Foundation (WF) 、工作流程服務 (單一服務)
中的 WCF + WF,而 WCF Data Services
(之前稱為「ADO.NET 資料服務」 ) 僅適用于 .NET Framework。
l .NET
remoting
l ASMX web
service
特別注意的是,.NET
Core 已更名為 .NET 5,版本號碼直接定義5,是為了避免與 .NET Framework 4.x 混淆。根據微軟官方說明,.NET
Core名稱日後不再有 "Core" 的名稱,但是ASP.NET
Core則會繼續保留 "Core",以避免與
ASP.NET MVC 5 混淆,Entity Framework Core 會保留 "Core" 的名稱,以避免與 Entity
Framework 5 和6混淆。而.Net
Framework則已經終止開發了,最終版本為4.8,如下的時程表,僅供參考。
為何要用.NET Core
.NET經過多年的發展,幾乎已經成熟了,為何企業還要跟進.NET Core呢?簡單說明如下:
1.
為了要能跨平台
2.
效能更好,在不少實測中優於node.js與部分ASP.NET的網站
3.
支援在嵌入式裝置廣為使用的ARM 64 CPU 在售價2000元台幣的樹莓派4上也能架設ASP.NET Core 3.0網站了
4.
ASP.NET Core支援docker,將應用程式容器化。因此也可以直接在群暉科技的NAS上運行。
5.
適合開發微服務,一句指令dotnet new webapi -o myMicroservice,就直接建立了一個微服務。
6.
ASP.NET Core支援多種網頁伺服器,不再只能搭配龐大的IIS
7.
開放原始碼,使用最寬鬆的MIT和Apache 2開源協議,文檔協議遵循CC-BY。這將允許任何人任何組織和企業任意處置,包括使用,複製,修改,合併,發表,分發,再授權,或者銷售。
8.
新一代主流開發平台,正在不斷技術創新
9.
微軟已經結束.NET framework開發並終止更新版本,.NET
framework已經成為落日技術。因此為了企業長久發展,未來勢必需要更換淘汰此技術。
以下我們整理出.NET Core與.NET
Frame有何不同,以表格方式列出兩者差異:
ASP.NET Core |
ASP.NET 4.x |
為 Windows 建置 |
|
Razor 頁面是建立 ASP.NET Core 2.X 的 Web UI 的建議方法。 不支援Web Form,因此也不會支援伺服器控制項。 |
使用 Web Form、 SignalR 、 MVC、 web API、 webhook |
同一個ASP.NET程式,在每部電腦只能有一個版本 |
|
使用 c # 或 F Visual Studio、 Visual
Studio for Mac或 Visual Studio Code 進行開發 |
使用 c #、VB
或 F 進行 Visual
Studio 開發 |
使用 .NET Framework 執行階段 (透過w3wp.exe或iisexpress.exe) |
|
熟悉的開發者較多,技術文件豐富 |
|
不開放原始碼 |
.NET Core的架構
先了解一下.NET Core的前身.NET
Framework,.NET Framework是2000年提出的,之後的十多年推出了一系列的版本,目前最終版本為.NET Framework 4.8。由於不斷疊代更新,架構越來越多功能,但是另一方面也越來越臃腫,造成BCL(Base Class Libraries基礎類別庫)與負責執行階段CLR(Common Language
Runtime通用語言運行庫)不斷的膨脹。如下圖:
CLI(Common Language Infrastructure) 是一個開放的技術規範,由為微軟、HP與Intel於2000年向ECMA(Ecma
International)倡議的,目的是讓規範內定義的高階語言,在無需修正的情況下可以在不同電腦架構上執行。
符合CLI的程式會編譯成CIL(通用中間語言Common Intermediate Language)在執行時透過VES(Virtual
Execution System)的JIT(just-in-time compilation)技術編譯成Machine code(機械碼)。CLR是微軟對此標準CLI的實作,我們可以.NET的虛擬機去理解CLR,以Java來說,類似JVM的概念。如下圖所示:
龐大的BCL與CLR,勢必會造成效能影響,也讓跨裝置執行受限,因此微軟也推出了不同裝置版本的.NET Framework。由於各個平台的獨立性高,因此難以開發跨平台與設備的應用程式。
因此,微軟重新開發了新的CLR,稱作CoreCLR(.NET
Core Common Language Runtim),並且重新設計一套新的BCL,稱作CoreFX。
CoreFX是經過完全重寫的BCL,其API不再定義於少數幾個單一的程式集中,而是重新分配在各獨立的模組中,這些模組各自對應單一的程式集,最終透過對應的NuGet下載安裝。因此整體執行速度與所需的資源更少,也符合近年微服務與容器的架構趨勢。
CoreCLR設計時,就考量了主流的作業系統(Windows、Mac OS X與Linux)與CPU架構(x86、x64與ARM),因此具備跨平台的功能。
.Net 5(.NET Core)的市場回響與未來
根據市場現況,對於國內各中小企業、上櫃上市公司資訊部門來說,台灣目前(2020年底)對於.Net 5,幾乎都還處於沒聽過或是觀望階段,還沒看到使用.NET 5開發出來的大型專案。可能由於之前微軟拋棄Silverlight技術、Metro UI的影響,企業不願意追新技術追得太緊。
不過,由於.Net Framework則已經終止開發了,轉換新技術勢在必行。加上微軟近年來擁抱開放原始碼、跨平台的開放態度,受到社群的正面回應。因此考量高效能與能夠在各種平台、裝置、開發場景的應用上,.NET
5勢必會取代原有的.NET Framework,只是時間早晚的問題。