本課程的重點不在於轉換為 MVC 這件事,重點在於架構性的思考,筆者會先帶著大家將原本的網站分層、將各層 (Layer/Tier) 職責切割清楚,說明當我職責切分清楚時,前端其實不管是既有的 WebForm 應用程式,或是重新撰寫的 MVC 應用程式,都可以操作這個Services層
這一次,筆者將從頭帶著大家動手做。如何將一個現有的 Northwind 的訂單編輯程式(ASP.NET WebForm) 轉換為 ASP.NET MVC
當然,筆者還是要強調,本課程的重點不在於轉換為 MVC 這件事,重點在於架構性的思考,筆者會先帶著大家將原本的網站分層、將各層 (Layer/Tier) 職責切割清楚,說明當我職責切分清楚時,前端其實不管是既有的 WebForm 應用程式,或是重新撰寫的 MVC 應用程式,都可以操作這個Services層。
課前須知:
本課程使用 C# 為主要語言,希望是有 OOP 概念 (不深沒關係)、但 需有ASP.NET 2.0~4.0 Web Form 開發 2-3年經驗較好,使用過 ADO.NET,使用過 Entity Framework(基礎),聽過 LINQ、且相關經驗最好都是使用 C#。
課程一開始,筆者會以架構性的思考來貫穿整個課程
課程大綱:
Agenda
觀念澄清
先別說轉換這件事,我們先來談談分層、架構這回事。
良好的職責切割 ==> 談分層
具備架構思維的程式設計師所開發的Web Form一樣很好維護
首先,如何培養架構性的思考
先從基礎的來
1. 可從 重構 開始培養
2. 元件化/模組化 概念
撰寫程式的架構性思考 (圖)
實際 Coding 時,該在腦中進行的小迴圈
即便是 Coding,也要以架構師的角度來看程式碼
但現有系統怎麼做?(後面來詳談)
需求你清楚嗎?
Northwind 的客戶訂單系統 為例
需求分析/Business Logic/Data Access Layer
順序:兩方切入 (UI <==> DAL)
1. 分離 DAL (如果你本來就沒有 DAL 那你只能重寫)
2. 撰寫為 UnitOfWork Pattern
分析、並找出 Service 介面
3. 建立 Service 層專案 (使用 Autofac)善用IoC & DI概念
兩種方式:
A. 同專案內使用 Controller 取得資料 (使用 Autofac 注入 Service)
B. Front-End 架構 (建立 Web API Controller 專案)
透過 Web API 開放 Service 層
4. 新增、重新撰寫 ASP.NET MVC 的 View 與 Controller
5. 分析 Web Form 的 UI 層
A. 改寫所有指定 DataSource 的部分
B. Demo 原有 Web Form 做少部分修改,也可以存取 Services 層
課程結束後,我們會發現
各層職責分離,容易維護與需求修改,不至於牽一髮動全身,重用性提高不少,原本的 Web Form 少部分改寫也可以叫用 Service,甚至其他用程式 Windows Form/手機/任意 Device 也可以輕易操作 Service。
架構設計的思維是可以慢慢從案子、實作、與不斷地重構、學習、與 Troubleshooting 的經驗中慢慢培養出來的。
備註:
如果有時間,才將 Services 層在切割出 Web API,這時,前端我可以使用 MVC+AngularJS 或 jQuery 來存取這個Web API。
本課程開班與否、上課教室、地點皆由 mis2000 協助籌辦。
報名方式可參考下方連結:
http://www.dotblogs.com.tw/mis2000lab/archive/2015/06/05/gelis_webform_to_mvc.aspx
感謝大家
簽名:
學習是一趟奇妙的旅程
這當中,有辛苦、有心酸、也有成果。有時也會有瓶頸。要能夠繼續勇往直前就必須保有一顆最熱誠的心。
軟體開發之路(FB 社團):https://www.facebook.com/groups/361804473860062/
Gelis 程式設計訓練營(粉絲團):https://www.facebook.com/gelis.dev.learning/
如果文章對您有用,幫我點一下讚,或是點一下『我要推薦』,這會讓我更有動力的為各位讀者撰寫下一篇文章。
非常謝謝各位的支持與愛護,小弟在此位各位說聲謝謝!!! ^_^