Դͺ´ءѹ

 Email : beembc@gmail.com     

 
    鹵͹èѴ䫵
    觷ͧ㹡÷
    ͧ͡
    ͺҤ㹡÷
    Ӷ




к :
ʼҹ :
 

ԡô䫵

ҧջʺóФд
Ѿഷ䫵Ѻ䫵Ҵؤҡ
˹ҷ
• ԡ͹鹷 1,000 ҷ͹
• ԡ¤駤 300 ҷ
* ѺҳТҴͧ
ҹѡThaiNetDesign.Net
ҧ ?
Google
Msn
Yahoo
เพื่อนแนะนำ
หลงมา
 
ʴšǵ
     :: 145178
Ѻ䫵 ThaiNetDesign.Net ԡ

Ѻ͡Ẻ䫵

 

͡Ẻ䫵

 

Ѻ䫵

·ҹդö੾дҹ ҹ÷ӧҹѹҧŧ դѡ㹧ҹŻ͡Ẻ ԡ੾ ֧ŧҹ͡ҹդسҾ ͺʹͧͧâͧáԨ ͧä ҧءٻẺ
MSN : Ѻ͡Ẻ䫵 beem_bc@hotmail.com
Email : Ѻ͡Ẻ䫵 webmaster@thainetdesign.net
:: 

͡Ẻ䫵  Ѻ  Ѻ䫵  Ѻ͡Ẻ䫵   

::


PHP programming[36]|Adobe Photoshop[14] |AdobeFlash[5] |Dreamweaver[3] |
เทคนิคการแปลง PHP ไปเป็น ASP.NET
 ù

ใช้ได้กับ

  • Microsoft ASP.NET
  • Microsoft Visual Basic .NET

สรุป:   เรียนรู้เกี่ยวกับเทคนิคการแปลงจาก  PHP  ไปเป็น  ASP.NET  เรียนรู้เกี่ยวกับคุณสมบัติ  ฟังก์ชัน  และโครงสร้างของระบบทั้งสองชนิด

บท ความชิ้นนี้จะพูดถึงวิธีการแปลงจาก  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 และถูกใส่เอาไว้เรียงตามลำดับที่ถูกต้องในโครงสร้างควบคุมก็ตาม

เปรียบเทียบคุณสมบัติ

คุณสมบัติ

PHP

ASP.NET

ภาษาที่ใช้เขียนโค้ด

C, ภาษาเขียนสคริปทสไตล์ C++ พร้อมกับใช้ mark up สไตล์ ASP รุ่นเก่า รองรับแนวคิด OOP ได้บางส่วน

ใช้ ได้กับ  25 ภาษา แต่ภาษาที่ได้รับความนิยมมากที่สุด 2 ชนิดก็คือ Visual Basic .NET และ C# นักพัฒนาส่วนใหญ่เลือกใช้ภาษาเพียงภาษาเดียว แต่สามารถใช้ร่วมกับคอมโพเน้นต์ที่เขียนขึ้นมาจากภาษาอื่นๆใน 25 ภาษานี้ได้

แนวคิดเรื่องแอพพลิเคชันที่คอมไพล์แล้ว

สามารถคอมไพล์และสั่งงานเป็นโปรแกรมที่ประมวลผลได้

ทำได้ ทั้งในรูปของการคอมไพล์ขณะทำงาน และการคอมไพล์เอาไว้ก่อน

การทำแคชเพจเอาท์พุดทั้งหมด

ไม่มีบริการโดยตรง

ทำ ได้  สามารถทำแคชเพจเวอร์ชันต่างๆโดยอิงกับตัวแปรตั้งแต่หนึ่งแบบขึ้นไปของ URL ประเภทของบราวเซอร์ ฟังก์ชันเฉพาะ หรือเงื่อนไขผสมผสานอื่นๆ

การทำแคชเพจเอาท์พุดบางส่วน

ไม่มีบริการโดยตรง

