กลุ่มของ .NET

Framework ของไมโครซอฟท์ที่ใช้ชื่อทางการค้าว่า .NET (ดอนเน็ต) มีหลายแบบหลายเวอร์ชั่น รวมแล้วไม่ต่ำกว่าสามสิบแบบ อย่างที่ได้เรียนให้ทราบไปแล้วในบทความ .NET Core คืออะไร แม้จะมีจำนวนมาก แต่ทั้งหมดก็อาจถูกจัดประเภทออกเป็นกลุ่มใหญ่ ๆ ได้ 4 กลุ่มคือ • .NET Framework • .NET Core • .NET Native • .NET Standard
กลุ่มของ .NET
ทักษะ (ระบุได้หลายทักษะ)

กลุ่มของ .NET

Framework ของไมโครซอฟท์ที่ใช้ชื่อทางการค้าว่า .NET  มีหลายแบบหลายเวอร์ชั่น รวมแล้วไม่ต่ำกว่า 30 แบบ
อย่างที่ได้เรียนให้ทราบไปแล้วในบทความ  .NET Core คืออะไร  แม้จะมีจำนวนมาก แต่ทั้งหมดก็อาจถูกจัดประเภทออกเป็นกลุ่มใหญ่ ๆ ได้ 4 กลุ่มคือ
  • .NET Framework
  • .NET Core
  • .NET Native
  • .NET Standard


 

 .NET Framework

