:: Kunagorn Sirikup :: C# Developer

7/5/56

ASP.NET MVC 3 Introduction

MVC (Model-View-Controller) คือ Design Pattern รูปแบบหนึ่ง ซึ่งจะมีการแบ่งโครงสร้างโปรแกรมออกเป็น 3 ส่วนโดยชัดเจน ซึ่งประกอบด้วย

- Model คือส่วนที่ใช้ในการติดต่อกับฐานข้อมูล ซึ่งทำหน้าที่ในการดึงข้อมูลขึ้นมาจากฐานข้อมูลขึ้นมา และทำการจัดการข้อมูลต่างๆไว้ในรูปแบบที่เหมาะสม

- View คือส่วนที่จะนำข้อมูลจาก Model ไปใช้แสดงผลให้ผู้ใช้เห็นผลลัพธ์ออกมาใน User Interface

- Controller คือส่วนที่จะคอยรับ Input จาก Client เข้ามาแล้วนำคำสั่งไปประมวลผล เพื่อสั่งงาน View และ Model ต่ออีกทีว่าจะให้ประมวลผลออกมาเป็นอย่างไร


MVC จะแบ่งส่วนการทำงานชัดเจน ช่วยให้สามารถจัดการและดูแลตัวระบบที่มีขนาดใหญ่ได้ง่ายมากขึ้น อีกทั้งยังช่วยให้การพัฒนาเพิ่มเติม หรือแก้ไข ปรับปรุง ระบบสะดวกมากยิ่งขึ้นอีกด้วย

หลักการทำงานของ MVC

1. Client ทำการ Request ข้อมูลผ่าน View
2. Request จะถูกส่งผ่านไป Controller เพื่อ Filter Action ต่างๆ
3. จากนั้น Controller ก็จะร้องขอไปยัง Model จาก Action นั้นๆ
4. เมื่อ Model รับการร้องขอก็จะทำการ Query ข้อมูลตามที่ Controller ส่งมา
5. Model จะส่ง Response ข้อมูลที่ได้กลับมาหา Controller
6. Controller ก็จะทำการกำหนดค่าลงในตัวแปรเพื่อส่งให้ View ต่อไป
7. View ก็จะนำตัวแปรเหล่านั้นไปทำการแสดงผลตามต้องการได้

Advantage of MVC Pattern

- SoC (Separate of Concern) ช่วยให้เราจัดการความยุ่งเหยิงในการพัฒนาออกเป็นสัดส่วนได้แก่ model, view และ controller
- รองรับการทำ test-driven development (TDD) 
- เหมาะสำหรับงาน web application ซึ่งรูปแบบการพัฒนานี้สามารถรองรับระบบงานใหญ่และการแบ่งงานกันทำงานภายในทีมพัฒนาทุกขนาด
- ระบบรองรับการขยับขยายเพิ่มเติมในอนาคต

How ASP.NET MVC work?


โปรเซสการทำงานระหว่าง ASP.NET Web Form กับ ASP.NET MVC


จากรูปคอลัมภ์ด้านซ้ายจะเป็นโปรเซสการทำงานของ ASP.NET Web Form จะพบว่ามีการใช้งาน Page Class และอาศัยการทำงานของ Postback event ซึ่งทำให้การทำงานนั้นมีความซับซ้อน ส่วนคอลัมภ์ด้านขวาจะเป็นโปรเซสการทำงานของ ASP.NET MVC จะเห็นได้ว่าไม่มีการ Postback event ทำให้ดูเรียบง่ายและเมนเทนได้ง่ายกว่า




Sequence Diagram การทำงานของ ASP.NET MVC Request


1. Browser เมื่อผู้ใช้ได้ส่งคำสั่ง request คำสั่งใด ๆ จาก Browser เข้ามา  เช่นขอหยิบยกตัวอย่างด้านบนhttp://localhost:63282/Home/About

2. URL Routing  จะนำ URL Request ที่ได้ไปแม๊พเข้ากับ pattern ที่ได้กำหนดไว้ใน Global.asax.cs ตั้งแต่ตอนที่ Application_Start() เรียกเมดธอดที่ชื่อว่า RegisterRoutes()  ซึ่งกำหนดค่าเริ่มต้นไว้ดังนี้ {controller}/{action}/{id}  เมื่อเทียบกับรีเควส  Home/About  ก็จะได้ค่า controller = Home, action = About  ดังนั้น RouteHandler จะไปขอ HomeController จาก ControllerFactory และทำการเรียก About Method ใน HomeController ตาม action ที่ร้องขอมา

3. Controller ในเคสนี้ About Action นั้น เป็นแค่การกำหนดค่า ViewData และสั่ง render Views/Home/About.aspx แค่นั้น    แต่ในการทำงานส่วนใหญ่มักจะมีการเรียกใช้ Model เข้ามาทำงานตามไดอะแกรมด้านบน    ซึ่งใน controller จะทำการเรียก Model เพื่อรัน business method ให้ได้ผลลัพธ์กลับออกมา จากนั้นก็ส่ง Data ที่ได้เข้าไป Render เพื่อให้ได้ ViewResult และหา ViewEngine ได้ที่ตั้งค่าเลือกใช้ไว้ ซึ่ง WebFormViewEngine เป็นของที่มีมาให้ใช้งาน

4. View เมื่อเลือก ViewEngine ได้ก็ทำการ Render HTML กลับไปยัง Browser


Credit : http://greatfriends.biz/webboards/msg.asp?id=123002





ไม่มีความคิดเห็น:

แสดงความคิดเห็น