ASP.NET MVC 3: แนะนำให้รู้จัก

เกริ่นนำเรื่อง

ASP.NET MVC คือ framework ที่รับเอาวิธีการจัดการรูปแบบที่ดีมาจาก MVC design pattern เพื่อใช้ในการสร้าง Web Application แนวความคิดของ MVC design pattern จะจัดการแยกหน้าที่ขององค์ประกอบใน application ออกเป็นส่วนๆ(separation of concerns) เพื่อให้สะดวก รวดเร็ว และง่ายขึ้น ในการสร้าง พัฒนา และขยายระบบเพิ่มเติม รวมถึงมันจะทำให้เราทดสอบ application นี้เป็นส่วนๆได้โดยไม่กระทบ หรือกระทบน้อยที่สุดกับส่วนอื่น ซึ่งการที่เราแบ่งงานตามหลักความชำนาญเฉพาะด้าน(separation of concerns) ได้มันจะมาช่วยแก้ปัญหาหนึ่งในความยากของการพัฒนา web application software นั่นก็คือการทดสอบ Bussiness logic ที่มีความซับซ้อนมากนั่นเอง

หลายๆครั้งที่ต้องเจอ web application แล้วต้องการทดสอบ bussiness logic ก็มักจะทดสอบตอน run web application ทั้ง web ขึ้นมาหมดแล้ว เมื่อลงมือทดสอบก็จะเจอ bug มากมาย ที่มาจากทั้ง client javascrip, bussiness logic และ bug infrastructure ของระบบ และเมื่อกลับไปแก้ไข กลับมาทดสอบก็ run ทั้ง web application รอ load page ขึ้นมาใหม่หมด แล้วกดปุ่ม กรอกข้อมูลใน page ต่างๆ, กดปุ่ม รอ load อีก ไปจนกว่าจะถึงเหตุการณ์ที่เกิด bug เพื่อจะ test อีกครั้ง นี่ยังไม่รวมเวลาของ programmer ที่ต้องค้นหา bug ใน code ที่จัดการ objects หรือ องค์ประกอบได้ไม่ดีพอ ทำให้ค้นหาปัญหาได้ยาก และช้ามาก กว่าจะเจอ bug ต้นเหตุของปัญหาเจอ

ดังนั้น ASP.NET MVC จึงถูกออกแบบมาเพื่อแก้ปัญหาการพัฒนา web application ที่มีความยากต่อการทดสอบ และการจัดการองค์ประกอบบน web application เพื่อเปลี่ยนแปลง เพื่อต่อเติมขยายต่อได้ง่ายขึ้น(อาจจะเปลียบได้เหมือนกับว่าเรามีโครงสร้าง code แบบ 5ส) บทความนี้จะอธิบาย และทำให้คุณเห็นว่า ASP.NET MVC นี้จะจัดการปัญหาเหล่านั้นได้อย่างไร ลำดับต่อไปผมขออธิบาย MVC Design Pattern ให้คุณเข้าใจก่อนเพราะเมื่อคุณเข้าใจ patterns นี้แล้วการพัฒนา ASP.NET MVC application ก็ไม่ใช่เรื่องยากเลย

MVC Design Pattern

MVC นั้นย่อมาจาก Model, View และ Controller

Model: ใช้แสดง Bussiness Model หรือ Domain Model ที่มีพฤติกรรม และ state ตาม business stories หรือ domain problem ของขอบเขตปัญหาที่เรากำลังพัฒนาอยู่

View: ทำหน้าที่แสดงหน้าจอส่วนนำเสนอผู้ใช้(presentation) (view อาจจะเปลียบได้กับเป็นผิวหนังของ model ก็ว่าได้) มันจะแสดง state ของ model และแสดง behavior ของ model ด้วยตัวควบคุมต่างๆของ view ที่สนับสนุนได้(ขึ้นกับ browser) view ยังทำหน้าที่ควบคุม user ให้อยู่ในกรอบการทำงาน(control) ตรวจสอบข้อมูล(validate) และอำนวยความสะดวก(user friendly)ต่างๆเพื่อให้ user เข้าถึงหรือใช้ระบบของเราได้อย่างรวดเร็ว ถูกต้อง สะดวก และปลอดภัย ให้มากที่สุด

Controller: คือส่วนควบคุม และจัดการรับส่งต่อเหตุการณ์ หรือ request ทั้งหมดของระบบ controller จะรับรู้เหตุการณ์ที่เกิดขึ้นจากการกระทำจาก user ทั้งโดยตรงและอัตโนมัติ แล้ว controller จะส่งต่อเหตุการณ์นั้นไปยัง model ที่เหมาะสม model จะดำเนินการต่อตามหน้าที่ของมัน(specialization) เมื่อจบขั้นตอนของ model กระทำแล้ว controller ก็จะแสดง model นี้กลับไปด้วย view ที่เหมาะสมแล้ว view ก็จะแสดง(binding) state หรือ information ของ model ต่างๆตามหน้าที่ของมันแก่ user อีกครั้งหนึ่ง (อาจกล่าวได้ว่า Controller ทำหน้าที่ inject model ให้กับ view ก็ได้)

นี่คือภาพของ MVC pattern

โดยเส้นทึบคือความสัมพันธ์แบบโดยทางตรง(เรียกกันตรงๆไม่ผ่านสื่อ เช่น สะกิดเรียก เราก็สะกิดได้ทีละคน และต้องอยู่ใกล้ๆกัน) และเส้นประแสดงความสัมพันธ์แบบโดยอ้อม(เรียกกันอ้อมๆแบบผ่านสื่อ เช่น การตะโกนเรียก สื่อก็คืออากาศ เราก็จะเรียกใครก็ได้ กี่คนก็ได้ อยู่ใกล้-ไกลก็ได้ ขอให้ได้ยินเสียงที่ผ่านอากาศไปก็พอ)

เรามาเริ่มเปิด projects ASP.NET MVC Application กันเลย

1. เปิด Microsoft Visual Studio 2010 Express หรือ ตัวเต็มก็ได้ขึ้นมา แล้วเลือก New Projects -> ASP.NET MCV 3 WEB Application ตั้งชื่อ projects ตามภาพ

2. พอกด OK จะเจอกับหน้าจอที่สอง เลือก Select a template: Internet Application , View Engine: Razor และ check ที่ create unit test projects ตามภาพ

กด OK ก็เป็นอันจบขั้นตอนการสร้าง ASP.NET MVC 3 เสร็จเรียบร้อยแล้ว

พอลอง run ขึ้นมาจะได้หน้า web page ตามข้างล่างนี้ครับ

ผมขอจบบทความ ASP.NET MVC 3: แนะนำให้รู้จัก ไว้แค่นี้ก่อน ตอนหน้าผมจะมาอธิบาย โครงสร้าง web ที่สร้างขึ้นนี้ …

ขอบคุณครับ

บทความต่อจากบทความนี้: ASP.NET MVC 3: โครงสร้างของ MVC โดยใช้ Razor

Advertisements

#net, #asp-net, #pattenrs