ไมโครซอฟท์ออก .NET 9 รุ่นเสถียร หลังจากเริ่มทดสอบรุ่น Preview มาตั้งแต่ต้นปี 2024
หลังไมโครซอฟท์รวมร่าง .NET เสร็จใน .NET 7 ยุคหลังจากนั้นเป็นการพัฒนา .NET ในฐานะแพลตฟอร์มเดียวสำหรับพัฒนาทุกอย่าง (a unified platform) ไม่ว่าจะเป็นเว็บ เซิร์ฟเวอร์ เดสก์ท็อป มือถือ ไปถึงงานใหม่ๆ อย่าง AI
มาถึง .NET 9 มีการเปลี่ยนแปลงหลายอย่าง โดยทุกชิ้นส่วนสำคัญของ .NET ล้วนแต่ได้รับการอัพเดตถ้วนหน้า
ไมโครซอฟท์ประกาศยกโครงการ Mono ให้กับโครงการ WineHQ ที่พยายามทำให้แอปพลิเคชั่นวินโดวส์สามารถรันได้ทุกที่
Mono เริ่มโครงการมาตั้งแต่ปี 2001 โดยพยายามอิมพลีเมนต์ .NET ที่ตอนนั้นยังเป็นโครงการปิดของไมโครซอฟท์ให้เป็นโครงการโอเพนซอร์ส สามารถใช้งานได้ทุกที่ แต่ในช่วงหลังตัวโครงการ .NET เองก็ปรับมาเป็นโครงการโอเพนซอร์สแล้ว โดยไมโครซอฟท์เข้าซื้อ Xamarin ผู้พัฒนาหลักของ Mono ตั้งแต่ปี 2016 และปัจจุบันโครงการ .NET ก็มี mono runtime อยู่ในตัวโครงการ
หลังจากนี้โค้ดหลักจะถูกย้ายไปยัง GitLab ของ WineHQ ส่วนโค้ดที่เดิมบน GitHub จะถูกเก็บไว้ก่อน และไบนารีต่างๆ จะคงให้ดาวน์โหลดไปอีกอย่างน้อยสี่ปี
ไมโครซอฟท์ค่อยๆ ผลักดัน .NET MAUI (อ่านว่า เมาอิ) ชุดเครื่องมือสร้าง UI ข้ามแพลตฟอร์มด้วย C# มาอย่างช้าๆ หลังจาก Visual Studio ตัวเต็มรองรับแล้วในปี 2022 ก็ต้องใช้เวลาอีก 2 ปีกว่าจะมาถึง VS Code
เก็บตกประเด็นจากงาน Build 2024 ประกาศอันหนึ่งที่น่าสนใจในงานคือ ไมโครซอฟท์บอกว่าการพัฒนาแอพแบบ Win32 บนวินโดวส์ จากนี้ไปจะแนะนำให้ใช้เครื่องมือสร้าง UI เพียงแค่ 2 ตัวคือ WPF (Windows Presentation Foundation) และ WinUI 3 เท่านั้น (ลาก่อน WinForms คือไม่ถึงขั้นไม่ยอมให้รัน แต่ไม่แนะนำให้ใช้แล้ว)
ไมโครซอฟท์ออก .NET 9 Preview 4 มีของใหม่ที่สำคัญคือตัวแปรประเภท Tensor<T> (อาร์เรย์หลายมิติ) สำหรับการประมวลผล AI
Tensor<T> ต่อยอดมาจาก TensorPrimitives ที่เป็น API สำหรับประมวลผล tensor ใน .NET 8 เพื่อให้ประมวลผลคณิตศาสตร์มีประสิทธิภาพมากขึ้น เพราะใช้ชุดคำสั่งแบบขนาน (SIMD) ของตัวซีพียู/จีพียูในการประมวลผล
การมาถึงของ Tensor<T> จะช่วยเพิ่มประสิทธิภาพในการรันไลบรารี AI ยอดนิยมหลายๆ ตัว เช่น ML.NET, TorchSharp, ONNX Runtime เพราะลดการคัดลอกข้อมูลในตัวแปรลงได้
ไมโครซอฟท์ประกาศออก .NET Aspire รุ่นเสถียร (General Availability)
.NET Aspire เป็นชุดซอฟต์แวร์ (stack) สำหรับพัฒนาแอพสาย .NET แบบ cloud native คือรันในคอนเทนเนอร์ โครงการนี้เริ่มต้นแบบพรีวิวมาตั้งแต่ .NET 8 เมื่อปี 2023 และเข้าสถานะเสถียรในรอบสัปดาห์ที่ผ่านมา
ช่วงหลังเราเริ่มเห็นการใช้ฟีเจอร์ AI ช่วยเติมหรือช่วยเขียนข้อความในช่อง UI ต่างๆ กันมากขึ้น เช่น ในหน้าเขียนอีเมลของ Gmail หรือ Microsoft Editor
อย่างไรก็ตาม การใช้งานฟีเจอร์เหล่านี้มักต้องใช้บนแอพเฉพาะกิจที่มีฟีเจอร์เหล่านี้เป็นจุดขาย หากเป็นโปรแกรมเมอร์ทั่วไปที่ไม่ได้สังกัดบริษัทใหญ่ๆ อาจยังไม่มีช่องทางทำฟีเจอร์แบบนี้ได้ง่ายๆ นัก
ไมโครซอฟท์กำลังทดลองขยายฟีเจอร์เหล่านี้ไปยังโปรแกรมเมอร์ทั่วไป โดย .NET เพิ่มฟีเจอร์ชื่อ Smart Component เป็น UI สำเร็จรูป (ที่วงการนี้เขาเรียก component) ลากไปแปะในแอพของตัวเองแล้วใช้งานฟีเจอร์ AI ช่วยเติมข้อความได้ทันที
ชาว .NET ยุคแรกๆ คงคุ้นเคยกับ Windows Presentation Foundation (WPF) ชุดเขียน UI สำหรับแอพบนเดสก์ท็อปที่เริ่มใช้ใน .NET 3.0 (โค้ดเนมของ WPF คือ Avalon)
ไมโครซอฟท์ยังมีทางเลือกในการสร้าง UI บนเดสก์ท็อปอย่างอื่นคือ WinForms ที่เริ่มมาก่อน WPF และภายหลังก็ออก UWP ในยุค Windows 8 ที่พัฒนาต่อจนมาเป็น WinUI
WPF นั้นไม่ถูกอัพเกรดมานานแล้ว แม้แอพเก่าๆ ที่เขียน WPF ยังสามารถรันได้ต่อเนื่องจนถึงปัจจุบัน แต่ล่าสุดไมโครซอฟท์ประกาศแผนอัพเกรด WPF ครั้งใหญ่โดยเราจะเห็นผลลัพธ์บางส่วนใน .NET 9 ที่จะออกตัวจริงช่วงปลายปีนี้
ไมโครซอฟท์ออก .NET 9 Preview 1 ตามรอบการออกปีละรุ่น โดย .NET 9 ตัวจริงจะออกช่วงปลายปี เป็นรุ่นซัพพอร์ตระยะปกติ 18 เดือน ต่างจาก .NET 8 ที่เป็นรุ่นซัพพอร์ตระยะยาว LTS
ธีมหลักของ .NET 9 จะเน้นสองเรื่อง อย่างแรกคือการทำงานแบบ Cloud-Native ร่วมกับคอนเทนเนอร์และ Kubernetes ตามแนวทางที่เริ่มมาตั้งแต่ .NET 8 (.NET Aspire) ส่วนธีมที่สองคืองานด้าน AI โดยไมโครซอฟท์จะทำงานร่วมกับพาร์ทเนอร์ต่างๆ ทั้ง Open AI และโมเดลโอเพนซอร์สอื่นๆ เพื่อให้ทำงานกับแอพพลิเคชันสาย .NET ให้ดีขึ้น
Canonical ประกาศออกคอนเทนเนอร์ Ubuntu ขนาดเล็กพิเศษที่เรียกว่า "chiselled" เข้าสถานะ GA (general availability) อย่างเป็นทางการ
แนวคิดของ chiselled container คือการสกัดส่วนที่ไม่จำเป็นออกจากคอนเทนเนอร์ (ตามความหมายของคำว่า chisel ที่แปลว่าสิ่ว แต่ในที่นี้คือชื่อตัวจัดการแพ็กเกจของ Canonical) เหลือแค่ตัวแอพพลิเคชันและรันไทม์ที่เกี่ยวข้องเท่านั้น ไม่ต้องมีส่วนแพ็กเกจ ไลบรารี และซอฟต์แวร์อื่นของระบบปฏิบัติการติดมาด้วย ทำให้คอนเทนเนอร์มีขนาดเล็กลงมาก นำไปใช้ข้ามดิสโทรได้ และปลอดภัยกว่าเดิมเพราะลดพื้นที่การถูกโจมตีลง
พบกันทุกเดือนพฤศจิกายน ไมโครซอฟท์ออก .NET 8 รุ่นเสถียร หลังออกรุ่นพรีวิวมาตั้งแต่เดือนกุมภาพันธ์ 2023 โดย .NET 8 เป็นรุ่นซัพพอร์ตระยะยาว LTS ตามนโยบายไมโครซอฟท์ที่นับรุ่นเลขคู่เป็น LTS
หลังจากไมโครซอฟท์หลอมรวม .NET เสร็จสมบูรณ์ใน .NET 7 (ชิ้นส่วนสุดท้ายคือ .NET MAUI ที่เสร็จไม่ทัน .NET 6) งานในยุคถัดมาคือการเพิ่มฟีเจอร์ใหม่ๆ และรีดประสิทธิภาพของแพลตฟอร์ม
ไมโครซอฟท์ปล่อย C# Dev Kit ส่วนขยายสำหรับ VSCode ใช้สำหรับการพัฒนาโครงการ C# เต็มรูปแบบ ทำให้ฟีเจอร์รวมใกล้เคียง Visual Studio มากขึ้น อย่างไรก็ดีส่วนขยายนี้ไม่ได้ฟรีทั้งหมด แต่มีการจำกัดรูปแบบการใช้งานแบบเดียวกับ Visual Studio
C# Dev Kit มี Solution Explorer ในตัวสามารถเปิดไฟล์ .csproj
ได้ และเมื่อแก้ไขไฟล์ C# ก็มีฟีเจอร์ IntelliCode มาให้ และสามารถจัดการชุดทดสอบซอฟต์แวร์ได้ในตัว
Xamarin แพลตฟอร์มเขียนแอพด้วย C# ข้ามระบบปฏิบัติการ ประกาศอัพเดต Xamarin.Forms และ Xamarin.Essentials ให้รองรับ Android 13 เป็นค่าดีฟอลต์ ตามนโยบายของกูเกิลว่าแอพบน Play Store จะต้องตั้งเป้า (target) Android 13 ขึ้นไปในเดือนสิงหาคม 2023
Xamarin ยังประกาศว่าจะรองรับ Android 13 เป็นเวอร์ชันสุดท้ายแล้ว เพราะระยะซัพพอร์ตของ Xamarin จะสิ้นสุดลงในวันที่ 1 พฤษภาคม 2024 หลังจากนั้นจะดันให้นักพัฒนาย้ายไปใช้ .NET 7 และ .NET MAUI ที่เป็นอนาคตของ Xamarin แทน
หลายคนอาจคุ้นเคยกับชื่อ Progressive Web App (PWA) แนวทางการพัฒนาเว็บแอพที่ใช้นอกเบราว์เซอร์ได้ ล่าสุดไมโครซอฟท์เสนอแนวคิดชื่อคล้ายๆ กันคือ Reliable Web App (RWA)
จุดแตกต่างคือ RWA ไม่ได้เป็นเทคโนโลยีใหม่ แต่เป็น "แพทเทิร์น" การเขียนเว็บแอพที่ไมโครซอฟท์แนะนำว่าดี (best practice ซึ่งไม่จำเป็นต้องทำตาม) สำหรับการใช้ .NET สร้างเว็บแอพไปรันบนคลาวด์ Azure ให้เสถียร (SLO 99.9%) ดูแลง่าย ปลอดภัย ต้นทุนค่าคลาวด์ต่ำ
ไมโครซอฟท์เปิดตัว .NET 8 Preview 1 ตามรอบการออกรุ่นใหม่ทุกปีช่วงเดือนพฤศจิกายน โดย .NET 8 จะเป็นรุ่นซัพพอร์ตระยะยาว 3 ปี (LTS) เหมือนกับ .NET 6
ของใหม่ใน .NET 8 Preview 1 มีดังนี้
ไมโครซอฟท์ออกส่วนขยายของ Visual Studio ชื่อ .NET Upgrade Assistant ช่วยอัพเกรดโปรเจค .NET เวอร์ชันเก่าๆ ให้เป็น .NET เวอร์ชันล่าสุด (6 หรือ 7 หรือ 8 Preview) ภายในไม่กี่คลิกเท่านั้น
ทิศทางของ .NET ในช่วงหลังคือการออกรุ่นใหม่ปีละ 1 ครั้ง โดยเป็นรุ่นซัพพอร์ตระยะยาว 3 ปี (LTS) ออกปีเว้นปี ทำให้การอัพเกรดมาใช้ .NET รุ่นใหม่เป็นสิ่งจำเป็น ไมโครซอฟท์จึงกระตุ้นให้นักพัฒนา .NET ทยอยอัพเกรดโปรเจคเก่าๆ ยุค .NET Framework หรือ .NET Core ที่ไม่พัฒนาต่อแล้วทั้งคู่ ให้มาเป็น .NET ยุคใหม่ๆ แทน
.NET Core 3.1 ซึ่งเป็น .NET ยอดนิยมอีกรุ่นหนึ่ง หมดระยะซัพพอร์ตไปแล้วเมื่อวานนี้ 13 ธันวาคม 2022 โดยไมโครซอฟท์ออก .NET Core 3.1.32 รุ่นอุดช่องโหว่ที่พบล่าสุดมาให้เป็นรุ่นสุดท้าย และจะไม่ออกอัพเดตให้อีกแม้พบช่องโหว่ในอนาคต
ไมโครซอฟท์แนะนำให้ผู้ใช้ .NET Core 3.1 อัพเกรดไปใช้ .NET 6.0 ที่เป็นรุ่นซัพพอร์ตระยะยาว 3 ปี (LTS) หรือถ้าไม่ต้องการ LTS ก็สามารถอัพเกรดไปเป็น .NET 7.0 ที่เพิ่งออกเมื่อเดือนพฤศจิกายนที่ผ่านมาก็ได้เช่นกัน (ทั้งสองรุ่นจะหมดระยะซัพพอร์ตปี 2024)
นโยบายการออกรุ่น .NET ในปัจจุบันคือออกปีละรุ่น โดยเวอร์ชันเลขคี่มีระยะซัพพอร์ต 18 เดือน และเวอร์ชันเลขคู่มีระยะซัพพอร์ต 3 ปี
ไมโครซอฟท์เขียนบล็อกเล่าประสบการณ์ย้ายระบบจัดการธุรกรรมภายในของตัวเอง ที่เรียกรวมๆ ว่า Microsoft Commerce (มีเซอร์วิสประมาณ 700 ตัว) จากเดิมที่เขียนด้วย .NET Framework รันบนวินโดวส์ มาสู่ .NET Core ที่รันบนลินุกซ์
เหตุผลในการย้ายมาจากไมโครซอฟท์ต้องการย้ายระบบไปรันบน Azure ใช้สถาปัตยกรรม container/kubernetes (AKS) แต่พบว่ารันด้วยลินุกซ์จะเหมาะสมมากกว่า ดังนั้นไมโครซอฟท์จึงต้องย้ายจาก .NET Framework มาเป็น .NET Core ที่รันได้ข้ามแพลตฟอร์มก่อน
ไมโครซอฟท์ร่วมมือกับ Canonical นำ .NET 6 รวมเข้าไว้ใน Ubuntu 22.04 (Jammy) อย่างเป็นทางการ ทำให้ผู้ใช้ Ubuntu สามารถติดตั้ง .NET 6 ด้วยคำสั่ง sudo apt install dotnet6
ได้เลย ไม่ต้องเพิ่ม repository ใดๆ อีก
ไมโครซอฟท์ออก Visual Studio 2022 เวอร์ชัน 17.3 เป็นอัพเดตย่อยตัวที่สามของซีรีส์ มีของใหม่ที่สำคัญคือ .NET Multi-platform App UI (.NET MAUI) ชุดเครื่องมือสร้าง UI ข้ามแพลตฟอร์มตัวใหม่ เข้าสถานะเสถียรแล้ว
ไมโครซอฟท์ออก Visual Studio เวอร์ชัน ARM64 ตามที่สัญญาไว้ ตัวไฟล์ติดตั้งจะเป็นไฟล์เดียวกันกับ x86 ซึ่งจะตรวจสอบสถาปัตยกรรมที่ใช้งานให้อัตโนมัติก่อนดาวน์โหลดไฟล์จริงๆ ให้อีกที
Visual Studio ตัวแรกที่เป็นเนทีฟ ARM คือ Visual Studio 2022 17.3 Preview 2 โดยรุ่น ARM รองรับเฉพาะ Windows 11 เท่านั้น ตอนนี้สถานะยังเป็นพรีวิว และยังรองรับการพัฒนาเฉพาะ Desktop/C++, Desktop/.NET และ Web/.NET เท่านั้น ไมโครซอฟท์บอกว่าจะรับฟังความเห็นไปปรับปรุง ก่อนออกรุ่น General Availability (GA) ภายในปีนี้
ไมโครซอฟท์ประกาศในงาน Build 2022 เมื่อคืนนี้ ว่าจะทยอยออกเครื่องมือสำหรับนักพัฒนาบน Windows ให้รันบนสถาปัตยกรรม Arm แบบเนทีฟ ที่ระบุชื่อมีดังนี้
หลังจากพัฒนามายาวนานตั้งแต่ปี 2020 และเลื่อนกำหนดออกมาหนึ่งรอบ วันนี้ไมโครซอฟท์ประกาศ .NET MAUI ออกเวอร์ชันสมบูรณ์ (GA) พร้อมใช้งานจริง
.NET MAUI (ย่อมาจาก Multi-platform App UI อ่านว่า "เมาอิ" ให้ดูเป็นภาษาฮาวายเท่ๆ) เป็นชุดเครื่องมือเขียน UI ของแอพพลิเคชัน .NET ข้ามแพลตฟอร์ม สามารถทำงานได้ทั้งบนวินโดวส์ แมค Android iOS
การมาถึงของ MAUI จะช่วยให้ .NET เป็นชุดเครื่องมือพัฒนาซอฟต์แวร์ด้วยภาษา C# แบบข้ามแพลตฟอร์มอย่างเต็มที่ (ก่อนหน้านี้ .NET ยุคโอเพนซอร์สรองรับแมคและลินุกซ์ แต่ยังจำกัดเฉพาะคอมมานด์ไลน์ ไม่มี UI)
ผู้ที่เขียนเกมด้วยเอนจิน Unity คงทราบกันดีว่าต้องใช้ภาษา C# เนื่องจากรากเหง้าของ Unity เริ่มมาจาก .NET (จะให้เจาะจงคือ Mono ที่เป็น .NET เวอร์ชันโอเพนซอร์ส) อย่างไรก็ตาม แนวทางของ Unity คือการปรับแต่งคอมไพเลอร์ รันไทม์ และภาษา C# ในแบบของตัวเอง ที่แตกต่างจาก C#/.NET ของไมโครซอฟท์
ปัญหาของเรื่องนี้คือ ชุดเครื่องมือ แพ็กเกจ และไลบรารีต่างๆ ของโลก .NET จึงไม่สามารถทำงานร่วมกับ Unity ได้ดีเท่าที่ควร บวกกับภาษา C# เวอร์ชันใหม่ๆ ก็ต้องรอให้ Unity ตามซัพพอร์ต ซึ่งต้องใช้เวลานาน
ล่าสุด Unity ประกาศทิศทางว่าจะมุ่งหน้าเข้าสู่โลก .NET กระแสหลัก แทนการเลือกคัสตอมเทคโนโลยีเอง โดยประกาศชัดว่าอยากเลิกใช้รันไทม์ Mono .NET เปลี่ยนมาเป็น CoreCLR ของ .NET เวอร์ชันหลักในปัจจุบัน (.NET Core)
ไมโครซอฟท์ประกาศเตือน .NET 5.0 หมดระยะซัพพอร์ตวันที่ 8 พฤษภาคม 2022 ตามระยะการซัพพอร์ตนาน 18 เดือน (ไม่ใช่รุ่น LTS) โดยแนะนำให้ย้ายไปใช้รันไทม์เป็น .NET 6.0 ที่เป็นรุ่น LTS ซัพพอร์ตนาน 3 ปี
.NET 5.0 ถือเป็น .NET รุ่นแรกที่รวมเอาทั้ง .NET Core เวอร์ชันโอเพนซอร์ส และ .NET Framework เข้าด้วยกัน นโยบายการออกรุ่นของไมโครซอฟท์คือออก .NET ปีละรุ่นในช่วงปลายปี โดยเป็นเวอร์ชัน LTS สลับกับเวอร์ชันปกติไปเรื่อยๆ