.Net Ecosystem (微軟開發生態系)

2022-01-19

說明微軟 .NET 開發的生態系,從 Visual Studio 建立專案、編譯到 DDL。比較 .NET Framework、.NET Core 以及 .Net 等 Runtime,並探討 C# 各版本在不同 Runtime 的支援情形。

logo

說明

最早的 ASP 現在已經稱為 Classic ASP,寫起來跟早期的 PHP 很像,用的語言是 Visual Baisc,也稱為 VBScript。藉由標籤語言的方式和 HTML 夾雜在一起,寫起來直覺,但規模一旦變大就程式碼就會亂得像是義大利麵。

後來出現了 .NET Framework,為了讓桌面應用使用控制項的開發體驗繼續延續,ASP.NET WebForm 開始普及,UI 全靠控制項,而且也用 VIESTATE 解決 HTTP 無狀態,很多程式功能不容易實現的問題,這個時候開發上程式語言除了 VB.NET 以外,多了 C# (C++++)的選擇。

但這個時候微軟已經留意到 System.Web.dll 所帶來的耦合問題,就著就有了 ASP.NET MVC 與 WEB API 的出現。

MVC 的出現,和當時 Ruby On Rails 的盛行有關係,而 MVC 的出現讓分離關注點的開發方式得到推廣,對於 HTML 與 CSS 各種元件的調用整合能力也得到提升,此外 MVC 蘊含許多軟體工程的設計模式 Factory Pattern 以及 Filter 的 ASPECT-Oriented Programming 等新技術。

此外 WEB API 的架構出現,讓前端使用 AJAX 更新頁面元件的設計方式成為可能。

接著微軟提出了 OWIN 架構,由上至下分為 Application, Middle, Server 與 Host,讓 Web 服務不用一定要在 IIS 上才能夠執行,不同的 OWIN 層元件可以互相抽換。使用 Console 來提供 Web 服務也沒有問題。而實踐 OWIN 的一個框架就是 Katana,這個為後來的 .NET Core 留下了發展的基礎。

取代原本預期的 ASP.NET MVC 6,出現的是 .NET Core,而且快速的從 1、2、3.1,接著成為了 .NET 5 、.NET 6。

如同 MVC 一般,.NET Core 將許多軟體工程 Best Practices 加入其中,例如 IoC 的 Dependency Injection 以及取代 HTTP Module 的 Middlerware。

安全驗證

OWIN
微軟提出的架構,讓 Web 獨立於 .NET Framework 以及 IIS,成為 .NET Core 設計的基礎
OAuth 2.0
驗證的標準 Protocol,讓各驗證 Provider (Google, Facebook, Microsoft 等) 有一致的驗證標準達到單一入口多種驗證方式
OpenID Connect
實作 OAuth 2.0 的項目
JWT
在登入驗證後,HTTP 無狀態保持驗證的方式,為取代 Session, Cookie 的驗證方式
NTLM
早期的 Windows 驗證方式,由 Server 直球對決 User 的 Hashed Passwords 負責向 AD 進行驗證
Kerberos
取代 NTLM 的 Windows 驗證方式,由 KDC 負責驗證,再將 Token 提供給 User 到 Server 前進門

Troubleshoot Kerberos failures in Internet Explorer

Lifecycle

Http.sys => HttpRuntime => HttpApplicationFactory => HttpApplication => Http Handler
HttpRuntime
Global.asax
Http Context

參考資料

ASP.NET 簡史

An Overview of Project Katana

What's new in C# 10 | learn.microsoft

C# language versioning | learn.microsoft

.NET Framework 技術支援終止期限(EOS)整理

C#版本、.NET版本、Visual Studio版本对应关系

相關連結

ASP.NET MVC 從無到有打造一個應用系統

Visual Studio 入門教學