มี บริการในตัวผ่านการใช้  User  Controls  เราสามารถทำแคชข้อมูลและออปเจ็กต์อื่นๆ  พ่วงกับการกำหนดกฎเกณฑ์หมดอายุการใช้งานที่ซับซ้อนได้โดยใช้ Cache API ก็ได้

การเรียกใช้ดาต้าเบส

มีไดรเวอร์สำหรับดาต้าเบสส่วนใหญ่ที่มีอยู่ในตลาด รวมทั้งดาต้าเบสแบบเปิดเผยซอร์ซโค้ดด้วย

รองรับการทำงานกับ  OLE-DB  และ  ODBC  โดยตรง  รวมทั้งมีไดรเวอร์โดยตรงสำหรับ  Microsoft  SQL Server และ Oracle อีกด้วย

ดาต้าเบสเอาท์พุด

ชุดข้อมูลจะถูกส่งกลับมาในรูปตัวแปรของ PHP และสามารถส่งเอาท์พุดออกไปเหมือนกับตัวแปรอื่นๆ

ทำ เท็มเพล็ตการเชื่อมข้อมูลไปยังระบบควบคุมในฝั่งของเซิร์ฟเวอร์เพื่อช่วยให้ การพัฒนาทำได้ง่ายขึ้น  หรือทำลูปด้วยตนเองก็ได้ตามความพอใจ

คอมโพเน้นท์ภายนอก

นัก พัฒนาสามารถเรียกแพกเก็จได้หลายชนิด  และยังสามารถแก้ไขกลไก  Zend  ได้โดยตรงอีกด้วย เนื่องจากเป็นซอฟต์แวร์แบบเปิดเผยซอร์ซโค้ด นอกจากนั้นโปรแกรมเมอร์ที่รับผิดชอบ Zend อยู่กำลังหาทางทำให้ PHP เรียกใช้ออปเจ็กต์ของ .NET ได้อีกด้วย

รอง รับการทำงานของไลบราลี  C และออปเจ็กต์ COM ได้ดีมาก รวมทั้งแอลเซมบลีที่สร้างขึ้นมาโดยใช้ภาษาต่างๆที่ตรงตามมาตรฐาน .NET อาทิเช่น Managed C++ เป็นต้น แต่ไม่มีบริการออปเจ็กต์ CORBA หรือจาวาคลาสโดยตรง

XML/XSLT

ทำงานผ่านแพกเก็จเสริมและไลบราลี

มี บริการที่ใช้ง่ายและครอบคลุมสำหรับ  XML  DOM,  XSLT,  ระบบตรวจสอบความถูกต้องและมี  lightweight stream-oriented parsing สำหรับเอกสาร XML ด้วย

XML เว็บเซอร์วิส

ในปัจจุบันมีการพัฒนาแพกเก็จ  PHP  ให้รองรับการทำงานเว็บเซอร์วิสโดยอิงกับกลไก Apahe AXIS รวมทั้งกลไกอื่นๆด้วย

ซอฟต์รุ่นปัจจุบันใช้งานกับ  XML เว็บเซอร์วิสได้อย่างครบถ้วนและคล่องตัว ซึ่งจะทำให้การเผยแพร่และใช้เว็บเซอร์วิสทำได้ง่ายมาก

สภาพของเซสชัน

บริหารเซสชันโดยอิงกับคุ๊กกี้

สภาพ เซสชันโดยอิงกับคุ๊กกี้หรือไม่มีคุ๊กกี้ก็ได้โดยใช้  in-memory  store  ในเซิร์ฟเวอร์เพียงเครื่องเดียว เซิร์ฟเวอร์จุดศูนย์กลาง   หรือดาต้าเบสแบกเอนด์ก็ได้   นอกจากนั้นโครงสร้างที่ขยายขอบเขตได้ยังช่วยให้มีการสร้างโมดูลสภาพเซสชัน ลักษณะเฉพาะขึ้นมา  เพื่อนำไปใช้แทนที่ออปชันต่างๆที่มีอยู่เดิมก็ได้ เซสชันที่ไม่มีคุ๊กกี้อาศัยการแก้ไขตัวแปรเพียงชุดเดียวก็ใช้งานได้แล้ว

