บทความชิ้นนี้จะพูดถึงวิธีการแปลงจาก PHP (PHP:Hypertext Preprocessor 4) ไปเป็น ASP.NET โดยจะทำการเปรียบเทียบจุดเหมือนและจุดต่างระหว่างซินแทกซ์พื้นฐานของ PHP กับ Microsoft Visual Basic .NET รวมทั้งฟังก์ชันและโครงสร้างที่อยู่ภายในระบบทั้งสองชนิดอีกด้วย
แม้ว่าทั้ง PHP และ ASP.NET ยอมให้คุณสร้างเว็บแอพพลิเคชันที่ซับซ้อนขึ้นมาได้เหมือนกันก็ตาม (อาทิเช่นเว็บไซต์อีคอมเมิร์ซ อินทราเน็ต และประตูท่าสู่องค์กร) แต่ PHP และ ASP.NET ก็มีข้อแตกต่างกันหลายประการเชนกัน สิ่งที่ต่างจาก PHP ก็คือ ASP.NET ไม่ใช่ภาษาหรือ parser แต่ ASP.NET เป็นชุดเทคโนโลยีซึ่งอยู่ใน Microsoft .NET Framework ที่ใช้สำหรับสร้างเว็บแอพพลิเคชันและเว็บเซอร์วิส XML ขึ้นมามากกว่า เพจของ Microsoft ASP.NET จะประมวลผลในเซิร์ฟเวอร์เหมือนกับ PHP จากนั้นก็สร้างมาร์กอัพขึ้นมา อาทิเช่น HTML, WML หรือ XML เป็นต้น ซึ่งจะถูกส่งไปยังพีซีหรือโมไบล์แอพพลิเคชันอีกต่อหนึ่ง ส่วน ASP.NET ต่างออกไปในแง่ที่ว่ามันเป็นโมเดลเขียนโปรแกรมที่อิงกับเหตุการณ์ในรูปของออปเจ็กต์ประสิทธิภาพสูง ซึ่งใช้สำหรับการพัฒนาเว็บเพจขึ้นมาได้พร้อมทั้งยังคงรูปแบบที่เรียบง่าย ซึ่งนักพัฒนา PHP คุ้นเคยเอาไว้เหมือนเดิม
แอพพลิเคชันของ ASP.NET อิงกับแนวทาง Object Oriented Programming (OOP) ประสิทธิภาพสูง แทนที่จะใช้แนวทางการเขียนสคริปท์ขึ้นมา วิธีการของไมโครซอฟท์จะช่วยให้มีการใช้คุณสมบัติ OOP ได้อย่างมีประสิทธิภาพมากกว่า อาทิเช่น inheritance, encapsulation และ reflection เป็นต้น แม้ว่าการทำงานแบบพื้นๆส่วนใหญ่สามารถแปลงจาก PHP ไปเป็น ASP.NET ได้โดยง่ายก็ตาม แต่เราไม่อาจแปลงแอพพลิเคชันที่ซับซ้อนจาก PHP ไปเป็น ASP.NET ได้โดยง่าย และจำเป็นต้องมีการวางแผนอย่างรอบคอบเสียก่อน รวมทั้งต้องอิงกับแนวทาง OOP ให้มากขึ้นกว่าเดิมอีกด้วย
เนื้อหาของบทความนี้ เราคาดหวังว่าผู้อ่านมีประสบการณ์เกี่ยวกับ PHP การเขียนโปรแกรม และการพัฒนาซอฟต์แวร์เป็นอย่างดีอยู่แล้ว เราจะเริ่มต้นเนื้อหาของบทความโดยทำการเปรียบเทียบข้อแตกต่างของโครงสร้าง รวมทั้งพูดถึงโมเดลการพัฒนาแบบ OOP ตามด้วยการเปรียบเทียบคุณสมบัติ ต่อด้วยการเปรียบเทียบซินแทกซ์และการทำงานพื้นฐานที่ใช้ในการพัฒนาเว็บแอพพลิเคชันโดยใช้ PHP และ ASP.NET
หมายเหตุ: ถ้าหากคุณไม่ต้องการศึกษารายละเอียดวิธีการแปลงโปรแกรม แต่ต้องการทดสอบ ASP.NET เราขอแนะนำให้คุณข้ามไปยังหัวข้อ "คำแนะนำสำหรับการทำงานขั้นต่อไป" ได้เลย
ถ้าหากคุณอ่านเนื้อหาส่วนที่เป็นการเปรียบเทียบซินแทกซ์และภาษาในช่วงท้ายบทความนี้แล้ว คุณจะพบว่า PHP และ ASP.NET มีความคล้ายคลึงกันอย่างมากในแง่ของฟังก์ชันและซินแทกซ์ อย่างไรก็ตาม PHP แตกต่างจาก ASP.NET อย่างมากที่โครงสร้างระดับล่าง โดยที่ PHP อิงอยู่กับโพรเซสเซอร์/กลไกซึ่งไม่ผูกติดกับแพลตฟอร์มที่ประมวลผลสคริปท์ PHP เพื่อใช้สำหรับการติดต่อกับดาต้าเบส การทำงานตามเงื่อนไขของอินเทอร์เน็ตโพรโตคอล และงานพื้นฐานอื่นๆอีกมากสำหรับเว็บแอพพลิเคชันแพลตฟอร์ม
ส่วน ASP.NET เป็นเฟรมเวิร์กที่สร้างขึ้นมาจากเทคโนโลยีหลายชนิด อาทิเช่น CLR เป็นต้น แถมยังมีคลาสไลบราลีเป็นระเบียบที่กว้างขวางครอบคลุม เพื่อนำไปใช้เป็นชุดฟังก์ชันส่วนใหญ่ที่ใช้ในเว็บแอพพลิเคชันได้ นอกจากนั้นคุณยังสามารถสร้างคอมโพเน้นต์เพื่อขยายขอบเขตการทำงานของเฟรมเวิร์กได้โดยง่ายอีกด้วย
แม้ PHP มีองค์ประกอบที่คล้ายคลึงกัน (อาทิเช่นไลบราลี PEAR) ก็ตาม แต่ PHP และ ASP.NET ก็ไม่ได้เหมือนกันเสียทีเดียว เนื่องจากเฟรมเวิร์ก ASP.NET สร้างขึ้นมาใหม่บนแนวทาง OOP และแนวคิดของ OOP แต่ PHP กลับไม่ได้เป็นแบบนั้น ความแตกต่างดังกล่าวจะเห็นได้อย่างชัดเจนมากขึ้นในตอนที่คุณเรียกใช้คลาสและออปเจ็กต์ใน PHP และ ASP.NET
การเขียนโปรแกรมเชิงออปเจ็กต์ใน PHP และ ASP.NET
ทั้ง PHP และ ASP.NET ใช้แนวทาง OOP ในการพัฒนาแอพพลิเคชันเหมือนกัน แต่ทว่าการทำงานกับแนวคิด OOP แบบต่างๆกลับแตกต่างกันออกไป อาทิเช่น encapsulation และ polymorphism เป็นต้น ตัวอย่างเช่น PHP รองรับการทำ encapsulation ได้เพียงบางส่วนเท่านั้น (อาทิเช่นการกำหนด methods และฟิลด์ในคลาสเป็นต้น) และทำ polymorphism ได้เพียงบางส่วน (ไม่มี overloading ไม่มี abstraction) นอกจากนั้น PHP ยังขาดแนวคิดหลายอย่างไปอาทิเช่นการไม่สามาารถกำหนดให้ฟังก์ชันเป็นแบบ private, public หรือ protect ในคลาส รวมทั้ง overloading ด้วย แม้ว่าผู้ที่สนับสนุน OOP อาจออกมาแย้งว่า ASP.NET และภาษาอื่นๆก็ไม่ได้ใช้งานกับแนวคิดทุกอย่างของแนวทาง OOP เช่นกัน คำพูดดังกล่าวเป็นความจริงที่เกิดขึ้นกับภาษาส่วนใหญ่ที่ทำงานแบบ OOP ได้อาทิ C++ และจาวาเป็นต้น
เรื่องนี้มีทั้งข้อดีและข้อเสีย ข้อเสียก็คือนักพัฒนาเว็บบางคนอาจจะต้องเสียเวลาในการเรียนรู้ ASP.NET นานกว่า PHP เนื่องจาก PHP ใช้แนวทางการเขียนสคริปท์ที่นักพัฒนาใช้ในการสร้างเว็บไซต์อยู่แล้ว อย่างไรก็ตามนักพัฒนาที่มีภูมิหลังเรื่องภาษา OOP และ/หรือ Vwill จะคุ้นเคยและเรียนรู้ ASP.NET ได้โดยง่ายเช่นกัน
ข้อดีของการที่ ASP.NET สนับสนุนแนวคิด OOP หมายความว่าแอพพลิเคชัน ASP.NET ส่วนใหญ่จะมีโค้ดที่ออกแบบมาดีกว่า แยกแยะเนื้อหาโลจิกและข้อมูลได้ชัดเจนมากกว่า ดังนั้นการให้บริการตลอดวงจรชีวิตการใช้แอพพลิเคชันที่ยาวนานจึงทำได้ง่ายกว่า นอกจากนั้นการที่ ASP.NET สามารถทำงานกับเทคโนโลยีเอนเตอร์ไพรซ์ชนิดต่างๆได้โดยตรง อาทิเช่น Message Queuing, Transactions (พบได้ในคลาส System EnterpriseServices ของ .NET Framework) SNMP และเว็บเซอร์วิสเป็นต้น ดังนั้นการพัฒนาแอพพลิเคชันประสิทธิภาพสูงที่ขยายระบบได้จึงทำได้ง่ายกว่า
คุณสามารถอ่านเนื้อหาเบื้องต้นขององค์ประกอบหลักสำหรับการเขียนโปรแกรมเชิงออปเจ็กต์ (จากมุมมองของภาษา Visual Basic) ในหัวข้อ Object-Oriented Programming ใน Visual Basic
การคอมไพล์
PHP
เมื่อมีการเรียกเพจ PHP ระบบจะทำการคอมไพล์ HTML และสคริปท์ PHP ไปเป็น Zend Opcodes โดยที่ Opcodes เป็นคำสั่งไบนารีระดับต่ำที่ใช้เพื่อรองรับการทำงานของเพจ PHP ซึ่งเมื่อมีการคอมไพล์แล้ว Zend Engines จะสั่งงาน opode (คล้ายคลึงกับวิธีการที่กลไกรันไทม์ของจาวาสั่งงานไบท์โค้ด) จากนั้นก็มีการสร้าง HTML ขึ้นมาแล้วส่งไปยังไคล์เอ็นต์
ในตลาดมีผลิตภัณฑ์เชิงพาณิชย์หลายชนิดที่สามารถนำมาใช้เพื่อเพิ่มความเร็วในการประมวลผลเพจ PHP ได้โดยการปรับแต่งให้ opcodes ทำงานได้อย่างเต็มประสิทธิภาพ วิธีการอื่นๆที่ช่วยเพิ่มประสิทธิภาพของสคริปท์ PHP ประกอบด้วยการทำแคชให้แก่ opcode และการทำแคชให้แก่ HTML ที่สร้างขึ้นมาเป็นต้น
ASP.NET
เมื่อมีคำสั่งส่งไปยัง IIS (Internet Information Services) หรือเว็บเซิร์ฟเวอร์ชนิดอื่นๆเพื่อเรียกเพจ .aspx (หรือนามสกุลอื่นๆที่ใช้กับ ASP.NET ได้) คำสั่งจะถูกส่งไปยัง ASP.NET เพื่อทำการประมวลผล ถ้าหากเป็นการเรียกเพจเป็นครั้งแรก ASP.NET จะทำการคอมไพล์เพจไปเป็น MSIL (ภาษาที่ใช้ชั่วคราวของไมโครซอฟท์) จากนั้น CLR (common language runtime) จะทำการประมวลผลโค้ด MSIL ไปเป็นภาษาเครื่อง ต่อมาคำสั่งจะเริ่มทำงานโดยใช้โค้ดที่คอมไพล์แล้ว โค้ดภาษาเครื่องชุดนี้จะจัดการกับคำสั่งครั้งต่อๆไปเอง ถ้าหากเพจไม่มีการแก้ไข
สิ่งสำคัญที่ต้องบอกเอาไว้ก็คือไบนารีโค้ดซึ่งสร้างขึ้นมาโดย CLR จะสมบูรณ์แบบมากที่สุดอยู่แล้ว โดยไม่จำเป็นต้องใช้ผลิตภัณฑ์เสริมเพื่อทำให้ประสิทธิภาพดีขึ้น
สิ่งสำคัญอีกอย่างหนึ่งก็คือทุกอย่างใน ASP.NET จะถูกคอมไพล์เป็นภาษาเครื่องก่อนที่จะทำงาน แม้แต่ข้อความ HTML ก็จะถูกแปลงไปเป็น string literal control และถูกใส่เอาไว้เรียงตามลำดับที่ถูกต้องในโครงสร้างควบคุมก็ตาม
เปรียบเทียบคุณสมบัติ
ตารางที่ 1: เปรียบเทียบคุณสมบัติใน PHP และ ASP.NET
การเปรียบเทียบซินแทกซ์และงานพื้นฐาน
หัวข้อต่อไปนี้จะเป็นการเปรียบเทียบระหว่างซินแทกซ์ของ PHP และ .NET รวมทั้งการเขียนโปรแกรมพื้นฐานต่างๆ
Comment
PHP ยอมให้คุณใส่ comment ลงไปในโค้ดโดยใช้ C, C++ และซินแทกซ์สไตล์เชลล์ของ Unix ข้อความที่อยู่ในกรอบ comment จะไม่ถูกประมวลผล
โดยทั่วไปแล้ว ถ้าหากต้องการใส่ comment ลงไปในโค้ด Visual Basic .NET ใน ASP.NET คุณก็เพียงแต่ใช้ <%-- เพื่อเปิดกรอบ comment และใช้ --%> เพื่อปิดกรอบ comment
ตัวแปร
แม้ว่า PHP และ Visual Basic .NET มีโครงสร้างภาษาที่คล้ายคลึงกันก็ตาม แต่ซินแทกซ์ที่ใช้กลับแตกต่างกันอย่างมาก ส่วน Visual Basic .NET สร้างขึ้นมาโดยอิงกับโมเดล OOP การกำหนดตัวแปรจึงเข้มงวดมากกว่า PHP เนื่องจาก PHP ใช้วิธีการกำหนดตัวแปรโดยการใส่เครื่องหมายดอลลาร์ ($) หน้าชื่อตัวแปรเท่านั้น
คุณกำหนดตัวแปรใน Visual Basic .NET โดยการกำหนดชื่อและคุณสมบัติ ข้อความกำหนดตัวแปรใช้คีย์เวิร์ด Dim ในขณะที่ตำแหน่งและเนื้อหาจะเป็นตัวกำหนดคุณสมบัติของตัวแปร นอกจากนั้นยังมีการกำหนดตัวแปรออกเป็นระดับต่างๆอีกด้วย อาทิเช่น local and module, ประเภทข้อมูล, lifetimes และ accessibitlity เป็นต้น
ในตอนแรกแนวทางนี้อาจดูซับซ้อนเกินไปอยู่บ้างเมื่อเทียบกับการกำหนดตัวแปรของ PHP แต่วิธีการนี้จะช่วยให้นักพัฒนาทำงานได้สบายมากขึ้น ASP.NET เน้นไปที่การช่วยให้นักพัฒนาสร้างแอพพลิเคชันประสิทธิภาพสูง และการกำหนดประเภทของข้อมูลช่วยให้งานต่างๆง่ายขึ้นอาทิเช่น การทำความสะอาดตัวแปร การดีบัก การจัดการกับข้อยกเว้นและความผิดพลาด และการแก้ไขโค้ดเป็นต้น
โดยส่วนใหญ่แล้วการแปลงจาก PHP ไปเป็น ASP.NET ไม่ใช่เรื่องที่ซับซ้อนแต่อย่างใด ถ้าหากเป็นแอพพลิเคชันแบบง่ายๆที่มีขนาดเล็ก แต่ความแตกต่างในเรื่องของโครงสร้างรวมทั้งแนวทางการใช้ OOP ของ ASP.NET ทำให้การแปลงแอพพลิเคชันที่ซับซ้อนจึงจำเป็นต้องมีการวางแผนอย่างรอบคอบเสียก่อน คุณจึงจะได้ประโยชน์อย่างเต็มที่จากการแยกตรรกะออกจากข้อมูลอย่างเข้มงวดของ ASP.NET จากนั้นคุณก็จะประหยัดเวลาในการสร้างฟังก์ชันต่างๆ เนื่องจากคุณจะเขียนโค้ดเพื่อทำงานใกล้เคียงกันน้อยลงนั่นเอง
ขอขอบคุณเนื้อหาจาก https://www.microsoft.com
ไอทีจีเนียส เอ็นจิเนียริ่ง (IT Genius Engineering) ให้บริการด้านไอทีครบวงจร ทั้งงานด้านการอบรม (Training) สัมมนา รับงานเขียนโปรแกรม เว็บไซต์ แอพพลิเคชั่น งานออกแบบกราฟิก และงานด้าน E-Marketing ที่กำลังได้รับความนิยมในปัจจุบัน ทั้ง SEO , PPC , และ Social media marketting
ติดต่อเราเพื่อสอบถามผลิตภัณฑ์ ขอราคา หรือปรึกษาเรื่องไอที ได้เลยค่ะ
Line : @itgenius (มี @ ด้านหน้า) หรือ https://lin.ee/xoFlBFeFacebook : https://www.facebook.com/itgeniusonline
Tel : 02-570-8449 มือถือ 088-807-9770 และ 092-841-7931
Email : contact@itgenius.co.th
คำค้นหา : การแปลงจาก PHP ไปเป็น ASP.NETHypertext Preprocessorการเขียนโปรแกรมเชิงออปเจ็กต์ซินแทกซ์การสร้างเว็บแอพพลิเคชันเทคโนโลยี