<%@ Page Language="VB" ContentType="text/html" ResponseEncoding="windows-874" %> http://www.siam2dev.com >> ชุมชนนักพัฒนาซอฟต์แวร์ของไทยแห่งใหม่
เข้าสู่ระบบ ::    
http://www.siam2dev.com >> ชุมชนนักพัฒนาซอฟต์แวร์แห่งใหม่
Home  
News  
Articles  
Programming Zone  
DownLoad  
Contact US  
Links  
Webboard  
ฯลฯ  
 
 
 
 ." การดีบักยากกว่าการเขียนโค้ดสองเท่า
ดังนั้นหากคุณเขียนโค้ดโดยใช้สติปัญญาทั้งหมดที่มี คุณจะโง่เกินกว่าที่จะดีบักมันได้ "


ไบรอัน ดับบลิว เคอร์นิกาน ( บิดาภาษา C )
 
 
การเขียนโปรแกรมเชิงวัตถุด้วย VB.NET

Contents :: เนื้อหา
     OOAD
     Class & Object
     Constructor & Destructor
     Attribute & Function
     Encapsulation & Information Hidding
     Inheritance
     Polymorphism :: Overloading :: Overring
     Overriding
     Interface
     Association Class 1 , 2

    
N-Tier ประกอบด้วยส่วนหลักอยู่ 3 ส่วน คือ

Interface<------->Business Logic<------->Data Access Layer

1. Interface จะเป็นส่วนของการติดต่อกับผู้ใช้ พูดง่าย ๆ ก็คือ ฟอร์มครับ ทำหน้าที่ในการรับส่งและแสดงข้อมูล ไม่มีหน้าที่ประมวลผล
2. Business Logic ตามชื่อบอกอยู่แล้วว่าเป็นตรรกะของธุรกิจ หมายถึง เป็นข้อกำหนดของแต่ละงานที่เราต้องการทำ เช่น การตรวจสอบข้อมูลที่รับจาก Interface ว่าเป็นไปตามเงื่อนไขที่กำหนดหรือไม่ การบันทึกรายการเบิกเงิน ซึ่งต้องทำเป็นทรานเซกชั่นที่จะต้องบันทึกรายการในตารางเบิกเงินและตารางลูกค้าที่มียอดคงเหลือ BL จะสามารถประมวลผลได้และฉลาดครับ
3. Data Access Layer เป็นส่วนของการติดต่อเพื่อเขียนหรืออ่านข้อมูล ส่วนนี้ถ้าจะเปรียบก็คงจะเป็นเครื่องพิมพ์ครับ ใครเขาสั่งอะไรมาก็พิมพ์อย่างเดียว ข้อมูลที่สั่งมาจะถูกหรือผิดนั้นไม่มีหน้าที่ตัดสินใจ เช่น การในบันทึกรายการเบิกเงินนั้น BL จะสั่งให้ DAL ทำฟังก์ชั่น บันทึกเรคฯ ในตารางเบิกเงิน และตารางยอดคงเหลือของลูกค้า จะเห็นได้ว่า BL จะรู้ว่าจะทำรายการเบิกเงินจะต้องบันทึกลงตารางอะไรบ้าง ส่วน DAL เมื่อรับคำสั่งจาก BL แล้วก็จะบันทึกเรคฯ ลงตารางเบิกเงิน เสร็จแล้วจึงจะบันทึกเรคฯ ลงตารางลูกค้า

จะเห็นได้ว่า N-Tier จะเป็นลักษณะของการแบ่งส่วนการเขียนโปรฯ ออกเป็นส่วนย่อย ๆ ทั้งนี้เพื่อสะดวกในการแก้ไขและเปลี่ยนแปลงในอนาคต จะแก้ส่วนไหนก็ไม่กระทบถึงส่วนอื่น ผมขออธิบายแค่นี้ก่อนนะครับ ต้องเล่ากันยาวคงไม่ไหว

