Development :: รู้จักกับ Data Access Layer


การค้นหาความรู้ของเราอาจพบว่าน่าเบื่อและไม่รู้ว่าที่รู้มานี้ถูกหรือไม่ แต่อย่าหยุดที่จะค้นหา เพราะสิ่งที่เราค้นหาอาจอยู่ภายใต้สิ่งที่เราไม่ต้องการก็ได้

สวัสดีครับเพื่อนๆ

ผมไม่ได้เข้ามาเขียนบันทึกเสียนาน กลับมาอีกที G2K เปลี่ยน ui ไปอีกขั้นหนึ่งแล้ว
ขอให้พัฒนายิ่งๆขึ้นไปนะครับ เป็นกำลังใจให้ทีมพัฒนาทุกท่านครับ
เป็น Developer นี่ทำงานปิดทองหลังพระครับ
หาก engine ดีแต่ user interface ไม่ง่ายต่อผู้ใช้ ก็เป็นอันจบข่าวเหมือนกันนะครับ

เรื่องที่ผมมาเล่าสู่กันฟังรอบนี้เป็เรื่องเกี่ยวกับ
Web application
ASP
ASP.Net

ผมเคยเร่ถาม Developer ท่านอื่นๆทั้ง pantip.com , thaiadmin.org ,
และจากเว็บไซท์แหล่งอื่นๆ

เป็นปัญหาเกี่ยวกับ Web application ครับ
เป็นการสร้างกระบวนการ การตรวจสอบ username ของสมาชิกในฐานข้อมูลครับ
เพียงต้องการนำ username ที่สมาชิกผู้สมัคร
ไปตรวจสอบกับ username อื่นๆในฐานข้อมูลว่า
ซ้ำหรือเปล่า
 ไม่ยากใช่ใหมครับ หากเป็น asp ยิ่งไม่ยากเลยครับ

แต่ที่เป็นปัญหาเพราะผมใช้ asp.net หากถามผมว่าทำไมถึงใช้ asp.net
ก็คงต้องตอบว่า ก็อยากลองของน่ะครับ :> และสถานการณ์บังคับ

หากท่านผู้อ่านสงสัยว่ามันดียังไง ผมว่าลองไปหาอ่าน benefit จาก www.microsoft.com

จนกระทั่ง...วันหนึ่งผมได้อ่านเรื่อง Data Access Layer จาก www.asp.net ชีวิตผมก็เปลี่ยนไป....

แนวคิดการแบ่งส่วนการทำงาน

จะแบ่งส่วนการทำงานออกเป็นชั้นย่อยๆ
ในแต่ละชั้นจะแบ่งการทำงานออกเป็นส่วนๆ

ตัวอย่างนะครับเช่น ผมไปซื้อหนังสือที่ร้านแห่งหนึ่ง

1.เมื่อผมเลือกหนังสือมาแล้วผมนำหนังสือไปชำระเงินที่หน้าร้าน
2.ผมชำระเงินให้กับพนักงานขาย
3.พนักขายงานออกบิลให้ผม
4.พนักงานควบคุมคลังสินค้าตัดรายการหนังสือที่ผมซื้อ
5.พนักงานบัญชีของร้านทำสรุปยอดรายการขาย โดยอาจเป็นรายวัน หรือ เดือน หรือ ปี

จากตัวอย่างที่ผมยกมาพนักงานขายจะส่งต่อรายการขายไปให้พนักงานสินค้าคงคลังเพื่อตัดยอดหนังสือและส่งต่อรายการไปให้ฝ่ายบัญชีเพื่อสรุปยอด
แต่ละฝ่ายในร้านจะทำงานตามแต่หน้าที่ของตนเองและส่งมอบงานนั้นๆไปตามลำดับขั้น

การทำงานของ Data Access Layer ก็ทำงานในลักษณะนี้เช่นกันครับ
ไม่จำเพราะ ASP.Net นะครับที่ทำได้ ไม่ว่า Technology ของฝั้ง WinApp หรือ WebApp ทั้ง php / jsp / asp / ... ก็สามารถทำได้เช่นกัน
DAL จะแบ่งส่วนการทำงานออกเป็น LAyer ครับ แยกกันทำงานไปแต่ละส่วนเลย

DAL 


ส่วนล่างสุด

จะเป็น Database ครับ
จะมีฐานข้อมูลของระบบของเราอยู่ที่นี่

ชั้นที่ 2 เรียกว่า Data Access Layer

ทำหน้าที่เก็บคำสั่งเพื่อจัดการกับฐานข้อมูลเช่น insert , update ,delete,select

 

ชั้นที่ 3 ถัดมาจะเป็น Bussiness logic layer

ที่ชั้นนี้จะมีหน้าที่รับคำสั่ง รับค่าที่ผู้ใช้ระบบป้อนเข้ามาเรียกใช้ data access layer อีกทีหนึ่ง
ในชั้นนี้เราสามารถใส่เงื่อนไขพิเศษ ตามที่เราต้องการที่ชั้นนี้ได้

 

