@ 課程主題:
跨平台的 API Framework 框架開發V2(全新課程)~燒燙燙來了!!!
@ 前言:
在上一次約2019年的跨平台Web API Framework 框架設計的課程廣受好評之後,因為疫情與其它因素,事隔了5年了,終於在最近在許多FB團友期待下,推出 API Framework V2.0 課程,與上一堂類似,都是 API 框架設計,只不過本次會以更廣的以軟體架構設計的視角,來探討 API 框架設計。
這堂有別於上一堂課程,在上一堂課程中,我們講述了一個從無到有建立 ApiHostBase 的基礎類別,來提供一種共用 API Controller來『動態』重複使用 Reuse 商業物件Business Object的一種方式,這次我們把架構眼界再往上提升一個層次,從六角架構的角度出發、並以框架設計為出發點、並基於一種使用者需求(線上租車需求為例)來設計一組服務此 Core Domain 的框架。
@課程源由:
在歷經了.NET Core的不斷改版(目前已經到.NET 8)與客戶需求不斷的升級 API Framework 框架,因此這個框架也由當時的 V1.0 升級到 V2.0,原先的 Business Object 架構將由六角架構Hexagonal Architecture來取代,將每一個(組件/套件/企業商業邏輯/..)擺放在下圖中正確的位置上。在這個架構上的調整下,我們會將框架往外層推,使我們的領域層Domain Layer更乾淨,而我們的API框架也推到了Infrastructure如下圖:
所以,也就是說,我們真的會實作一個Domain Layer,我們的主要租車需求也從 Domain Layer 開始,程式碼的撰寫也會先從這裡開始,架構基於六角架構,實務的抽象來自一個 DDD 的 Core Domain 的 Domain Modeling 的圖形,不過不必擔心,課程我會介紹此 Domain Modeling 的來龍去脈,不會有瞎子摸象的感覺。
有了 Domain,當然就是實作 Application Services 了,而且完全基於一個租車系統的需求,這時,我們的視角會變成如下圖:
從上圖視角,並以 S.O.L.I.D. 角度,逐步的完成整個 API Framework 框架的開發。
@學習本課程後、你會學到什麼:
本課程會讓你學習到在規劃團隊共用的 Platform 或者是框架時,你該以什麼樣的著眼點來進行設計,在解決使用這需求時,同時的思考怎麼樣讓框架有足夠的靈活性?
課程中會指導你:
- 可學到如何在六角架構中建立適應性、符合自身需求的框架設計技巧
- 學習到 Cross-Cutting Concerns 跨領域關注點概念 與 AOP 實務技巧
- 可學習到如何在基於一個需求、與實踐 S.O.L.I.D. 過程中、逐步完善一個六角架構的軟體系統
- 學習到基於 Clean Architectuure 視角的 NuGet Packages套件規劃技巧
課程中,我會帶著大家基於租車系統需求來實踐 S.O.L.I.D.,並在實踐 SOLID 過程中,逐步完善一個基於六角架構的租車系統,並在六角架構中,學習如何將客製化框架擺放在正確的位置上。
@課程大綱(Agenda):
- 究竟什麼是 (Design)?什麼是 (Architecture)?
- API 設計的挑戰、從 API 來重新檢視基本軟體設計原則
- 從 S.O.L.I.D. 角度來規劃你的 API 框架
- 什麼是軟體架構?設計模式?
- 又要模組化、封裝、低耦合、高內聚?拿捏得當比較重要!
- 你需要什麼?或你想要什麼?
- 實作:一個簡單的租車需求
- 從整潔架構談自定義 NuGet 套件規劃與使用
- 套件的定義?哪一類的程式碼應該歸類為套件?
- 從 Clean Architecture 的角度來談框架內的 NuGet Packages 的規劃與使用
- 套件的定義?哪一類的程式碼應該歸類為套件?
- EasyArchitecture Framework 的現有架構規劃
- EasyArchitecture 要達成的目標
- 一切從可重複使用 Re Use 開始
- 如何設計你的範本:從你的範本開始
- 設計你自己的 Web API Framework 框架
- Q & A
@課程對象:
- 已有 C# 約 2-3 年 ASP.NET WebForm 或 MVC 使用 C# 網頁開發經驗的開發人員,具備 ASP.NET Web API 開發經驗更佳
- 或本身已經 Web API 的開發人員,希望對 Web API 能有近一步了解,甚至設計自己的 Web API 框架的開發人員。
- 目前為程式設計師,想要拓展架構設計思維、甚至想充實軟體架構設計技能的開發人員
- 或本身已經是 SD 或架構設計人員,對程式開發仍充滿熱情、想了解 API 框架設計相關人員
- 或者甚至您已經是全端開發人員,想了解 C# 的後端開發,也可以參加本課程
@課程目標:
由老師手把手帶著大家,如何從無到有建置一個簡單租車系統的 Core Domain (核心領域、在DDD領域驅動設計的戰略建模中,表示目前關注的領域中最核心部分),這裡還不熟悉DDD也沒有關係,課程中,我們不畫 UML 也不畫 Use Case 或 Class Diagram,但是我會介紹當天課程的核心目標,就是要將基於租車系統的核心需求,在六角架構上實踐 + 加上我們設計的框架,所以也就是說,框架會服務這個租車系統,因為框架是細節。
課程開始前,我會給大家安裝一個套件,這個套件會幫助我們少寫一些程式碼,主要是因為課程時間有限,我們要將課程的關注點集中在 API 的框架設計上面,一些 Domain Modeling 的程式碼雛型可以藉由這個套件當中的範本來進行 Code Generate 即可,以便讓我們在有限的授課時間裡,將 Focus 聚焦在整個架構的設計上,與 NuGet Packages 套件的規劃上。
@課程導讀:
本課程雖然部分是API Framework 框架設計的延續,但內容並不延續上一次的課程,全部重新制定,所以,若沒上過我的第一版的學員也不用擔心,因為本課程全部為全新內容。在開始上課前,可導讀下面內容:
(1). 我的部落格[軟體架構設計:無題]
https://gelis-dotnet.blogspot.com/2022/08/blog-post.html
(2). 我的社團[軟體開發之路]DDD領域驅動精選貼文
https://www.facebook.com/groups/361804473860062/permalink/9463322727041479
(3). 先前教育訓練影片[軟體架構設計 透過 SOLID 與 六角 整潔架構 來建築強固的軟體系統]
https://www.youtube.com/watch?v=e-BQMtWcQKc&t=1164s
上面這則影片指導了一個完整的從原始租車需求開始,我從Use Case Model 開始,繪製Domain Modeling 後,將 Core Domain 先透過 LINQPad 撰寫為C#程式碼雛形,接著再藉由實踐SOLID的過程中,將基於六角架構的租車系統從無到有的實作出來。
@課前須知:
本課程需『自備筆電』、關於環境的準備,請使用.NET Core 8.0以上,與 Visual Studio 2022 Community/Professional/Enterprise 的 v17.11 (建議目前最新) 以上,這三個版本都可以,請先自行安裝好。
因此,建議作業環境:
Windows 10 22H2以上、Windows 11也可(老師使用Windows 10)
另外,由於課程會使用到『ASP.NET 網頁開發』與『.NET Core 跨平台開發』還有『.NET桌面開發』,因此請安裝以下說明的部分:
注意:
Visual Studio 2022從v17.5開始將.NET Core跨平台開發視為內建功能,所以你無法在安裝畫面中勾選了。
.NET桌面開發一定要勾選,因為在建立類別庫專案時,主要的的內建範本的提供者就是.NET桌面開發。
(1). 請勾選 ASP.NET 與網頁開發
(2). 請勾選 .NET 桌面開發
(3). 請在個別元在元件裡,將所有(包含最新).NET Framework SDK 工具一並勾選、確認ASP.NET網頁程式開發條件與進階功能都有勾選
(4). 下載安裝 ASP.NET Core 8.0 SDK 工具 & .NET Core Runtime
注意:目前最新的8.0.8需要搭配最新版本的Visual Studio 2022 V17.11,謝謝。
相關軟體可至下方連結下載,並安裝(連結如下):
(1). 下載 Visual Studio 2022 Community:
https://visualstudio.microsoft.com/zh-hant/vs/community/
(2). 下載 ASP.NET Core 8.0 SDK & .NET Core 8.0 Runtime
https://dotnet.microsoft.com/en-us/download/dotnet/8.0
@ 關於講師:
我是 Gelis,從事軟體專案開發相關工作已經 25 餘年(顧問工作10年),專案開發 15 年,目前任職資深.NET技術顧問,目前主要負責與 .NET 相關的開發、顧問、訓練、流程設計導入、工具評估、客制化框架設計、等工作。
我熱愛軟體工程、UML 系統分析與設計,擅長OO物件導向分析與設計外,也專精於企業流程改造(電子化)協助將商業邏輯服務化、彈性化: 以 SOA 服務導向架構的方式提供商業邏輯,讓各應用程式在開發時容易調用,並可提高商業邏輯的再利用率,協助呈現介面多元化: 改變單一網頁呈現方式,依作業屬性提供 Windows Form 、 Web 與 Mobile 同時應用,提升企業的開發與工作效率,協助企業內部開發團隊環境與技術一致化: 統一開發環境與技術、Programming Rule、運用協同工作平台 Azure DevOps,與 Cloud Solution 建置雲端相關應用、同時因為專案開發出身,我也協助企業建置 ERP/CRM/CMS 或企業內部 EIP 等相關系統。
我指導軟體開發的很多本身也是軟體公司、或者是自有團隊在維護內部系統的SI保險業或製造業等公司行號。
曾經連任七屆微軟最有價值專家 MVP,有個人的技術部落格 『Gelis 技術隨筆』,以記錄在技術上學習的新知與個人的研究發表。
@ 講師經歷:
- 2015集英信誠-與大師對談講師
- .NET Conf Taiwan 2018 講師
- Visual Studio Everywhere 台北場講師
- 資策會 - IBM 授權教育訓練中心 - UML 課程講師
- .NET Conf Taiwan 2018/2019/2020/2021/2022/2023 講師
- HiSKIO 平台講師
- Study4.TW 社群講師
- 企業內訓講師
@ 現職:
- 集英信誠 資深 .NET 技術顧問
@ 關於午餐:
本課程提供中午便當
餐食(葷/素)問卷:
https://forms.gle/EqMNbq6Umr6UsWP4A
@ 講師的顧問相關經歷:
1. 軟體架構開發(導入)顧問需求:
- 協助將商業邏輯服務化、彈性化: 以 SOA 服務導向架構的方式提供商業邏輯,讓各應用程式在開發時容易調用,並可提高商業邏輯的再利用率,統一開發環境與技術、Programming Rule/Coding Standard、導入Azure DevOps、佈署工具 Team Build 自動化 Unit Test 以提高程式碼品質外,並使用 Azure WebSites 實現 CI+CD
- 並協助將原本 .NET 4.5.1 的 ASP.NET MVC or WebForm 專案升級到 .NET Core 6/7/8 的版本
- 透過客制化系統框架的開發、或解決開發流程不順暢等相關專案協作等問題,藉由平常開發習慣的養成、像是 Coding Rule/Standard 與程式撰寫的 Patterns,加上 TDD 等開發方法培養開發人員良好的開發習慣
- 使用 Azure DevOps作為專案開發協同資訊分享的平台,與原始程式碼管控 Version Control 的平台,導入Work Item,並協助落實Agile Board 的PBI與Check-In Policy
2. 保險業系統顧問 / Redis 導入系統顧問:Redis Cache 主機架構規劃、現有AppFabric轉向導入Redis、現有產品改寫支援Redis、軟體架構規劃、單元測試導入、日常開發 與 協助 Trouble-Shooting 處理
3. 新竹科學園區- .NET 6 系統升級顧問 + 長期系統顧問:現有 net451 平台升級 .NET 6、平台改寫、API Framework 升級、主機環境升級、DevOps Server 自動化佈署顧問、日常維運等
@ 講師教受過課程:
..NET Core 跨平台 Web API 框架開開發
.ASP.NET 5 新功能與未來變革
.ASP.NET MVC 4 RC 新增功能介紹
.ASP.NET MVC 4 Web API 開發簡介
.ASP.NET MVC 4 Web API全攻略
.ASP.NET MVC 4 新增功能介紹
.ASP.NET MVC 5 快速上手(實戰篇)
.ASP.NET MVC 6 新功能初探
.ASP.NET MVC 基礎課程
.Code Review 的目的
.C# 4.0 LINQ 與泛型應用(簡介與開發)
.談架構設計與 LINQ (使用ASP.NET MVC)
..NET 技術研討(LINQ與架構開發)
..NET Framework 技術架構發展與 C# 6.0
..NET Standard 2.0 與 .NET 的未來
.HTML5 課程
.IIS 7.0 應用程式開發實務
.IIS 7.5 的管理_開發及佈署簡介
.Multi-Thread 多執行緒程式設計(Use C#)
.TFS Source Control 功能說明
.Troubleshooting 的藝術
.Visual Studio 2010_塑模化應用程式講座
.Visual Studio 2012 與 ASP.NET 4.5 (新功能與開發介紹)
.Visual Studio 2013 新功能介紹
.Visual Studio 2015 跨平台應用程式開發
.Visual Studio 2015 開發工具入門應用與功能使用教學
.CSS 前端網頁設計概論
.前端 JavaScript 與 jQuery 基礎應用課程
.WCF 進階課程
.Vue.js 前端開發基礎入門
.使用 Release Management 2013 進行自動化部署
.前端大型系統的基石 TypeScript
.C# 物件導向 - 分層架構課程
.團隊開發永遠的痛 - 談導入團隊開發的共同規範
.團隊開發系列-設計符合團隊的範本精靈 (Project Template)
.如何使用 Visual Studio 2015 發揮最大生產力
.如何培養架構性思考(談軟體架構師必經之路)
.如何將現有 ASP.NET Web Form 網站轉為 ASP.NET MVC
.如何透過 UWA 存取 ASP.NET Web API
.客製化的 Web API 的框架設計
.從 Web Form 到 MVC
.架構設計好簡單系列 - 設計符合團隊的範本精靈 (Project Template)
.活用 Application Insights
.淺談 ADO.NET
.現代化網站架構
.軟體開發之路甘苦談
﹒響應式網頁設計概念與MVC架構簡介
@ 我的連絡方式:
Skype/EMail:
wergelis@msn.com
關於我:
部落格 (Gelis 技術隨筆):
http://gelis-dotnet.blogspot.tw
https://www.dotblogs.com.tw/gelis/
FB 社團 (軟體開發之路):
https://www.facebook.com/groups/361804473860062/
FB 粉絲團 (Gelis 的程式設計訓練營):
https://www.facebook.com/gelis.dev.learning/
我講授過的課程 SlideShare:
https://www.slideshare.net/GelisWu
Github:
注意事項
- 現場備有 WiFi ,但人數一多,速度可能沒辦法保證比你自己的 4G 來的快。
- 如遇不可抗力或意外狀況,活動主辦單位得以保留改期、調整內容、或是取消活動與將全額退費之權利。
- 這是一個收費的課程,因為這完全是一個實務經驗的分享課程,您覺得內容您有需要就可來報名參加,講師必定讓您滿載而歸,並應用在您實際的工作環境之中。
購票與退票相關事宜
- 本活動由 KKTIX 代為處裡售票與退票相關事宜。
- 退票郵購票者提出,KKTIX 會酌收 10% 手續費,且活動前十天內(不含活動日)不予退票。
- 詳情請參閱 KKTIX 服務條款。
主辦與協辦單位