說明微軟 .NET 開發的生態系,從 Visual Studio 建立專案、編譯到 DDL。比較 .NET Framework、.NET Core 以及 .Net 等 Runtime,並探討 C# 各版本在不同 Runtime 的支援情形。
說明
最早的 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
參考資料
What’s new in C# 10 | learn.microsoft
C# language versioning | learn.microsoft
.NET Framework 技術支援終止期限(EOS)整理
C#版本、.NET版本、Visual Studio版本对应关系