ชั้นที่ 4 เรียกว่า presentation layer

 
ทำหน้าที่ติดต่อกับผู้ใช้รับค่าข้อมูลเช่นรับข้อความ ตัวเลข ภาพที่ป้อนเข้ามา
และยังทำหน้าที่แสดงข้อมูลให้แก่ผู้ใช้ ด้วย
ที่ชั้นนี้ก็คือ web form ของเราที่มี control ที่ใช้แสดงค่าข้อมูล ใช้รับข้อมูลวางอยู่

ผมเคยสงสัยครับว่าทำไมมีชั้นที่ 3 อีก ในเมื่อรับส่งค่าจาก presentation layer ได้โดยตรงเลย ในทางปฏิบัติเราอาจจะสร้างชั้นที่ 3 กับ 4 เป็น ชั้นเดียวกันเลยก็ได้ครับ
เพียงแต่การแก้ไขน่าจะยุ่งยากกว่า การแบ่งออกเป็นส่วนๆแบบนี้

ย้อนไปที่ปัญหาของผมครับ ที่ผมเคยถามคนอื่นๆ
ผมแก้ไขด้วยการใส่ Function การตรวจสอบ username
ลงไปที่ชั้น Bussiness logic layer นี้โดยรับค่ามาจาก Presentation layer

เรื่อง n Tier นี้มีประโยชน์กับ Developer ทุกท่านนะครับ
หากเราจัดวางกระบวนการต่างๆไว้ดีแล้ว จะช่วยให้การดำเนินการพัฒนาไม่กระเทือน(มาก)นัก
หากมีการขอให้แก้ไขจากผู้ว่าจ้างพัฒนาระบบ หรือผู้ใช้

หมายเลขบันทึก: 140632เขียนเมื่อ 21 ตุลาคม 2007 19:11 น. ()แก้ไขเมื่อ 6 กันยายน 2013 18:28 น. ()สัญญาอนุญาต: สงวนสิทธิ์ทุกประการจำนวนที่อ่านจำนวนที่อ่าน:


ความเห็น (6)

ดีครับ แบ่งปันความรู้ให้เพื่อน ๆ ทราบ

ขอบคุณมากครับ

ยินดีครับ

ขอบคุณที่เข้ามาเม้นนะครับ

แล้วถ้าเทียบกับ mvc หละคับ ต่างกันรึป่วา

เป็นคำถามที่ดีมากครับ

ลักษณะโดยรวมแนวคิดคือการแยกส่วนการทำงานคล้ายกันครับ

แต่วิธีการนั้นไม่เหมือนกัน

1.Physical / Logical

การทำงานแบบ n Tier มักมีการเชื่อมต่อแบบ Physical

คืออาจมี db server ที่ทำหน้าที่ Tier ล่างสุด ,

มี Web App Server ทำหน้าที่ Business Logic

และใช้ Web Browser เป็น Presentation Tier

ในขณะที่แบบ mvc เป็นการนำ Software มาทำงานร่วมกันแบบแยกส่วน (แบบ Logical)

ภายในมี Model-View-Control ที่ทำหน้าที่ร่วมกัน

โดยทั้งสามส่วนนี้เป็นเพียง File ที่ทำหน้าที่ของแต่ละส่วนเท่านั้น

ลักษณะการเชื่อมต่อของ n Tier เป็นการส่งผ่านจาก Layer ล่างไปหาบน หรือบนลงมาล่าง ไม่มีกระโดดข้าม

แต่การทำงานของ MVC จะมีการทำงานโดยตรงและอ้อมดูจากลิ้งด้านล่าง

http://en.wikipedia.org/wiki/Model%E2%80%93View%E2%80%93Controller

การทำงานจะมี Controller เป็นตัวกลางในการจัดการ

โดยรับ input จาก View และให้ส่งข้อมูล output จาก model ไปยัง View

ลองศึกษาจาก

http://stackoverflow.com/questions/698220/mvc-vs-n-tier-architecture

ดูครับ

ขอบคุณมากสำหรับคำตอบครับ

ขอถามอีกข้อนะ คือ Service layer คือส่วนที่แยกออกมาจาก Controller ของ MVC ใช่ป่าวครับ

ซึ่งจะย้ายมาอยู่ในส่วนของ Model แทน ทำหน้าที่เป็นตัวกลางละหว่าง Controller กับ Repository

แล้วถ้าเทียบกับแบบ 3-Tier ละครับจะจัดอยู่ในชั้นใหนหรอครับ ตอนนี้กำลังศึกษาเรื่อง MVC อยู่

ขอบคุณล่วงหน้าสำหรับคำตอบครับ

พบปัญหาการใช้งานกรุณาแจ้ง LINE ID @gotoknow
ClassStart
ระบบจัดการการเรียนการสอนผ่านอินเทอร์เน็ต
ทั้งเว็บทั้งแอปใช้งานฟรี
ClassStart Books
โครงการหนังสือจากคลาสสตาร์ท