ส่วนที่คุณ mc ถามนั้น หลักการก็คือเขียนในส่วนของ BL เป็น dll และควรเขียนเป็นลักษณะ OOP นะครับ เมื่อเขียนเสร็จแล้วก็รีจิสเตอร์ลงบนเครื่องที่ต้องการใช้ แล้วก็สร้าง interface โดยภายใน interface ก็จะต้องประกาศสร้างออปเจคจาก BL ที่เรารีจิสเตอร์เอาไว้ และเรียกใช้งานในลักษณะ OOP ลงใน event ต่างของ interface อีกทีหนึ่ง ที่อยากแนะนำอีกอย่างหนึ่งคือควรคอนเนกชั่นแบบ OLE DB จะดีกว่า ODBC นะครับ จะทำงานได้ดีกว่าครับ

 
     คือผมเข้าใจว่าส่วนของ Business Logic จะอยู่ที่ server ใช่เปล่าครับ ?

"โดยภายใน interface ก็จะต้องประกาศสร้างออปเจคจาก BL ที่เรารีจิสเตอร์เอาไว้ "
ผมก็เลยสงสัยว่าจะ รีจิสเตอร์ ยังไง เพราะถ้าเอา dll ที่สร้างเสร็จ copy ไป client และ รีจิสเตอร์
อย่างนี้ก็เหมือนเครื่อง client ติดต่อไป server ตรง ๆ หรือเปล่าครับ

หรืออย่าง asp ,php หรือ jsp ก็จะไปเรียกให้เครื่อง server process ให้
โดย Business Logic ก็อยู่ที่ server อย่างเดียว แล้วก็ส่งผลลัพธ์ให้ IE
ผมก็เลยสงสัยว่า ถ้าเป็นโปรแกรมที่เราจะเขียนเอง การติดต่อระหว่าง client กับ middle tier
มันจะทำยังไง ไปอ่านเวบของ delphi ก็เห็นเค้ามีการติดต่อผ่าน socket อะไรด้วย (ไม่ค่อยรู้เหมือนกัน)

ยังไงผิดถูกก็ช่วยอธิบายด้วยครับ เพราะงง เหมือนกัน

     จริง ๆ แล้ว N-tier เป็นแนวคิดในการเขียนโปรแกรมที่ไมโครซอฟท์แนะนำขึ้นมา

เพื่อแก้ปัญหาที่เกิดจากการ Hard Code ในโปรแกรมแบบเดิม ประเด็นหนึ่ง N-tier สามารแก้ปัญหาได้ดีคือ ความยุ่งยากในการพัฒนาแอพพลิเคชั่นบนลักษณะที่แตกต่างกัน คือ Windows Application หรือ Web Application

1. Windows Application ส่วนของ BL ก็ควรจะอยู่ที่เดียวกับโปรแกรมครับ เวลาติดต่อก็ติดต่อได้หลายทาง อย่างง่าย ๆ เลยก็คือสั่งผ่าน SQL Pass-Through สั่งให้ Store Procedure ใน Database ของ Server ทำงาน
2. Web Application ถ้าจะใช้ VFP ในการพัฒนา ก็คงต้องออกแรงหน่อยครับ (เท่าที่ทราบมาใช้ Foxisapi.dll ไม่แน่ใจผิดหรือถูกต้องขออภัยครับ) ส่วนของ BL ก็ควรจะอยู่ที่เดียวกับ Server ครับ

ทั้ง Win. App. และ Web App. นั้นส่วนของ DAL อาจจะเป็น Store Procedure และ Trigger เกาะอยู่กับตัว Database เลยก็ได้ จะช่วยให้ทำงานเร็วขึ้น หรือจะเขียนเป็น dll ที่อยู่บนเครื่องเดียวกับ Database ก็ได้ครับ

อันนี้ขอเพิ่มเติมหน่อยนึงครับ
ข้อด้อยของ Win. App.
1. การเข้าถึง จะต้องมีเครือข่ายที่เชื่อมต่อถึงกัน ถ้าอยู่นอกสถานที่จะใช้โปรแกรมไม่ได้
2. การดูแลจัดการยุ่งยาก เช่น ต้องลงโปรแกรมตามจำนวนไคล์เอนท์ที่ใช้งาน เมื่อมีการแก้ไขโปรแกรมก็ต้องตามแก้ทุกเครื่อง

Web App. สามารถแก้ข้อด้อยของ Win. App. ขอเพียงติดต่อผ่านอินเตอร์เน็ทได้ และโดยตัวของ Web App. เองจะทำงานในลักษณะ Client/Server อยู่แล้ว