ฟังก์ชันในตัว

PHP  มีฟังก์ชันในตัวที่ครอบคุมงานพื้นฐานต่างๆที่เว็บแอพพลิชันต้องทำ  นอกจากนั้น  PHP ยังเรียกใช้จาวาคลาสไลบราลีได้ โดยการเขียนโปรแกรมพิเศษเพิ่มเติม

ASP  .NET  สามารถเรียกใช้คลาสไลบราลีทั้งหมดของ .NET Framework ได้ ซึ่งประกอบด้วยฟังก์ชันเป็นจำนวนมาก

regular expression

รองรับซินแทกซ์ expression ปกติที่คอมแพททิเบิลกับ POSIX และ Perl

รอง รับซินแทกซ์  regular  expression ที่คอมแพตทิเบิลกับ Perl-5 พร้อมทั้งมีคุณสมบัติอื่นๆเพิ่มเติมอีกอาทิเช่นการจับคู่จากขวาไปซ้าย  express  ที่คอมไพล์ไว้แล้ว  การตั้งชื่อ  groups ใช้กับ Unicode ได้อย่างเต็มที่ นอกจากนั้นยังยอมให้ผู้ใช้กำหนดให้มีการเรียกฟังก์ชันได้ในช่วงขั้นตอนการ เปลี่ยน regular expression อีกด้วย

การดีบัก

PHP ไม่ได้มีการดีบักที่กว้างขวางครอบคลุมมากนัก แต่โปรแกรมของบริษัทซอฟต์แวร์อื่นๆและ Zend ยอมให้มีการดีบักและการทดสอบเพิ่มขึ้นได้

มี ระบบติดตามผลและข้อมูลสภาพแวดล้อมที่ครอบคลุมที่สามารถใส่ลงไปในเพจหรือแสดง ผลในเพจต่างหากก็ได้   โปรแกรม  Microsoft Visual Studio .NET ยอมให้มีการดีบักเพจขณะที่กำลังประมวลผลได้ นอกเหนือจากการดีบักสคริปท์ในฝั่งไคล์เอ็นต์และ stored procedures ของ SQL Server แล้ว

ระบบจัดการความผิดพลาด

ไม่มีบริการดักความผิดพลาด แต่มีฟังก์ชันจัดการและบันทึกความผิดพลาด

รอง รับการทำงานของ  structured  exception handling (นอกเหนือจากด่านป้องกัน "ขั้นสุดท้าย" สำหรับโค้ดที่ประมวลผลไม่ว่าจะมีความผิดพลาดเกิดขึ้นหรือไม่ก็ตาม),  raising  customer  exceptions และการกำหนด custom error pages สำหรับความผิดพลาดที่ไม่อาจแก้ไขได้แบบต่างๆ

ระบบปรับแต่งภาพ

ไม่มีบริการในตัวโดยตรง แต่ใช้ร่วมกับคอมโพเน้นต์ของบริษัทซอฟต์แวร์อื่นๆได้

มีคุณสมบัติการสร้างและปรับแต่งภาพจำนวนมาก (ดูที่คลาส System Drawing ของ .NET Framework)

การนำโค้ดกลับมาใช้ใหม่

ฟังก์ชันที่ผู้ใช้กำหนดเอง มีความสามารถในการสร้าง Classes และใส่ไฟล์ลงไปได้

User Controls, Server Controls, คลาสลักษณะเฉพาะตัว และใส่ไฟล์ลงไปได้

การทำงานหลายๆงานพร้อมกัน

PHP มีโมเดลการทำงานหลายๆงานพร้อมกันที่ดี

