Framework คือสิ่งที่ต้องการหรือไม่ ?

Wednesday, September 3rd, 2008

ที่หยิบเรื่อง PHP Framework มาพูดในครั้งนี้ไม่ใช่อะไร เพราะว่าตอนนี้งานที่ทำให้ฝรั่งเขาอยากได้มากๆคือ Zend Framework ซึ่งผมเองก็ไม่เคยจับมาก่อนเช่นกันสำหรับตัวนี้ เพราะเคยเล่นเจ้า CodeIgniter ตามที่ผมเคยลองที่ http://www.myblog.in.th/?p=305

คำถามของหลายๆคนตามมาว่า
ทำไมถึงใช้ Framework ?
แล้วทำไมผมถึงไม่ใช้ ทำเว็บตัวเอง ?

ทำไมถึงใช้ Framework ?
ส่วนตัวแล้วผมชอบในหลักการของ PHP Framework ที่มี MVC ซึ่งทันก็มีข้อดีก็คือ
- พัฒนาต่อง่าย
- เหมาะกับการทำงานเป็นทีม
- เหมาะกับ Application

ซึ่งเท่าที่ดูแล้ว Framework มันเหมาะกับการทำเป็น Application เฉพาะทางซะมากกว่าเช่น Web App ที่ทำหน้าที่เกี่ยวกับการเงิน , สารสนเทศ อะไรแนวนี้มากกว่าการทำเว็บไซต์ทั่วๆไป

แต่มันมีอยู่อย่างหนึ่งที่ผมไม่ชอบบนตัว PHP Framework ก็คือเรื่องของความเร็วในการประมวลผล มันคิดมากไป ขั้นตอนมากเกินไป ซึ่งเมื่อผมจับ Zend Framework เล่นดู ผมก็ต้องการที่จะรู้ว่ามันทำงานได้เร็วไหม แค่ไหน อย่างไร ก็ไม่แคร้วต้องทดสอบจับเวลามันครับ

ผมเชื่อมั่น 100% ว่าไม่มีทางที่ PHP Framework ใดจะประมวลผลได้เร็วเท่าเขียน PHP แบบปกติ หรือ เขียนในรูปแบบ OOP , Class , Function ครับ เพราะพิสูจน์มาแล้ว

ลองดูจากที่ผมเล่นตัว CodeIgniter โดยไม่ได้ติดต่อดาต้าเบสอะไรเลย แค่ดึง head body footer มาแสดงเท่านั้น แต่มันใช้เวลาคิดถึง 0.0383 วินาที ดังรูป

 

วกมาที่ทดสอบ Zend Framework กันบ้าง โดยผมทำตามตัวอย่างของการเริ่มต้นสร้างเว็บด้วย Zend Framework โดยติดต่อตาราง 1 ตาราง ข้อมูล 2 แถวเท่านั้น ได้ผลตามรูป

zend01.jpg 

โดยใช้ Process Time : 0.1391561031 วินาทีในการประมวลผล
ทีนี้ผมก็ทดสอบเขียน PHP ปกติโดยใช้งานติดต่อกับ Class ที่เขียนขึ้นเองในการเชื่อมต่อดาต้าเบส 1 ตาราง ข้อมูล 1000 แถว เรียกมาแสดงผลแล้วก็จับเวลา ซึ่งได้ผลแบบนี้

zend02.jpg 

เทียบกัน 2 อันเป็นไงบ้างครับ การเขียน PHP ปกตินั้นประมวลผลได้เร็วกว่าใช้ PHP Framework มากมายหลายขุมเลยทีเดียว

หากมาวิเคราะห์กันว่าหากเราใช้งาน Framework ในการทำเว็บไซต์ ผลกระทบที่ตามมาก็คืออะไรบ้าง
- ต้องการ Server ประสิทธิภาพสูงขึ้น
- ค่าใช้จ่ายสูงขึ้น
- ต้องการคนที่เข้าใจใน Framework นั้นๆในการพัฒนาต่อ
แล้วทำไมผมถึงไม่ใช้ ทำเว็บตัวเอง ?
ก็อย่างที่บอกไปครับ ผมเน้นงานด้าน OutPut มากกว่า Input เพราะผมต้องการนำเสนอเว็บ ไม่ได้ต้องการนำเสนอ Code เพราะหากผมสนใจแต่เรื่อง Code ที่ต้องเริศหรู ต้องเป็น Framework หรือเป็น OOP ทั้งหมด เว็บผมคงไม่สามารถใช้งานในระดับที่ CPU Load ต่ำขนาดนี้ได้

