Most popular

วันพฤหัสบดีที่ 21 เมษายน พ.ศ. 2554

Concept .Net Framework และกำเนิด mono project หรือ .net บน linux/Mac

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

  • การพัฒนาโปรแกรมแนวใหม่ที่เรียกว่า .NET Framework 
  • .NET ที่ใช้กับ Web Service ซึ่งคาดว่าจะเป็นอนาคตของโปรแกรมยุคต่อไป 
  •   ซอพท์แวร์สำหรับเซิร์ฟเวอร์ เช่น Windows Server 2003 ก็เคยมีชื่อว่า Windows .NET Server 
  •   ซอพท์แวร์พัฒนาโปรแกรม Visual Studio .NET ซึ่งก็คือ Visual Studio รุ่นใหม่นั่นเอง 
  •   โครงการ Hailstorm ที่ต่อไปผู้ใช้จะล็อกอินเข้าบริการของไมโครซอพท์ ด้วย username ชุดเดียว คือ Microsoft Passport (ตัวอย่างง่ายๆ คือ ผู้ใช้ HotMail สามารถใช้ MSN ได้ทันที) 


วันนี้เราจะสนใจแค่ .NET Framework เพียงอย่างเดียวครับ อธิบายอย่างง่ายๆ .NET Framework คือ รูปแบบการพัฒนาโปรแกรมแบบใหม่ ที่ไมโครซอพท์ออกมาแข่งกับจาวา แนวคิดของ .NET นี้จะคล้ายกับจาวาจนเกือบเรียกได้ว่าลอกแบบกันมาเลย ตามปกติแล้ว การพัฒนาซอพท์แวร์ใหญ่ ปัญหาหลักอยู่ 2 อย่าง คือ ปัญหาฮาร์ดแวร์ที่แตกต่างกัน เช่น ในบริษัทมีทั้งเครื่องพีซีกับเครื่องแมค ถ้าต้องการให้โปรแกรมที่เขียนใช้งานได้ทั้งสองระบบ การพัฒนาโปรแกรมจะซับซ้อนขึ้นมาก ส่วนปัญหาที่สอง คือ ความเข้ากันได้ระหว่างภาษา สมมติว่าโครงการหนึ่งต้องใช้งานภาษาคอมพิวเตอร์หลายภาษาร่วมกัน เช่น C กับ Java ซึ่งตามปกติทำงานด้วยกันไม่ได้ ก็ต้องเสียเวลาและแรงงานอีกมหาศาล



ภาษาจาวานำเสนอวิธีการแก้ปัญหาข้อแรก ด้วยการแบ่งการคอมไพล์โปรแกรมเป็นสองครั้ง ครั้งแรกจะคอมไพล์จากจาวาเป็นภาษากลางก่อน เมื่อนำไปรันจริง จะแปลภาษากลางนั้นให้เข้ากับเครื่องที่นำไปรันอีกครั้งหนึ่ง ทำให้จาวามีจุดขายที่ 'เขียนเพียงครั้งเดียว นำไปรันที่ไหนก็ได้' (Write Once Run Everywhere) โครงการ .NET Framework ของไมโครซอพท์ลอกวิธีการแปลเป็นภาษากลางของจาวามา และเพิ่มวิธีการแก้ไขปัญหาข้อที่สองเข้ามา โดยสร้างชุดไลบรารีกลางขึ้นมาใหม่ที่ทุกภาษาสามารถใช้งานร่วมกันได้ (จากเดิมที่ต่างภาษาต่างมีชุดไลบรารีของตนเอง ไม่เกี่ยวข้องกันเลย) ดังนั้น ไม่ว่าเราจะเขียนโปรแกรมที่ประกอบด้วยภาษาต่างชนิดกัน โปรแกรมจะสามารถทำงานได้ ภาษาที่ .NET Framework สนับสนุนมีมากมาย ตั้งแต่ C/C++, Basic, Pascal จนถึงภาษาเก่าแก่อย่าง Cobol แต่ไม่มีจาวาเพราะเป็นคู่แข่งกันโดยตรง ไม้ตายของไมโครซอพท์ คือ สร้างภาษาใหม่ที่คุณสมบัติคล้ายกับจาวาขึ้นมาเป็นคู่แข่งโดยตรง เรียกว่า C# (อ่านว่า ซีชาร์ป)



