สถาปัตยกรรม MVC
สถาปัรยกรรม Model , View และ Controller (MVC)
MVC มีไว้เพื่อเป็นแบบแผนการสร้าง GUI Application โดยแยกสิ่งต่างๆ ในแอปพลิเคชัี่นออกจากกันให้แต่ละส่วนทำงานเฉพาะเพื่อให้สามารถเพขียนโค้ดและปรับปรุงแอปพลิเคชั่นได้ง่ายขึ้น
การพัฒนาซอฟต์แวร์ใมนยุดแรกๆ ผู้พัฒนามักจะเขียนโปรแกรมส่วนการแสดงผล ส่วนการติดต่อฐานข้อมูล เงื่อนไขและการควยคุมเหตุการ์ต่างๆ ไว้รวมกันในที่เดียยว และหลังจากนั้นเมื่อ 20 ปีก่อนจนปัจจุบันได้มีผู้เริ่มทดลองสถาปัตยกรรมของแว็บแอปพลิเคชั่นตามแนวคิดของ MVC ขึ้นมา โดยผลลัทธ์ที่ได้จากการทดลองดังกล่าวถูกสร้างขึ้นเป็น Framework ต่างๆ ได้แก่ Webobject , Strut และ Javascript Frace ซึ่งอยู่บนฐากฐานแนวความคิดของ MVC ทั้งหมด
Ruby on Rails (RoR) เป็น MVC Framework หนั่งโดย Rails จะควบคุมโครงสร้างของแอปพลิเคชั่นในการพัฒนา Model,View,Controller ซึ่งเหมือนกับการแยกกลุ่มของหน้าที่ ออกจากกัน และสามารุถรวมสิ่งที่ถูกแยกออกจากกันได้อย่างอัรโนมัติโดยที่ไม่ต้องเขียนอะไรเพิ่มเติม ดังตัวอย่างทฤษฏีของ rails ซึ่งเป็นหลักการเกี่ยวกับกการสิ่งต่างๆ โดยที่ไม่ต้องกำนหดคุณสมบัติเพิ่มเติม หรือเรียกว่า Convention over Contiguration
Active Record: Rails Model Support
สิ่งสำคัญของการพัฒนาพัฒนาเว็บแอปพลิเคชั่น คือ ต้องการให้เว็บแอปพลิเคชั่นสามารถจัดเก็บข้อมูลลงฐานข้อมูลได้ เช่น เว็บขายสินค้าที่ต้องการจัดเก็บรายการสินค้า รายการสินค้า รายการสั่งซื้อ และข้อมูลลูกค้า เป็นต้น หรือแม้แต่แอปพลิเคชึ่นที่เป็น Text ธรรมดา เช่น Webblog และเว็บข่าวสาร ยังต้องใช้ฐานข้อมูลจัดเก็บข้อมูลเช่นกัน
แม้ว่าจะไม่สามารถใช้ SQL เข้าถึงฐานข้อมูลเชิงสัมพันธ์ ได้โดยตรง เนื่องจากฐานข้อมูลเชิงสัมพันธ์ที่ใช้อยู่ในปัจจุบันออกแบบมาจากทฤษฏีทางคณิตศาสตร์ซึ่งเป็นแนวคิดที่ดี แก่ยากต่อการะรหว่างฐานข้อมูลเชิงสัมพันธ์กับ Object-Oriented Programming Language โดย Object เป็นทั้งข้อมูล Operation และฐานข้อมูลซึ่งเป็นชุดของข้อมูลทั้งหมด ว่ายต่อการแสดงเป็นแบบ Relation แต่บางครั้งก็ยากต่อการโค้ดในแบบ Object-Oriented
เหตุผลข้างต้น ส่งผลให้เกิดการรวบรวมมุมมอง Relational และ Objection-Orented เข้าด้วยกัน จึงเกิด 2 แนวทางคือ การมองว่าฐานข้อมูลเป็นจุดศูนย์กลางและการมองว่าโปรแกรมที่สร้างเป็นจุดศูนย์กลาง
การโปรแกรมโดยมองฐานข้อมูลเป็นจุดศูนย์กลาง
เป็นการเขียนโปรแกรมตรงข้ามกับการโปรแกรมฐานข้อมูลเชิงสัมพันธ์ในภาษาแบบ Procedural เช่น C และ COBOL ที่จะต้องเขียนคำสั่ง SQL เพิ่มไปยังโค้ดซึ่งจะต้องมีการแปลง SQL ในโค้ดไปยังระดับที่ต่ำกว่าเพื่อเรียก Database Engine เป็นการเขียนโค้ดที่ยุ่งยากและมีจำนวนมาก เหมาะกับการเขียนแอปพลิเคชั่นขนาดเล็ก อย่างไรก็ตามจากการรวม Business Logic และ Database Access เข้าด้วยกัน อาจเกิดปัญหาเมื่อต้องการบำรุงรักษาหรือเพิ่มเติมแอปพลิเคชั่นในอยสตนแลบะจำเป็นจะต้องศึกษาภาษา SQL เพื่อเริ่มการเขียนโปรแกรมในแอปพลิเคชั่น
การเขียนโปรแกรมแบบ Object-Oriented ได้ใช้หลักการ Encapsulation แก้ไขปัญหาดังกล่าว โดยการห่อหุ้ม ข้อมูลต่างๆ ไว้ในคลาส ซึ่งเมื่อต้องการปรับปรุงหรือเปลี่ยนแปลงสามารถแก้ไขได้ในที่เดียว แนวความคิดดังกล่าวได้นำมาใช้ใน Database Programming โดยห่อหุ้มการเข้าถึงฐานข้อมูลไว้ในคลาสโดยไม่ต้องเชื่อมต่อกับฐานข้อมูลโดยตรง เป็น Encaspulate Schema-Specific Stuff ไปยัง Single Layer และแยกโค้ดออกจากการเข้าถึงฐานข้อมูลระดับ Low-Level
แนวคิดดังกล่าว Implement ยากกว่าการเขื่อมต่อตารางฐานข้อมูลโดยตรง เนื่องจากเป็น Object ทำให้การพัฒนามีความยุ่งยากซับซ้อน จึงเกิด Object/Relation Mapping (ORM) ขึ้นเพื่อแก้ไขปัญหาดังกล่าว
Object/Relational Mapping
ORM เป็น Library ที่จับคู่ (MAP) ตารางในฐานข้อมูลไปยังคลาส เช่น ถ้าตารางในฐานข้อมูลชื่อ "orders" จะมีคลาสชื่อ "Order" เกิดขึ้น Row ในตารางจะกลายเป็น Object ของคลาส Column จะกลายเป็น Attribute ของ Object และภายในคลาสจะประกอบด้วย Method เพื่อเรียกดูแบะจัดการกับข้อมูบภายในคลาส เช่น ในคลาส Order มี Method ที่คำนวณภาษี และรวมยอดสั่งซื้อ เป็นต้น
Active Record
Active Record ใน Rails คือชั้นของ ORM (ORM Layer) ลักษณะเหมือนกับมาตรฐานของ ORM ได้แก่ การ Map ตารางไปยังคลาส ,แถวไปยัง Object และ Map Column ไปยัง Attribute ของ Object แต่ต่างกันที่วิธีการ Comfig ORM Library โดยอาศัยรูปแบบและเริ่มต้นด้วยการ Config ส่วนที่จำเป็นของ Active Record ก่อน ดังตัวอย่างเป็นโปรแกรมที่ใช้ Active Record เพื่อห่อหุ้มตาราง orders
Action Pack:View และ Controller
View และ Controller เป็นส่วนหนึ่งของ MVC โดย Controller ทำหน้าที่ส่งข้อมูลไปยัง View และรับเหตุการณ์ที่จะเกิดขึ้นจากเพจที่ถูฏสร้างโดย View จะเห็นว่า View และ Controoler จะมีการติดต่อกันเสมอจังถูกให้รวมอยู่ใน Component
"Action Pack" ดังนั้นจึงไม่ต้องกังวลเกี่ยวกับการเขียนโค้ดข้ามกันระหว่าง View และ Controller เนื่องจาก Rails รองรับให้สามารถแยกการเขียนเว็บแแอปพลิเคชั่นเพื่อเขียนโค้ดในส่วนควยคุมและส่วนนำเสนอออกอย่างชัดเจน
View Support
View ใช้สำหรับสร้างเพจเพื่อแสดงผลใน Browser สามารถแสดงผลที่ง่ายๆ เช่น แสดงผล Text จากการเขียนโค้ด HTML หรือถ้าต้องการเพิ่มเนื้อหาที่สามารถเปลี่ยนแปลงได้ (Dynamic Content) สามารถสร้างได้โดยใช้ Method "action"
ใน Controller
การสร้าง Dynamic Content ทำได้โดยใช้ Template มี 2 วิธี วิธีแรกคือ การฝัง (Embed) โด้ดบางส่วนไว้ในส่วนแสดงผลของ HTML ด้วยการใช้เครื่องมือของ Ruby ที่เรียกกว่า ERb(Embedded Ruby) วิธีนี้มีความยืดหยุ่นมากแต่ขัดแย้งกับ MVC โดยการฝังโค้ดไว้ใน View ซึ่งเป็ฯการเสี่ยงต่อการเพิ่ม logic ที่ควรจะอยู่ใน Model หรือ CXontroller
อีกวิธีหนึ่งคือ การใช้ Builder-Style Views จะช่วยสร้างเอกสาร XML ด้วยการใช้โค้ดของ Ruby ซึ่งเป็นการสร้าง XML ที่จะทำตามโค้ดคำสั่งโดยอัคโนมัติ
Controller
controller เป็นศูนย์กลางการควยคุมของแอปพลิเคชั่น ทำหน้าที่ประสานการทำงานระหว่าง User,View และ Model โดยการเขียนโค้ด และรวมไปไว้ตามหน้าที่ของแอปพลิเคชั่นแต่ละระดับ การสร้าง Controoler ดังกล่าวจะช่วยให้ง่ายต่อการพัฒนาและบำรุงรักษาระบบ
บริการอื่นๆ ที่สำคัญของ Controller ได้แก่ จัดการ Request,จัดการ Cache จัดการตัวช่วย (Helper Module) และจัดการ Session
วันจันทร์, พฤษภาคม 05, 2008 | | 0 Comments
Cascading Style Sheet (CSS)
Cascading Style Sheet (CSS)
Cascading Style Sheet (CSS)CSS เป็นชุดคำสั่งสำหรับจัดรูปแบบการแสดงผลที่นิยมนำมาใช้กำหนดการแสดงเนื้อหา ภารยในเว็บเพจ โดยคำสั่ง CSS ถูกนำมาใช้เสริมคุณสมบัติของ HTML เพื่อให้เราสามารถจัดรูปแบบข้อความและองค์ประกอบอื่นๆ บนเว็บเพจได้อย่างมีประสิทธิภาพ สะดวกรวดเร็ว และเที่ยงตรงตามที่ได้ออกแบบไว้
ประโยชน์ของ CSS การจัดรูปแบบเว็บเพจด้วย CSS มีข้อดีกว่าการใช้คำสั่ง HTML ตามปกติหลายประการคือ
1. มีคำสั่งสำหรับจัดรูปแบบมากกว่า HTML มีคำสั่งที่ใช้จัดรูปแบบเนื้อหาของเว็บเพจได้จำกัดในขณะที่ CSS ปรกอบด้วยคำสั่งมากถึง 8 หมวด เช่น Type,Background,Block,Box, ... โดยในแต่ละหมวดมีคำสัี่งที่ครอบคลุมหลากหลาย และในแต่ะคำสั่งยังสามารถกำนหดค่าการทำงานที่แตกต่างกันได้อีกมาก ตัวอย่างเช่น เมื่อใช้ CSS เราสามารถกำหนดขนาด สี และรูปแบบของเสร้นขอบตารางทั้ง 4 ด้านให้แตกต่างกันได้ถ้าต้องการ
2. ใช้จัดรูปแบบองค์ประกอบเว็บเพจได้เกือบทุกส่วน เราสามารถจำสไตล์ CSS ที่กำนหดขึ้นไปใช้กับองค์ประกอบหรือเนื้อหาบนเว็บเพจได้เกือบทุกส่วน เช่น สไตล์ที่กำหนดสีพื้นหรือภาพฉากหลังเราสามารถนำไปใช้กับตาราง ข้อความ เลเยอร์ หรือเว็บเพจทั้งหน้า ส่วนสไตล์ที่กำหนดสีและรูปแบบเส้นขอบ เราอาจจะนำไปใช้กับตาราง หรือภาพกราฟิกก็ได้ โดยจะให้ผลเหมือนกัน
3. สามารถจัดรูปแบบได้อย่างละเอียดและเที่ยงตรงตามที่ออกแบบไว้ CSS สามารถกำหนดตำแหน่งและขนาดขององค์ประกอบบนเว็บเพจได้อย่างละเอียดเกือบทุก ส่วน เช่น ขนาดตัวอักษร . ความสูงของบรรทัดข้อความ.ระยะระหว่างย่อหน้า การเว้นระยะด้านหน้าและด้านหลังบรรทัด รวมทั้งการเว้นระยะหว่างเนื้อหาส่วนต่างๆ นอกจากนี้ยังสามารถเลือกใช้ัหน่วยวัดใดๆ ก็ได้ ในการกำนหดค่า เช่น mm,cm,in,point, and pixel เป็นต้น ในกรณีของขนาดตัวอักษร เมื่อใช้ CSS เราสามารถระบุหน่วยเป็นพอยนต์ หรือพิกเซล ซึ่งจะทำให้ได้ตคัวอักษรที่มีขนาดแน่นอนบนเว็บเพจ โดยไม่ขึ้นกับการตั้งค่าบนราวเซอร์ของผู้ชม เพราะในกรณีที่กำหนดขนาดแบบ HTML เมื่อผู้ชมเปลี่ยนการตั้งค่าบนบราวเซอร์จำทำให้ขนาดตัวอักษรเปลี่่ยน ซึ่งอาจะจะมีผลต่อเลย์เอาท์ของเว็บเพจ คือทำให้องค์ประกอบต่างๆ เลื่อนไปอยู่ผิดที่อย่างน่าเกลี่ยดได้ ถ้าออกแบบโครงสร้างของเว็บเพจไว้ไม่ดี
4.ใช้ง่าย แก้ไขสะดวก จุดเด่นของ CSS ที่ช่วยเพ่ิมความสะดวกรวดเร็วในการพัฒนาเว็บไซท์เป็นอย่างมาก ก็คือความสามารถในการรวบรวมคำสั่งสำหรับจัดรูปแบบทั้งหมดไว้ที่เดียจวกัน แทนที่จะกระจายไปทั่วทั้งเว็บเพจ ตัวอย่างเช่น เมื่อต้องการให้ข้อความหัวข้อทั้งหมดเป็นสีเขียว ถ้าไม่ใช้ CSS โปรแกรมจะแทรกแท็ก กำกับไว้กับ ทุกหัวข้อ และภายหลังถ้าจะเปลี่ยนสำเราก็ต้องตามไปแก้ไขแท็กเหล่านี้ทุกๆ จุด แต่ถ้าใช้ CSS เราสามารถสร้างสไตล์ของหัวข้อ พร้อมทั้งกำนหดรูปแบบตามต้องการและเมื่อจะเปลี่ยนรูปแบบ ก็แก้ไขที่สไตล์นี้เพียงจุดเดียวเท่านั้น
5.ควบคุมรูปแบบได้ทั้งเว็บไซท์จากจุดเดียว นอกจากการรวบรวมสไตล์ที่ใช้จัดรูปแบบองค์ประกอบ ต่างๆ ไว้ที่เดียวกันภายในเว็บเพจแล้ว เรายังสามารถสร้างชุดสไตล์เพื่อนำไปใช้กับเว็บเพจหลายๆ หน้าได้ โดยบันทึกสไตล์ทั้งหมดไว้ในไฟล์นามสกุล .css แล้วจึงดึงไฟล์นี้เข้าใช้ในเว็บเพจที่ต้องการ คุณสมบัตินี้ช่วยให้เราสร้างเว็บเพจที่มีรูปแบบเหมือนกันตลอดทั้งเว็บไซท์ ได้อย่างย่ายดาย และเมื่อจำเป็นต้องเปลี่ยนแปลงคุณลักษณะใดๆ ก็เพียงแต่แก้ไขที่ไฟล์ .css นี้เพียงไฟล์เดียวเท่านั้น การจัดรูปแบบในเว็บเพจทั้งหมดก็จะเปลี่ยนไปโดยอัตโนมัติ
6.ช่วยให้ขนาดไฟล์เว็บเพจเล็กลงและโหลดได้เร็วขึ้น การที่คำสั่งจัดรูปแบบทั้งหมดถูกรวบรวมไว้ที่เดียวกันในไฟล์ CSS จะช่วยลดความซ้ำซ้อนของรหัสคำสั่งในเว็บเพจลงได้มาก เช่น แท็ก ที่ใช้จัดรูปแบบข้อความ และแอตทริบิวต์ที่ใช้จัดรูปแบบตารางในแท็ก
วันศุกร์, พฤษภาคม 02, 2008 | | 0 Comments