รอง รับการทำงานได้อย่างเต็มที่  ซึ่งไม่เพียงแต่เรียกเพจพร้อมกันในงานแยกจากกันแล้ว และถ้าจำเป็นแต่ละเพจยังสร้างงานของตนเองขึ้นมา เพื่อทำพร้อมกันหรือทำงานต่างช่วงเวลากันก็ได้

การทำแคชข้อมูล

มีคุณสมบัติการทำแคชข้อมูลในตัวจำกัด

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

การทำงานกับภาษาต่างๆ

ใช้กับ Unicode ได้อย่างเต็มที่

ใช้ งานกับสตริง  Unicode  และการเข้ารหัสตัวอักษรแบบต่างๆหลายชนิด ส่วนฟังก์ชันวันที่ ตัวเลข และสกุลเงินจะอิงกับการใช้งานในประเทศต่างๆ      และจะมีการปรับแต่งเอาท์พุดขึ้นอยู่กับการกำหนดประเทศปัจจุบันแทนที่จะต้อง เรียกฟังก์ชันอีกชนิดหนึ่ง) รองรับการใช้ resource files เพื่อแปลงแอพพลิเคชันให้เหมาะสมกับการใช้งานในประเทศต่างๆได้ในทันที

SMTP, HTTP, FTP, POP3

ใช้งานกับอินเทอร์เน็ตโพรโตคอลหลากชนิดได้โดยตรง

บริการ  SMTP  จะขึ้นอยู่กับ ITS SMTP Service ส่วนบริการ HTTP จะทำงานได้เป็นอย่างดี แม้ .NET ไม่มีบริการ  FTP หรือ POP3 ก็ตาม แต่ผู้ใช้ยังสามารถหาคอมโพเน้นต์ที่วางจำหน่ายหรือแจกฟรีมาใช้สำหรับ ฟังก์ชันดังกล่าวได้

สภาพแวดล้อมในการพัฒนาแบบเบ็ดเสร็จ

มีเครื่องมือพัฒนาจำนวนมากที่มีคุณสมบัติหลากหลายให้เลือกใช้ได้ฟรีไปจนถึงรุ่นที่มีราคาหลายร้อยดอลลาร์

มี เครื่องมือแจกฟรีสำหรับการพัฒนา  ASP.NET จากไมโครซอฟท์ที่ชื่อว่า ASP .NET Web Matrix ส่วนเครื่องมือที่ได้รับความนิยมมากที่สุดก็คือ  Visual  Studio  .NET ใช้ได้กับภาษา .NET ทุกชนิด มีเครื่องมือดาต้าเบสสำหรับสร้าง  SQL และทดสอบดาต้าเบส มีเครื่องมืออกแบบเว็บที่มีระบบควบคุมเวอร์ชัน ระบบดีบักที่ทันสมัยและคุณสมบัติอื่นๆอีกมากในตัว  ถ้าต้องการดูรายชื่อเครื่องมือทั้งหมดให้เข้าไปดูได้ที่  MSDN Visual Studio Developer Center ส่วนเครื่องมืออื่นๆอาทิเช่น  Borland  C# Builder และ Macromedia Dreamweaver MX ก็รองรับการทำงานของ ASP.NET ได้เช่นกัน

การทำงานกับเว็บเซิร์ฟเวอร์

ใช้งานกับเว็บเซิร์ฟเวอร์ได้เกือบทุกชนิด

ใช้ได้กับ IIS และ Apache 2.0 เวอร์ชันเชิงพาณิชย์ของ Covalent

การทำงานกับระบบปฏิบัติการ

สามารถ แปลงไปใช้ได้กับโอเอสแทบทุกชนิด   อาทิเช่น  Microsoft  Windows,  Mac,  OS  X,  Amiga, Solaris, Free BSD, Linux, AIX และอื่นๆอีกมาก

ปัจจุบันใช้ได้กับ Windows 2000, Windows XP และ Windows Sever 2003 เท่านั้น

การเปรียบเทียบซินแทกซ์และงานพื้นฐานต่างๆ

