.NET 10 Preview 6 จุดประกายการถอดถอนของนักพัฒนาเกี่ยวกับปัญหาเครื่องมือและทิศทางของระบบนิเวศ

ทีมชุมชน BigGo
.NET 10 Preview 6 จุดประกายการถอดถอนของนักพัฒนาเกี่ยวกับปัญหาเครื่องมือและทิศทางของระบบนิเวศ

Microsoft ปล่อย .NET 10 Preview 6 เมื่อวันที่ 15 กรกฎาคม 2024 โดยนำมาซึ่งการปรับปรุงที่น่าสนใจหลายประการ รวมถึงการสร้างโค้ด JIT ที่ดีขึ้นและการรันเครื่องมือแบบครั้งเดียว แม้ว่าการอัปเดตนี้จะแนะนำฟีเจอร์ที่มีประโยชน์ แต่การตอบสนองของชุมชนนักพัฒนาเผยให้เห็นความกังวลที่ยังคงอยู่เกี่ยวกับความน่าเชื่อถือของเครื่องมือและทิศทางเชิงกลยุทธ์ของแพลตฟอร์มที่อาจส่งผลต่อการตัดสินใจในการนำไปใช้

คุณสมบัติหลักของ .NET 10 Preview 6

  • การปรับปรุง JIT: ปรับปรุงการสร้างโค้ดสำหรับอาร์กิวเมนต์ struct ที่มีสมาชิกที่ถูกส่งเสริมในรีจิสเตอร์ที่ใช้ร่วมกัน
  • การรันเครื่องมือแบบครั้งเดียว: คำสั่ง dotnet tool exec สำหรับการรันเครื่องมือโดยไม่ต้องติดตั้ง
  • การรองรับเครื่องมือหลายแพลตฟอร์ม: เครื่องมือสามารถรวมไบนารีสำหรับ RuntimeIdentifiers (RIDs) หลายตัวได้แล้ว
  • การเผยแพร่ไฟล์ปฏิบัติการแบบ Native: แอปพลิเคชันแบบไฟล์รองรับการเผยแพร่เป็นไฟล์ปฏิบัติการแบบ native ผ่าน dotnet publish app.cs
  • การปรับปรุงความปลอดภัย JSON: ตัวเลือกใหม่ในการไม่อนุญาตให้มี JSON properties ที่ซ้ำกันระหว่างการ deserialization
  • การแสดงผล CLI Schema: ตัวเลือก cli-schema ใหม่ที่ให้การแสดงผลแบบ JSON ของโครงสร้างคำสั่ง CLI
ภาพรวมของการเปิดตัว NET 10 Preview 6 และคุณสมบัติสำคัญต่างๆ
ภาพรวมของการเปิดตัว NET 10 Preview 6 และคุณสมบัติสำคัญต่างๆ

การรันเครื่องมือแบบครั้งเดียวตอบสนองความต้องการด้าน Scripting ที่มีมานาน

การแนะนำ dotnet tool exec ช่วยให้นักพัฒนาสามารถรันเครื่องมือ .NET โดยไม่ต้องติดตั้งในเครื่องหรือแบบ global ฟีเจอร์นี้มีประโยชน์เป็นพิเศษสำหรับ CI/CD pipeline และสถานการณ์การใช้งานชั่วคราว สมาชิกชุมชนได้ต้อนรับการเพิ่มฟีเจอร์นี้ โดยสังเกตว่ามันทำให้ C# เข้าใกล้ความสามารถด้าน scripting ที่ F# ได้รับผ่าน dotnet fsi ฟีเจอร์นี้ช่วยให้นักพัฒนาสามารถรันไฟล์ C# เป็น script โดยไม่ต้องมีขั้นตอนการ build ทำให้ภาษานี้เหมาะสมกับงานอัตโนมัติที่รวดเร็วและยูทิลิตี้แบบใช้ครั้งเดียว

ปัญหาเครื่องมือที่ยังคงอยู่ทำให้ประสบการณ์การพัฒนาน่าหงุดหงิด

แม้จะมีฟีเจอร์ใหม่ แต่นักพัฒนายังคงรายงานปัญหาสำคัญเกี่ยวกับประสบการณ์การพัฒนา ฟังก์ชัน hot reload ใน dotnet watch ยังคงไม่น่าเชื่อถือ โดยการเปลี่ยนแปลง CSS บางครั้งไม่ถูกตรวจจับแม้ว่าจะใช้ flag --no-hot-reload ผู้ใช้ Visual Studio รายงานปัญหาที่ยังคงอยู่เกี่ยวกับ syntax highlighting และ IntelliSense สำหรับ Blazor component ซึ่งเป็นปัญหาที่ยังคงอยู่ตลอดหลายเวอร์ชัน ปัญหาเครื่องมือเหล่านี้สร้างความไม่แน่นอนระหว่างการพัฒนา ทำให้ยากต่อการแยกแยะระหว่างข้อผิดพลาดจากการเขียนโค้ดจริงกับการทำงานผิดปกติของเครื่องมือ