ข้อเสียของ Web App.
1. ทำงานในลักษณะ Synchronous คือถ้าคลิกแล้วจะต้องรอตอบกลับ ในระหว่างรอก็จะทำงานอื่นไม่ได้
2. มี Time out คือถ้า Server ทำงานและส่งผลลัพธ์กลับมาไม่ทัน ก็จะแจ้งเป็น error จะพบปัญหามาในกรณีที่มีฐานข้อมูลขนาดใหญ่ขึ้นเรื่อย ๆ

ไมโครซอฟท์เองรู้จุดนี้ก็เลยแก้ปัญหาโดยเสนอแนวทางการเขียนโปรแกรมเป็นไว้ 2 แบบ คือ
1. .Net Remoting ลักษณะจะเป็นเหมือนกับเกมส์ออนไลน์ สามารถกำหนด port ที่ใช้ในการติดต่อได้
2. Web Service ซึ่งจะได้กล่าวถึงต่อไป

ข้อดีของ Web Service
1. ทำงานในลักษณะ Asychronouse ได้ คือถ้าคลิกแล้วยังไม่ได้ผลกลับมา ในระหว่างนั้นสามารถทำงานอย่างอื่นได้ เมื่อได้รับผลจึงกลับมาทำงานต่อ จึงไม่เกิด time out
2. ต้องการความเร็วในการเข้าถึงต่ำ ทำให้สามารถติดต่อผ่านสายโทรศัพท์ 14.4 kbs ได้ (ปัจจุบันคงไม่มีแล้วล่ะครับ)
3. ติดต่อผ่าน http ซึ่งเป็นโปรโตคอลตัวเดียวกับที่ใช้ในบราวเซอร์ ทำให้วิ่งผ่าน Proxy ได้ ไม่ติดต่อปัญหาการบล็อกของไฟล์วอลล์ เพราะปกติจะเปิดให้ http ผ่านเข้าออกอยู่แล้ว (ไม่เหมือนกับ .Net Remoting ที่ใช้ TCP ทำให้ต้องเปิด port ของไฟล์วอลล์ จึงจะผ่านได้)

Web Service พูดง่าย ๆ ก็คือ การเขียนโปรแกรมแบบ Windows ที่สามารถเรียกฟังก์ชั่นข้ามเครื่องได้ ซึ่งในการพัฒนาโปรแกรมแบบนี้นั้น ส่วนของ Interface จะพัฒนาโดย VFP, VB, etc. ได้ ส่วนของ BL จะอยู่บน Server (ผมใช้ VB.Net ในการพัฒนาส่วนนี้) ส่วนของ DAL ก็ไม่ต้องมีการแก้ไขครับ ใช้ Database อะไร ก็เขียน Store Procedure บน Database ตัวนั้น หรือจะเขียนเป็น dll ก็ได้ครับ (ใช้ VB.Net อีกนั่นแหล่ะ)

ถ้าจะแสดงเป็นรูปก็คงเป็นดังนี้ครับ

Interface<---------------------->Business Logic<---------------------->Data Access Layer
VFP,VB,Delphi, etc. VB.Net VB.Net หรือ Database

ในส่วนของ VFP เอง ไม่ทราบว่าเวอร์ชั่นใหม่ ๆ สามารถพัฒนาเป็น BL หรือ DAL ของ Web Service ได้หรือป่าว เพราะยังไม่มีเวลาลองครับ สมาชิกท่านใดมีเคยลองก็ช่วยแสดงความคิดเห็นด้วยครับ อยากทราบเหมือนกัน

 
     ช่วยแจมครับ ...
ลองอ่าน article เรื่อง " Building Middle Tier Objects in Visual Foxpro " ของ Jim Booth
ที่ http://www.jamesbooth.com/n-tier.htm มีตัวอย่าง VFP พอให้เข้าใจ concept N-tier model
ขอขอบคุณที่มา :: http://www.songkwae.com/foxboard/question.asp?QID=4347
 
:: เนื้อหา ::
     OOAD
     Class & Object
     Constructor & Destructor
     Inheritance
     Encapsulation
     Overloading
     Overriding
     Interface
     OOP
:: http://www.siam2dev.com ::
e-mail :: xnattapong@hotmail.com , songneam@gmail.com