หัวข้อต่อไปนี้จะเป็นการเปรียบเทียบระหว่างซินแทกซ์ของ PHP และ .NET รวมทั้งการเขียนโปรแกรมพื้นฐานต่างๆ

การเขียนคอมเมนต์

PHP  ยอมให้คุณใส่ความเห็นลงไปในโค้ดโดยใช้  C,  C++  และซินแทกซ์สไตล์เชลล์ของ  Unix  ข้อความที่อยู่ในกรอบความเห็นจะไม่ถูกประมวลผล โดยทั่วไปแล้ว ถ้าหากต้องการใส่ความเห็นลงไปในโค้ด Visual Basic .NET ใน ASP.NET คุณก็เพียงแต่ใช้ <%-- เพื่อเปิด Comment และใช้ --%> เพื่อปิด โค้ดตัวอย่างชุดที่ 1 แสดงวิธีการเขียนความเห็นในสภาพแวดล้อมแต่ละแบบ

PHP
/*
This is a block of text
That has been commented out
*/
VB.NET
<%-- This is a comment. --%>

ตัวแปร

แม้ว่า  PHP  และ  Visual  Basic .NET มีโครงสร้างภาษาที่คล้ายคลึงกันก็ตาม แต่ซินแทกซ์ที่ใช้กลับแตกต่างกันอย่างมาก  ส่วน  Visual  Basic .NET สร้างขึ้นมาโดยอิงกับโมเดล OOP การกำหนดตัวแปรจึงเข้มงวดมากกว่า PHP เนื่องจาก PHP ใช้วิธีการกำหนดตัวแปรโดยการใส่เครื่องหมายดอลลาร์ ($) หน้าชื่อตัวแปรเท่านั้น

คุณกำหนดตัวแปรใน  Visual Basic .NET โดยการกำหนดชื่อและคุณสมบัติ ข้อความกำหนดตัวแปรใช้คีย์เวิร์ด Dim ในขณะที่ตำแหน่งและเนื้อหาจะเป็นตัวกำหนดคุณสมบัติของตัวแปร นอกจากนั้นยังมีการกำหนดตัวแปรออกเป็นระดับต่างๆอีกด้วย อาทิเช่น local and module, ประเภทข้อมูล, lifetimes และ accessibitlity เป็นต้น

ในตอนแรกแนวทางนี้อาจดูซับซ้อนเกินไปอยู่บ้างเมื่อเทียบกับการกำหนดตัว แปรของ  PHP  แต่วิธีการนี้จะช่วยให้นักพัฒนาทำงานได้สบายมากขึ้น   ASP.NET   เน้นไปที่การช่วยให้นักพัฒนาสร้างแอพพลิเคชันประสิทธิภาพสูง  และการกำหนดประเภทของข้อมูลช่วยให้งานต่างๆง่ายขึ้นอาทิเช่น  การทำความสะอาดตัวแปร การดีบัก การจัดการกับข้อยกเว้นและความผิดพลาด และการแก้ไขโค้ดเป็นต้น โค้ดตัวอย่าง 2 แสดงวิธีกำหนดตัวแปรในสภาพแวดล้อมแต่ละชนิด

PHP
$head_count
$foo
$X
$obj
VB.NET
Dim head_count As Integer
Dim foo As String
Dim X As Date
Dim Obj As object

 การกำหนดประเภทข้อมูล

วลี  AS  ในประโยคกำหนดประเภทข้อมูลจะช่วยให้คุณกำหนดประเภทข้อมูลหรือประเภทออ ปเจ็กต์ของตัวแปรที่คุณต้องการขึ้นมาได้ คุณสามารถกำหนดตัวแปรประเภทต่างๆดังต่อไปนี้ได้

  • ประเภทข้อมูลเบื้องต้น อาทิเช่น Boolean, Long หรือ Decimal
  • ประเภทข้อมูลแบบ composite อาทิเช่น array หรือ structure
  • ประเภทออปเจ็กต์หรือคลาสจาก Visual Basic หรือแอพพลิเคชันอื่นๆอาทิเช่น Label หรือ Textbox