zend03.jpg 

ลองดูหน้าแรกของผมก็ได้ ติดต่อตารางทีละ 9 ตาราง (อาจจะมากกว่าเพราะมีส่วนของสคริป Banner ต่างๆที่รันผ่านการเรียกด้วย Javascript) แต่สามารถทำได้ที่ 0.0079 วินาที ซึ่งหากผมใช้งาน Framework ผมว่าไม่มีทางได้ต่ำกว่า 0.2 - 0.3 วินาทีอย่างแน่นอน ถึงแม้จะเอาเทคโนโลยี Cache ที่มีในตัว Framework มาใช้ก็ตาม

zend04.jpg 

และนี่คือเหตุผลที่ว่าทำไมผมถึงไม่ใช้ Framework ในเว็บของผมเอง แต่ผมเลือกใช้พวก OOP , Class ซะมากกว่า

อยู่ที่การคำนึงถึงการใช้งานของแต่ละระบบ แต่ละ Application ว่าต้องการอะไร ?
สำหรับผมแล้วผมคำนึงถึง “ผู้เสพ” มากกว่า “ผู้พัฒนา” ผู้เสพก็คือคนเข้าชมเว็บไซต์ หากเราทำให้เว็บของเรา
- เร็ว
- ข้อมูลถูกต้อง
- ระบบมีมาตรฐาน ปลอดภัย
เท่านี้มันก็มากพอแล้วครับ ส่วนผู้พัฒนา หากคุณเก่งซะอย่าง(ไม่ต้องมากก็ได้) ยังไงก็แก้ไขได้ครับ เพราะมันก็ใช้ OOP , Class  เท่านั้น ส่วน PHP Framework คุณไม่สามารถจ้าง PHP Programer ทั่วๆไปมาทำได้เลย ดังนั้นค่าจ้างก็ย่อมแพงขึ้นตามครับ

แต่ยังไงตอนนี้ก็ทำไปครับทำไงได้ ฝรั่งดันอยากได้ Zend Framework จากทำระบบ CMS ใช้เวลาสัก 2 วันเสร็จ ตอนนี้หากมาใช้ Framework 2 วันไม่มีทางเสร็จแน่นอน!!!

มาเขียน PHP FrameWork กันเหอะ

Tuesday, March 25th, 2008

Framework มันคืออะไร ?

เอาตามความเข้าใจของผม Framework ก็คือชุดคำสั่ง Libraries หรือ Classes ที่ใช้ในการเขียนและพัฒนาโปรแกรม โดย Framework แต่ละตัวก็จะมีมาตรฐานของตัวมันเอง (ตามที่ผู้สร้าง Framework กำหนด) โดยที่ในตัวโค๊ดของมันเองจะมีโค๊ดที่มีลักษณะเป็น Reuseable หรือเป็นโค๊ดที่เราสามารถนำกลับมาใช้ได้อีก อยู่มากมาย เพื่อให้เราเลือกใช้งาน ซึ่งทำให้เวลาที่เราเขียนโปรแกรมสามารถใช้เวลาในการพัฒนาที่สั้นลงได้เยอะเลย เพราะไม่ต้องมานั่งเขียนโค๊ดเดิมๆซ้ำๆให้เสียเวลา

PHP Framework