.NET Framework คือ Framework ตัวเก่าแก่ดั้งเดิมที่สุด เกิดขึ้นมาตั้งแต่ปี 2002
เป็นชุดเครื่องมือหลากหลายพร้อม library สำหรับพัฒนาApplication แบบ managed application เป็น Application ที่ run ภายใต้การดูแลจัดการของตัว Runtime)
โปรแกรมที่ทำหน้าที่ manage คือ Common Language Runtime (CLR)  ที่ใช้งานได้กับภาษา .NET ทั้งหมด (เช่น C# , F# ,VB.NET)
ไมโครซอฟท์เน้นพัฒนาให้ .NET Framework  ทำงานในระบบปฏิบัติการ windows เป็นหลัก เนื่องจากมันเป็นซอฟต์แวร์
ดังนั้น ท่านจะต้องดาวน์โหลดมันมาติดตั้งก่อนจึงจะใช้งานได้
 

.NET Core

.NET Core เป็น Framework ที่ไมโครซอฟท์สร้างมาเพื่อให้ทำงานข้ามแพลตฟอร์มได้
คือ มีอยู่ในหลาย ๆ ระบบปฏิบัติการ อาทิ windows , Linux และ MAC OS
ดังนั้น เราอาจเรียกมันว่า Framework หลากเพลตฟอร์ม (multi-planform framework) ก็ได้

.NET Core เริ่มมีครั้งแรกเมื่อปี 2016 สาเหตุที่ไมโครซอฟท์ตั้งชื่อว่า “.NET Core”
เพราะ Framework นี้มีแต่ส่วน core ล้วน ๆ ไม่เหมือน .NET Framework 
ซึ่งมีสิ่งที่ไม่ใช่ core ปนเข้ามาเยอะ คำว่า  core  ในที่นี้หมายถึงส่วนหัวใจหรือแกนหลักของ Framework

ในระยะสิบหกปีที่ผ่านมานี้ไมโครซอฟท์พัฒนา .NET Framework  อย่างต่อเนื่อง แต่ละเวอร์ชั่นจะมีคุณสมบัติใหม่ ๆ เพิ่มเข้าไปทุกครั้ง
โดยที่คุณสมบัติบางอย่างแม้จะมีประโยชน์และอำนวยความสะดวกให้แก่นักพัฒนา ฯ แต่มันก็ไม่ใช่หัวใจหรือแกนหลักของ Framework
ดังนั้น เมื่อไมโครซอฟท์พัฒนา .NET Core ไมโครซอฟท์จึงถือโอกาสนี้ตัดสิ่งที่ไม่ใช่ core ออกไป โดยเฉพาะอย่างยิ่งคุณสมบัติที่ผูกติดกับระบบปฏิบัติการ windows

คำว่า core ถูกนำมาปะหน้าชื่อองคาพยพทั้งหมด อาทิ CoreCLR (Runtime) และ CoreFX (Library)
ผู้อำนวยการโครงการ .NET Core   สก็อต ฮันเตอร์ กล่าวว่า “ลูกค้าของ .NET Core ร้อยละ 40 เป็นลูกค้าใหม่ คือ ไม่ใช่นักพัฒนา ฯ กลุ่มที่เคยใช้ .NET Framework  มาแต่เดิม ซึ่งเป็นสิ่งที่เราต้องการ เพราะเราอยากดึงคนกลุ่มใหม่เข้ามา”

ความที่ไมโครซอฟท์ตัดสิ่งที่ไม่ใช่ core ออกไป ทำให้.NET Core  มีขนาดเล็กกว่า .NET Framework  มาก
สิ่งมีขนาดใหญ่ที่ไมโครซอฟท์ตัดออกมีหลายอย่าง
ยกตัวอย่างเช่น ส่วนเชื่อมต่อกับผู้ใช้ในรูปแบบกราฟฟิก คือ  Win Forms  และ WPF (Windows Presentation Foundation) ได้ถูกตัดออกไปทั้งกระบิ
เพราะมันยึดโยงกับระบบปฏิบัติการ windows อย่างแนบแน่น

สิ่งที่มาทดแทนคุณสมบัติส่วนเชื่อมต่อกับผู้ใช้ในรูปแบบกราฟฟิก คือ Win Form และ WPF ใน .NET Core   คือเทคโนโลยีใหม่เรียกว่า UWP (Universal Windows Platform) อันเป็นเทคโนโลยีที่มีหัวใจเป็นภาษา XAML และ Fluent design  ที่ทำให้สามารถพัฒนา Application ที่ทำงานในเพลตฟอร์มใด และ device ใดก็ได้ เช่น run ในระบบปฏิบัติการ Linux ที่ทำงานในอุปกรณ์แบบพกพาอย่างแทปเล็ต หรือ run ในแผงควบคุมเครื่องจักรบนอุปกรณ์ฝังตัวที่ใช้ในโรงงานอุตสาหกรรม

สำหรับการพัฒนา web application , ASP.NET Web Forms  และ WCF (Windows Communication Foundation) ซึ่งนักพัฒนาไม่นิยมใช้ก็ถูกตัดออกทั้งหมด ส่วน ASP.NET Web API  และ .NET MVC  ที่ได้รับความนิยม ถูกแทนที่ด้วย ASP.NET Core  และ ASP.NET Core MVC ที่ไมโครซอฟท์ปรับให้กะทัดรัดกว่าใน .NET Framework 

แม้การทำให้ .NET Core  มีขนาดเล็กกว่า .NET Framework  จะไม่ใช่เป้าหมายเริ่มต้นของไมโครซอฟท์ แต่ต่อมาก็ถือเป็นการกระทำที่มีประโยชน์เมื่อต้อง run application ในฮาร์ดแวร์ที่อัตคัตสรรพยากร
ดังนั้นนอกจากจะตัดส่วนที่ไม่ใช่ core ออกแล้ว ไมโครซอฟท์ยังหั่นบางส่วนใน .NET Core  ออกเป็น NuGet packages เพื่อให้ deploy แยกออกไปต่างหากได้ การทำเช่นนี้ยิ่งทำให้ส่วนหลักของ .NET Core  มีขนาดเล็กลงไปอีก
 

.NET Native

.NET Native  คือ เทคโนโลยีการแปลภาษา C# (และภาษา .NET อื่น ๆ) ให้กลายเป็น binary ภาษาเครื่องของ CPU โดยตรง (เรียกว่า Native) เหมือนการ compile ภาษา C++ ต่างจากเทคโนโลยีปรกติที่ภาษา .NET จะต้องถูกแปลเป็นภาษา CIL  (Common Intermediate Language) ก่อน เมื่อตอน run ภาษา CIL จะถูกแปลให้เป็น Native อีกครั้ง

เทคโนโลยี .NET Native  ถูกสร้างขึ้นเพื่อให้นักพัฒนา ฯ ทำแอพสำหรับอุปกรณ์เคลื่อนที่ซึ่งมีทรัพยากรจำกัดและใช้พลังงานจากแบตเตอร๊่ได้โดยไม่ต้องเขียนโค้ดในภาษา C++  

โปรแกรมที่อยู่ในสภาพ Native กินทรัพยากรและแบตเตอรี่น้อยกว่าภาษา CIL ที่ว่ากินทรัพยากรน้อยกว่า
เพราะ binary ไฟล์มีขนาดเล็กกว่าไฟล์ภาษา CIL จึงใช้พื้นที่ในหน่วยความจำแรมน้อยกว่า และ binary ไฟล์ไม่ต้องถูก compile ซ้ำอีกครั้ง
จึงใช้พลังงานของ CPU น้อยกว่าไฟล์ภาษา CIL ที่บอกว่า Native กินพลังงานแบตเตอรี่น้อยกว่า เพราะขณะที่ไม่ได้ทำอะไรโปรแกรมแบบ Native จะไม่ใช้พลังงานไฟฟ้าเลย ต่างจาก CIL ที่มีตัว run time แบบ JIT (Just In Time) ซึ่งทำงานอยู่ที่พื้นหลังตลอดเวลา ไม่เว้นแม้แต่ตอนที่ Applicationอยู่ในภาวะนิ่งเฉย

เทคโนลีที่ใช้ใน .NET Native  เรียกว่า NGen (Native Image Generator) เป็น service หนึ่งของ .NET Native  ทำหน้าที่คอยแปลภาษา .NET ให้กลายเป็นภาษา native
โดยเป็นการแปลแบบ “compile ล่วงหน้า” หรือ “เอโอที” (AOT : Ahead Of Time compilation) ซึ่งใช้เครื่องมือชุดเดียวกันกับภาษา C++   
ภาษา C# ที่ถูกแปลเป็น native แล้วตอน run จะไม่ต้องอาศัยการทำงานของ CLR (Common Language Runtime) เช่นเดียวกันกับ C++   
Compile with .NET Native tool chain
ในโปรแกรม Visual Studio หัวข้อ Project/Properties/Build มีตัวเลือก Compile with .NET Native tool chain
เพื่อให้นักพัฒนา ฯ เลือกว่าต้องการคอมไพล์โปรแกรมเป็นแบบ CIL หรือเป็น Native 
 
การคอมไพล์เป็น Native มีกระบวนการที่ซับซ้อนหลายกระบวนการกว่า CIL จึงใช้เวลานานกว่า
ดังนั้นในขณะกำลังพัฒนาจึงไม่ควรเลือกหัวข้อนี้ ควรจะเลือกเมื่อพัฒนาเสร็จสมบูรณ์แล้วและเข้าสู่ขั้นตอนการผลิต
 
สรุปคุณลักษณะของ .NET Native  คือ
  • Application ทำงานได้เร็วกว่า App ที่ต้องอาศัย CLR
  • Application เริ่มทำงานได้เร็วกว่า เพราะสามารถเริ่มงานได้ทันทีโดยไม่ต้องให้ JIT แปลอีกครั้ง
  • นักพัฒนา ฯ สามารถพัฒนา App ด้วยภาษา C# และVisual Basicได้
  • นักพัฒนา ฯ ใช้ประโยชน์จาก library ของ .NET ได้
  • มีตัวจัดการหน่วยความจำ จัดการขยะ และตัวจัดการ Error
  • ใช้ทรัพยากรของระบบได้ประหยัดกว่า
  • ใช้พลังงานไฟฟ้าน้อยกว่า
  • Complie เป็นภาษาเครื่องของ CPU ได้หลายตระกูล  


 

.NET Standard

.NET Standard ต่างจาก .NET  3 กลุ่มที่กล่าวมา เพราะเป็นเพียงข้อกำหนด ไม่ใช่ซอฟต์แวร์ ไม่ใช่ library หรือ Tool ใด ๆ
เราจึงไม่สามารถดาวน์โหลด .NET  Standard มาติดตั้งใช้งานได้เหมือน .NET  ชนิดอื่น ๆ

อุปมาได้กับที่เราไม่สามารถดาวน์โหลด HTML5 มาติดตั้งใช้งานได้ ถ้าเราต้องการใช้ HTML5
เราจะต้องดาวน์โหลดติดตั้งโปรแกรม web browser ที่สนับสนุน HTML5 ในกรณี .NET  Standard
ถ้าเราต้องการใช้งานมันเราจะต้องดาวน์โหลดติดตั้ง .NET ที่สนับสนุน.NET  Standard

Framework ที่สนับสนุน .NET  Standard ได้แก่.NET Core , .NET Framework , Mono , Xamarin , Universal Windows Platform , Windows 8 และ Windows Phone