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

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

ผมไม่ได้เข้ามาเขียนบันทึกเสียนาน กลับมาอีกที 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 ทุกท่านนะครับ
หากเราจัดวางกระบวนการต่างๆไว้ดีแล้ว จะช่วยให้การดำเนินการพัฒนาไม่กระเทือน(มาก)นัก
หากมีการขอให้แก้ไขจากผู้ว่าจ้างพัฒนาระบบ หรือผู้ใช้