คุณสามารถกำหนดตัวแปรหลายๆอันที่เป็นประเภทเดียวกันในบรรทัดเดียวกัน ได้   โดยไม่จำเป็นต้องกำหนดประเภทข้อมูลซ้ำ  ซึ่งในประโยคต่อไปนี้ตัวแปร  numStudents,  numGTA  และ  numProfessors กำหนดให้เป็นประเภท Integer เหมือนกัน

 

Dim numStudents, numGTA , numProfessors As Integer
' All three are Integer variables.

ถ้าหากต้องการทราบข้อมูลเพิ่มเติมเกี่ยวกับประเภทข้อมูลดู  Data  Types  ถ้าหากต้องการทราบข้อมูลเกี่ยวกับการเขียนโปรแกรมเชิงออปเจ็กต์เพิ่มเติม ดูหัวข้อ Object-Oriented Programming in Visual Basic

การกำหนด lifetime

lifetime  เป็นตัวแปรที่ใช้กำหนดว่าตัวแปรแต่ละตัวจะมีการใช้งานนานขนาดไหน ตัวแปรแบบ local ที่กำหนดเอาไว้ในคำสั่ง  Dim  จะมีอยู่นานตราบเท่าที่มีการประมวลผล  procedure อยู่ ถ้าหาก procedure หยุดทำงาน ตัวแปรแบบโลคอลทั้งหมดจะหายไป รวมทั้งค่าที่อยู่ในตัวแปรด้วย

แนวคิดของ  lifetime  มีประโยชน์อย่างมากในการช่วยให้นักพัฒนาสร้างแอพพลิเคชันขึ้นมา โดยที่ไม่จำเป็นต้องกังวลเกี่ยวกับปัญหาจำนวนมากที่เกิดขึ้นในแอพพลิเคชัน ขนาดใหญ่  อาทิเช่นการบริหารเมมโมรีอย่างมีประสิทธิภาพเป็นต้น ถ้าหากมีการกำหนด  lifetime ให้ตัวแปรอย่างเหมาะสมแล้ว คุณสามารถกำหนดให้ .NET ทำความสะอาดตัวแปรที่ไม่ได้ใช้งานอีกได้

ถ้าหากต้องการทราบข้อมูลเพิ่มเติมเกี่ยวกับ lifetime ดูหัวข้อ Lifetime

การกำหนดขอบเขต

ตัวแปรแบบ  local  อีกชนิดหนึ่งที่กำหนดเอาไว้ภายใน  procedure  (procedure มีความหมายเท่ากับฟังก์ชัน) ส่วนตัวแปรแบบ non-local จะกำหนดเอาไว้ภายนอก procedure โดยจะอยู่ภายใน class หรือ structure

ตัวแปรแบบ  non-local ที่อยู่ใน class หรือ structure อาจกำหนดให้เป็นแบบใช้ร่วมกันหรือไม่ก็ได้ ถ้าหากกำหนดโดยใช้คีย์เวิร์ด  Shared  ตัวแปรตัวนี้จะใช้ร่วมกันได้  และตัวแปรจะมีเพียงชุดเดียวในกลุ่มของ  class หรือ structure  ทั้งหมด  ถ้าหากไม่ได้ใช้คีย์เวิร์ด  Shared ตัวแปรแบบนี้เป็นแบบ instance ซึ่งคุณต้องสร้างตัวแปรแต่ละก็อปปี้ให้แก่  class  หรือ structure แต่ละชุด ตัวแปร instance แต่ละก็อปปี้จะใช้ได้กับ instance ซึ่งเป็นผู้สร้างตัวแปรขึ้นมาเท่านั้น