สิ่งที่ฉันต้องการคือให้ dotnet watch ทำงานในลักษณะที่คาดเดาได้ ใน .NET 9 แม้ว่าจะใช้ —no-hot-reload แต่บางครั้งการเปลี่ยนแปลง CSS ของ component ไม่ถูกตรวจจับใน Blazor component

เครื่องมือจัดรูปแบบโค้ดยังตามมาตรฐานอุตสาหกรรมไม่ทัน

ระบบนิเวศ .NET ยังขาดเครื่องมือจัดรูปแบบโค้ดที่มีความเห็นชัดเจนและได้รับการยอมรับอย่างกว้างขวาง เทียบได้กับ Prettier ในโลก JavaScript แม้ว่าเครื่องมืออย่าง CSharpier จะมีอยู่และได้รับความนิยมบ้าง แต่ทีมองค์กรหลายแห่งยังลังเลที่จะนำการจัดรูปแบบอัตโนมัติมาใช้ คำสั่ง dotnet format ที่มีอยู่แล้วเสนอตัวเลือกการกำหนดค่าที่กว้างขวาง แต่ต้องการการตั้งค่าที่ซับซ้อนเพื่อให้ได้การจัดรูปแบบที่สม่ำเสมอ การแยกส่วนนี้บังคับให้ทีมต้องพึ่งพาการจัดรูปแบบเฉพาะ IDE เป็นหลัก ซึ่งสร้างความท้าทายในสภาพแวดล้อมการพัฒนาแบบผสมที่สมาชิกทีมใช้ editor ที่แตกต่างกัน

เครื่องมือจัดรูปแบบโค้ดที่ชุมชนกล่าวถึง

เครื่องมือ ประเภท ระดับการใช้งาน คุณสมบัติหลัก
CSharpier บุคคลที่สาม กำลังเติบโต (2k ดาว GitHub) การจัดรูปแบบแบบมีความเห็น, กำหนดได้แน่นอน
dotnet format Microsoft อย่างเป็นทางการ ในตัว ปรับแต่งได้สูง, รวมเข้ากับ analyzers
StyleCop เก่า ลดลง บังคับใช้เลย์เอาต์ไฟล์และการตั้งชื่อ
Roslynator Analyzer ใช้งานอยู่ การวิเคราะห์โค้ดและการแก้ไข

ความกังวลเรื่องการนำแพลตฟอร์มไปใช้ท่ามกลางการเลือกใช้เทคโนโลยีของ Microsoft เอง

การอภิปรายในชุมชนเผยให้เห็นความกังวลที่เพิ่มขึ้นเกี่ยวกับการนำ .NET ไปใช้ในอนาคต โดยเฉพาะอย่างยิ่งเมื่อพิจารณาจากการเลือกใช้เทคโนโลยีของ Microsoft เองในบริการ Azure โปรเจ็กต์ CNCF หลายโปรเจ็กต์ที่ Microsoft มีส่วนร่วมถูกเขียนด้วย Go หรือ Rust มากกว่า .NET ซึ่งทำให้เกิดคำถามเกี่ยวกับการสนับสนุนภายในของแพลตฟอร์ม การตัดสินใจที่จะเขียน TypeScript tooling ใหม่ด้วย Go แทนที่จะสร้างเวอร์ชัน .NET ทำให้นักพัฒนาบางคนผิดหวัง เพราะเห็นว่าเป็นโอกาสที่พลาดไปในการแสดงความสามารถของแพลตฟอร์ม

การถกเถียงเรื่องวงจรชีวิตของ Framework ยังคงดำเนินต่อไป

ชุมชนยังคงแบ่งออกเป็นสองฝ่ายเกี่ยวกับรอบการสนับสนุนสามปีของ Microsoft สำหรับเวอร์ชัน .NET ในขณะที่นักพัฒนาบางคนชื่นชมการอัปเดตเป็นประจำและพบว่าการอัปเกรดค่อนข้างง่าย นักพัฒนาคนอื่นๆ กลับชอบความเสถียรของ .NET Framework 4.8 ที่มีไทม์ไลน์การสนับสนุนที่ยาวนานกว่า ความแตกต่างของขนาด deployment ยังคงเป็นความกังวลในทางปฏิบัติ โดยแอปพลิเคชัน .NET Framework มักจะส่งผลให้ได้ไฟล์ executable ที่เล็กกว่าเนื่องจาก framework ถูกติดตั้งไว้ล่วงหน้าในระบบ Windows ในขณะที่แอปพลิเคชัน .NET Core สามารถมีขนาดถึง 70-80MB เมื่อเป็นแบบ self-contained

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

อ้างอิง: .NET 10 Preview 6 brings JIT improvements, one-shot tool execution