มีหลายตัวเลยครับ เยอะจริงๆจะให้ไปศึกษาทั้งหมดผมว่าตายกันพอดี เท่าที่เห็นก็มีดังนี้นะครับ

  • Zend Framework
  • CakePHP
  • Symfony Project
  • Seagull Framework
  • WACT
  • Prado
  • PHP on TRAX
  • ZooP Framework
  • eZ Components
  • CodeIgniter  
  • แล้วจะใช้ตัวไหนดีละเนี่ย ????
    มันก็แล้วแต่คุณจะเลือกใช้ตัวไหนนะครับ แต่ที่ผมอยากจะนำตัว Framework เล็กๆ ใช้งานไม่ยุ่งยาก ขนาดไฟล์เมื่อแตกแล้วประมาณ 1 MB กว่าๆ เล็กดี และเป็น Framework ที่ Base on PHP ล้วนๆครับ สามารถนำไปใช้งานได้บนโฮสปกติทั่วๆไปได้ เพราะ Framework บางตัวต้องลงโปรแกรมของมันบ้าง หรือต้องคอนฟิกอะไรไม่รู้ยุ่งยากไปหมด

    CodeIgniter คือตัวที่ผมแนะนำ

    codeigniter-001.jpg

    ผมไม่ได้บอกว่าตัวนี้ดีที่สุด แต่ผมลองแล้วคิดว่าพัฒนาอะไรได้ง่ายครับ เหมาะกับคนที่เขียน PHP และ Class ได้ในระดับพอใช้งานได้ ก็สามารถเขียน PHP Framework โดยใช้ CodeIgniter ได้แบบไม่ยากเย็นมากนัก

    CodeIgniter เป็น PHP Framework ในรูปแบบของ MVC แต่มีจุดเด่นคือ

    • มีขนาดเล็ก

    • ใช้งานง่ายเพราะแค่แตกไฟล์มาก็เอามาใช้ได้เลย

    • เป็น Framework แบบ DIY (Do IT Yourself) คือจะเขียนอะไรก็ทำเอง ดีตรงที่ไม่ต้องเจอไฟล์แปลกๆที่ไม่รู้ว่ามันทันสร้างมาตอนไหน

    • แหกกฏ MVC เล็กน้อย คือมีแค่ controller กับ view ก็ทำงานได้แล้ว

    • มีคู่มือมาให้ค่อนข้างละเอียด

    แต่ที่ชอบแน่นอนคือติดตั้งง่าย เพราะ FTP ลง server ก็ใช้ได้เลยไม่ต้องอะไรยุ่งยากมากมาย และที่ผมชอบตัวนี้เพราะเราต้องเขียนโค๊ดโปรแกรมเอง ซึ่งเป็นสิ่งที่ผมชอบ เพียงแต่เราเอามาพัฒนาบนฐานของ Framework ก็พอ

    codeigniter-002.jpg
    เขียนเล่นๆดูครับ

    ตัวอย่างโค๊ดในหน้านี้ก็คือ

    <?php
    class Blog extends Controller {

     function index()
     {
      $this->load->view(’blog/header’);
      $this->load->view(’blog/body’);
      $this->load->view(’blog/footer’);
     }
    }
    ?>

    เขียนแนวๆนี้แหล่ะ
    ส่วนการเรียก URL ก็ใช้ RewriteEngine ซะเพื่อให้ URL มันออกมาแบบสวยงามและตรงตามหลักการทำ SEO ครับ ลองโหลดไปศึกษากันดูได้ที่เว็บไซต์ http://codeigniter.com/

    Editor's Talk!

    สวัสดีคนที่หลงเดินทางเข้ามายัง Blog ของผม อาจจะด้วยความไม่ตั้งใจ หรือ ตั้งใจเข้ามาก็ตาม ก่อนอื่นผมก็ต้องขอออกตัวก่อนว่า Blog ของผมมันจะมีสาระบ้าง หรือ ไม่มีสาระเลย ก็แล้วแต่อารมณ์ช่วงไหนอยากเขียนอะไร อย่าเหมาว่า Blog ผมจะต้องมีแต่ความรู้เหมือน Blog ของคนอื่นๆ นะครับ
    สำหรับ Blog นี้ ผมสามารถใช้คำพูดใดๆก็ได้ตามที่ผมเห็นสมควร เพราะมันคือ Blog ของกู(ผม) บางครั้งผมเขียนไปกระทบใครก็ขออภัยไว้ ณ. ที่นี้ด้วย ก็ไม่มีอะไรมากครับ ขอบคุณที่เข้ามาอ่าน Blog ของผมนะครับ

    นายแม็ค

    ค้นหา :