ขอบเขตของตัวแปรก็คือการที่โค้ดทั้งหมดสามารถอ้างอิงกับตัวแปรได้โดยที่ ไม่จำเป็นต้องเรียกชื่อตัวแปร  เราสามารถแยกแยะขอบเขตของตัวแปรได้โดยดูว่ามีการกำหนดตัวแปรเอาไว้ที่ไหน   โค้ดที่อยู่ในแต่ละส่วนสามารถใช้ตัวแปรที่กำหนดเอาไว้ในส่วนนั้นโดยที่ไม่จำ เป็นต้องเรียกชื่อตัวแปรเหล่านั้นก่อน  การกำหนดขอบเขตต้องปฏิบัติตามกฎเกณฑ์ดังต่อไปนี้

  • ขอบเขตของตัวแปรแบบ shared หรือ instance อยู่ภายใน structure หรือ class ที่เป็นตัวกำหนดตัวแปรดังกล่าวขึ้นมา 
  • ขอบเขตของตัวแปรแบบ local อยู่ใน procedure ซึ่งกำหนดตัวแปรนั้นขึ้นมา

อย่างไรก็ตามถ้าหากคุณกำหนดตัวแปรแบบ  local  เอาไว้ภายใน block ขอบเขตของตัวแปรจะอยู่ใน block นั้นเท่านั้น  ตัวแปรแบบ local จะทำงานอยู่ภายใน control block ที่กำหนด โดยที่ control block อาจจะเป็น procedure, คำสั่ง if, คำสั่งวนลูปและอื่นๆอีกมาก

ถ้าหากต้องการทราบข้อมูลเพิ่มเติมเกี่ยวกับ scope ดูที่ Scope

กำหนด accessibility

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

 

Private myConstant As Integer

คุณสามารถใช้คีย์เวิร์ดตั้งแต่หนึ่งตัวขึ้นไป  (อาทิ  Dim, Public, Protected, Friend, Protected Friend หรือ  Private)  ในคำสั่งกำหนดตัวแปร เพื่อใช้เป็นการกำหนดรูปแบบ accessibility ให้แก่ตัวแปร ซึ่งโดยทั่วไปแล้ว คุณมักจะใช้แค่ public หรือ private เท่านั้น

คุณสามารถกำหนดคีย์เวิร์ดเหล่านี้ให้แก่ตัวแปร  module, structure, class หรือ instance ได้ แต่ถ้าหากอยู่ใน procedure จะยอมให้มีการใช้แค่คีย์เวิร์ด Dim เท่านั้น และ accessibility ต้องเป็น private เสมอ

เอาท์พุด

วิธีการปกติในการเอาท์พุดข้อมูลใน  PHP ผ่านทาง echo() language construct รูปแบบที่ใกล้เคียงมากที่สุดใน ASP.NET  ก็คือ  Response.Write()  method  หรือ <%= %> construct ซึ่งใช้เป็นตัวย่อของ Response.Write() นั่นเอง โค้ดตัวอย่าง 3 แสดงซินแทกซ์พื้นฐานสำหรับการเขียนค่าๆหนึ่งขึ้นมาในเพจ

PHP
<?php

$hello = "hi how are you\n";
echo $hello;

?>
VB.NET
<%
Dim Hello As String = "Hi how are you" & vbcrlf
Response.Write(Hello)
%
>

อย่างไรก็ตามวิธีการส่งเอาท์พุดไปให้บราวเซอร์ในลักษณะนี้ ก็เพื่อทำให้คอมแพตทิเบิลย้อนหลังไปหา ASP รุ่นเก่าเท่านั้น  โมเดลควบคุมที่อิงกับเหตุการณ์แบบใหม่ของ ASP.NET ยอมให้มีการเอาท์พุดข้อมูลไปยังบราวเซอร์ได้โดยการกำหนดคุณสมบัติเอาไว้ใน  server control

 29 ÊÔ§ËÒ¤Á 2551
ʴԴ
´
  
***͡ʷ㹪ͧҧѺ
 

 

 Home  |  Portfolio  |  About Us  |  Web - Aplication  |  Contact Us link exchange 
Copyright © 2003-2009 ThaiNetDesign.Net. All Rights Reserved. | Contact : webmaster@thainetdesign.net