จาวาการันตีว่า เขียนโปรแกรมภาษาจาวาเพียงครั้งเดียว แล้วเอาไปรันที่ไหนก็ได้ ระบบที่จาวารองรับตอนนี้มีมากมาย ตั้งแต่โทรศัพท์มือถือ (เห็นโฆษณาเกมจาวา ตามเว็บโหลดริงโทนมั้ยครับ) จนไปถึงเมนเฟรมขนาดใหญ่ของไอบีเอ็ม ไมโครซอพท์ก็ออกมาการันตีเหมือนกันว่า แนวคิด .NET สามารถทำงานบนระบบใดก็ได้ แต่ตอนนี้ไมโครซอพท์ยังทำไม่ได้จริงตามที่ว่า เพราะ .NET ทำงานได้บนพีซีที่รันวินโดว์เท่านั้น



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

Mono เป็นการเลียนแบบชุดเครื่องมือ .NET ที่ไมโครซอพท์ขายหรือแจกฟรีบนวินโดว์ มาสู่ลินิกซ์ ซึ่งไม่ต้องกลัวปัญหาเรื่องลิขสิทธิ์ เพราะว่าไมโครซอพท์เสนอบางส่วนของ .NET ให้เป็นมาตรฐานกลางผ่านองค์กรที่ชื่อ ECMA ซึ่ง Mono พัฒนาจากมาตรฐานของ ECMA เราจึงการันตีว่า Mono จะฟรีตลอดไป แต่อย่าลืมว่าไมโครซอพท์เสนอเพียงบางส่วนของ .NET เท่านั้นนะครับ ส่วนที่เหลือเช่นชุดไลบรารี ยังเป็นลิขสิทธิ์ของไมโครซอพท์อยู่ จึงเป็นไปได้ที่ไมโครซอพท์จะเก็บเงินจากชุดไลบรารีเหล่านี้ในอนาคต ทางโครงการ Mono จึงต้องเตรียมทางหนีทีไล่ด้วยการสร้างไลบรารีของตนเองขึ้นมาอีกชุดหนึ่ง ถ้าไมโครซอพท์เก็บเงินขึ้นมาจริงๆ (ยังไม่มีแนวโน้มจะเก็บ แต่ก็ไม่มีอะไรรับประกันว่าอนาคตจะไม่เก็บ) เราจะได้ยังมีชุดไลบรารีที่ใช้งานได้ฟรีต่อไป ตอนนี้ Mono รุ่นล่าสุดคือ 0.32 โดยมีแผนจะออกรุ่น 1.0 กลางปีนี้ และในปีหน้า ทีมงาน Mono หวังว่า รุ่น 1.2 และ 1.4 จะทำงานเข้ากันได้กับ .NET Framework อย่างสมบูรณ์



ชื่อ Mono แปลว่า ลิง ในภาษาสเปนครับ สาเหตุที่ใช้ชื่อนี้ เพราะว่าโลโก้ของ Ximian เป็นรูปลิง และนาย Migel De Icaza ผู้ก่อตั้งเป็นชาวเม็กซิโก ซึ่งพูดภาษาสเปนนั่นเอง รายละเอียดของโครงการ Mono สามารถหาอ่านได้ที่ www.go-mono.com ผมไม่ลงรายละเอียดทางเทคนิคมาก เดี๋ยวจะเบื่อกันไปก่อน ส่วนเรื่อง .NET หาอ่านข้อมูลเชิงลึกได้จากเว็บไซท์ www.twoguru.com เป็นภาษาไทยครับ อธิบายดีมากและค่อนข้างละเอียด

ที่มา : http://www.isriya.com/node/771