1 คะแนน โดย GN⁺ 2023-11-15 | 5 ความคิดเห็น | แชร์ทาง WhatsApp
  • .NET 8 มาพร้อมการปรับปรุงแพลตฟอร์มและเครื่องมือที่ช่วยเพิ่มประสิทธิภาพ ความเสถียร และความปลอดภัย รวมถึงยกระดับผลิตภาพของนักพัฒนาและความเร็วในการสร้างนวัตกรรม
  • นิยามใหม่ของการสร้างแอปพลิเคชัน cloud-native และบริการที่รองรับทราฟฟิกขนาดใหญ่ พร้อมทำให้การพัฒนาแอปง่ายขึ้นไม่ว่าจะนำไปติดตั้งบน Linux หรือ Windows หรือใช้งานในคอนเทนเนอร์ก็ตาม
  • .NET 8 มีชุดไลบรารีที่ผ่านการพิสูจน์แล้วจากบริการขนาดใหญ่ของ Microsoft ซึ่งช่วยรับมือกับความท้าทายพื้นฐานอย่าง observability, resilience, scalability และความง่ายในการจัดการ

ประสิทธิภาพที่โดดเด่นของ .NET 8

  • .NET 8 มีการปรับปรุงประสิทธิภาพหลายพันรายการทั่วทั้งสแตก และด้วย Dynamic PGO ซึ่งเป็น code generator แบบใหม่ที่เปิดใช้งานเป็นค่าเริ่มต้น จึงช่วยเพิ่มประสิทธิภาพของแอปได้สูงสุดถึง 20%
  • รองรับชุดคำสั่ง AVX-512 ทำให้สามารถประมวลผลแบบขนานกับข้อมูลเวกเตอร์ 512 บิตได้ จึงจัดการข้อมูลได้มากขึ้นและเร็วขึ้น
  • primitive types ได้รองรับอินเทอร์เฟซสำหรับการจัดรูปแบบและการแยกวิเคราะห์แบบใหม่ ทำให้สามารถ format และ parse เป็น UTF-8 ได้โดยตรงโดยไม่มี conversion overhead

.NET Aspire

  • .NET Aspire คือสแตกสำหรับสร้างแอปพลิเคชัน cloud-native ที่มี resilience, observability และ configurability ด้วย .NET โดยมี telemetry, resilience, configuration และ health checks มาให้ในตัว
  • ช่วยให้การค้นหา จัดหา และตั้งค่าดีเพนเดนซีที่จำเป็นสำหรับแอปพลิเคชัน cloud-native เป็นเรื่องง่าย และวันนี้ได้เปิดให้ใช้งานพรีวิวแรกของ .NET Aspire แล้ว

การปรับปรุงคอนเทนเนอร์ใน .NET 8

  • สามารถแพ็กเกจคอนเทนเนอร์ด้วย .NET ได้ง่ายและปลอดภัยยิ่งขึ้น โดยอิมเมจ .NET ทุกตัวมีผู้ใช้แบบ non-root รวมมาให้ ทำให้สร้างคอนเทนเนอร์ที่ปลอดภัยยิ่งขึ้นได้ด้วยการตั้งค่าเพียงบรรทัดเดียว
  • เครื่องมือ .NET SDK สามารถเผยแพร่อิมเมจคอนเทนเนอร์ได้โดยไม่ต้องมี Dockerfile และตั้งค่าเป็น non-root โดยค่าเริ่มต้น
  • ด้วย .NET base image ที่มีขนาดเล็กลง จึงสามารถปรับใช้แอปแบบ containerized ได้เร็วขึ้น และยังเลือกเสริมความปลอดภัยได้ผ่านอิมเมจแบบ Chiseled Ubuntu รุ่นใหม่

Native AoT

  • สามารถคอมไพล์แอป .NET เป็น native code เพื่อลดการใช้หน่วยความจำและเริ่มทำงานได้ทันที
  • ไม่จำเป็นต้องให้ JIT compiler คอมไพล์โค้ดระหว่างรันไทม์ และไม่ต้องจัดส่งทั้ง JIT compiler และ IL code ไปพร้อมกัน
  • แอปแบบ AOT จะจัดส่งเฉพาะโค้ดที่จำเป็นต่อแอป จึงสามารถทำงานได้แม้ในสภาพแวดล้อมที่มีข้อจำกัด

ปัญญาประดิษฐ์

  • .NET 8 มอบความสามารถด้าน AI ระดับ first-class ให้กับ .NET SDK เพื่อให้ใช้งานฟังก์ชัน AI ได้อย่างง่ายดาย และรองรับการผสานรวมกับเครื่องมือต่าง ๆ ได้อย่างราบรื่น
  • มีการปรับปรุงหลายด้านในไลบรารี System.Numerics เพื่อเพิ่มความเข้ากันได้กับเวิร์กโหลด Generative AI และจากการเติบโตของแอปที่เปิดใช้ AI จึงมีเครื่องมือและ SDK ใหม่ ๆ เกิดขึ้นตามมา
  • ทำงานร่วมกับพาร์ตเนอร์ทั้งภายในและภายนอกหลายราย เพื่อช่วยให้นักพัฒนา .NET เข้าถึงโมเดล AI บริการ และแพลตฟอร์มที่หลากหลายได้ง่ายขึ้น

Blazor

  • Blazor ใน .NET 8 สามารถใช้ทั้งฝั่งเซิร์ฟเวอร์และไคลเอนต์ร่วมกันเพื่อตอบโจทย์ทุกความต้องการด้านเว็บ UI
  • ด้วยการปรับปรุงใหม่หลายด้านที่ช่วยเพิ่มประสิทธิภาพเวลาโหลดหน้า ความสามารถในการขยายระบบ และประสบการณ์ผู้ใช้ นักพัฒนาจึงสามารถใช้ Blazor Server และ Blazor WebAssembly ภายในแอปเดียวกันได้

.NET MAUI

  • .NET MAUI มอบระบบโปรเจกต์เดียวและโค้ดเบสเดียวสำหรับสร้างแอปพลิเคชันบน WinUI, Mac Catalyst, iOS และ Android
  • มีส่วนขยายใหม่สำหรับ Visual Studio Code ที่มอบเครื่องมือสำหรับพัฒนาแอป .NET บนมือถือและเดสก์ท็อป พร้อมรองรับ Xcode 15 และ Android API 34 เพื่อให้พัฒนาเจาะจง iOS และ Android เวอร์ชันล่าสุดได้

ฟีเจอร์ของ C# 12

  • C# 12 ช่วยให้ประสบการณ์การเขียนโค้ดมีประสิทธิผลและสนุกยิ่งขึ้น โดยสามารถสร้าง primary constructors สำหรับคลาสและสตรักต์ได้ด้วยไวยากรณ์ที่เรียบง่ายและสวยงาม
  • สามารถสร้างอาร์เรย์ สแปน และคอลเลกชันประเภทอื่น ๆ ได้อย่างง่ายดายด้วยไวยากรณ์ที่กระชับและสื่อความหมาย

ความเห็นของ GN⁺

สิ่งสำคัญที่สุดในบทความนี้คือฟีเจอร์ใหม่และการปรับปรุงหลากหลายด้านที่ .NET 8 มอบให้แก่นักพัฒนา ไม่ว่าจะเป็นประสิทธิภาพที่ดีขึ้น การพัฒนาแอปพลิเคชัน cloud-native ที่ง่ายขึ้น การเสริมความแข็งแกร่งด้าน AI ตลอดจนความก้าวหน้าของ Blazor และ .NET MAUI ซึ่งทั้งหมดนี้จะช่วยให้นักพัฒนาสร้างซอฟต์แวร์ที่มีประสิทธิภาพและนวัตกรรมมากขึ้น ฟีเจอร์เหล่านี้เป็นการอัปเดตที่น่าสนใจและน่าดึงดูดสำหรับนักพัฒนาที่ทำงานอยู่แนวหน้าของเทคโนโลยี และเปิดโอกาสใหม่ ๆ ให้พวกเขานำไปใช้กับโปรเจกต์ทั้งปัจจุบันและอนาคต

5 ความคิดเห็น

 
cosine20 2023-11-21

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

 
leetleet 2023-11-17

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

 
kuroneko 2023-11-17

โอ้... ดูแล้ว Native AoT รองรับแพลตฟอร์มเพิ่มขึ้นเยอะมากเมื่อเทียบกับ .NET 7
ถึงขั้นคอมไพล์เป็นเนทีฟโค้ดได้เลย แบบนี้มันไม่ใช่ .NET ที่ผมเคยรู้จักอีกต่อไปแล้วสินะ +_+

ว่าแต่เวอร์ชัน 8 แล้วเหรอ...? เหมือนเพิ่งเปลี่ยนชื่อมาเป็น .NET ได้ไม่นานเอง...

 
cosine20 2023-11-21

เวอร์ชันของ .NET ออกรุ่นใหม่ค่อนข้างเร็วเลยนะครับ/ค่ะ ข้อเสียคือระยะเวลาซัพพอร์ตเลยค่อนข้างสั้นตามไปด้วย T_T LTS ก็มีอายุประมาณแค่ 3 ปีนิดๆ เอง

 
GN⁺ 2023-11-15
ความเห็นจาก Hacker News
  • ประสบการณ์ที่น่าประทับใจกับ .NET

    ผู้ใช้คนหนึ่งประทับใจกับ .NET มากระหว่างทำงานกับฟอร์แมตวิดีโอแบบ proprietary เก่า ซึ่งมีทั้ง GPS วิดีโอ เสียง และข้อมูลอื่น ๆ อยู่ภายใน อีกทั้งไฟล์ยังมีขนาดใหญ่มากจนทำความเข้าใจได้ยาก ผู้ใช้จึงไปหาแอปพลิเคชันเพลเยอร์เก่าแบบ proprietary มา decompile ด้วย C# แล้วตัดส่วนเพลเยอร์ออก เหลือไว้เฉพาะโค้ดที่สามารถดึง MP4 และส่วนอื่น ๆ ออกมาได้ จากนั้นจึง build โค้ดนี้เป็น console application บน .NET 4 และอัปเกรดจนสามารถคอมไพล์และรันบน Linux ได้สำเร็จ แม้งาน parsing โค้ดหลายพันบรรทัดจะซับซ้อนมาก แต่กระบวนการทั้งหมดกลับง่ายมาก และสามารถทำให้โค้ดที่มีอายุกว่า 10 ปีมารันบน Linux ได้ภายในวันเดียว

  • พัฒนาการของ .NET และการเปลี่ยนแปลงภายในองค์กร

    แม้ .NET จะเคยถูกประเมินค่าต่ำจากภาพลักษณ์ในช่วงแรก แต่ช่วงหลังได้เปลี่ยนไปเป็นสภาพแวดล้อมที่ทำงานด้วยแล้วน่าพอใจมาก ด้วยการปรับปรุงด้านเครื่องมือและการใช้งาน องค์กรหนึ่งเคยแทนที่ Go ด้วย .NET Core 3.1 จากนั้นย้ายจาก .NET Core 3.1 ไปใช้ Go และล่าสุดก็กลับมาใช้ .NET 6 อีกครั้ง

  • ฟีเจอร์ DynamicPGO ใน .NET 8

    .NET 8 เปิดใช้งาน DynamicPGO มาเป็นค่าเริ่มต้น ซึ่งได้รับการปรับปรุงต่อจากเวอร์ชัน 6 และ 7 ฟีเจอร์นี้ช่วยได้มากกับ codebase ที่มี abstraction จำนวนมาก ผ่านการทำ guarded devirtualization ของ interface/virtual call, delegate inlining และ branch reordering

  • คำถามเกี่ยวกับความสัมพันธ์ระหว่าง .NET กับ Mono

    ผู้ใช้คนหนึ่งขอคำอธิบายเกี่ยวกับความสัมพันธ์ระหว่าง .NET กับ Mono โดยสงสัยว่า Mono ล้าสมัยไปอย่างสมบูรณ์แล้วหรือถูกรวมเข้าไปใน .NET แล้ว รวมถึงยังแสดงความสับสนเกี่ยวกับชื่อเรียกของ .NET และเรื่องที่ assembly เป็น native code หรือ bytecode กันแน่

  • ปัญหาเรื่อง UI ข้ามแพลตฟอร์มของ .NET

    มีการแสดงความเห็นว่า UI ข้ามแพลตฟอร์มของ .NET ยังชวนสับสน และน่าเสียดายเป็นพิเศษที่การทำ MVC ยังไม่ชัดเจน พร้อมทั้งอยากให้มี desktop GUI ที่เรียบง่ายและเข้าใจได้ตรงไปตรงมา

  • ความผิดหวังต่อ市場การจ้างงานสำหรับนักพัฒนา .NET

    นักพัฒนา .NET สายฟูลสแต็กคนหนึ่งแสดงความผิดหวังว่าตำแหน่งงานที่เกี่ยวข้องกับ .NET มีไม่มาก และถึงมี ก็มักต้องการคนระดับ "rockstar"

  • พัฒนาการและความคาดหวังต่อ Blazor

    Blazor ดูน่าสนใจมากขึ้นจากการรองรับ server-side streaming และ rendering รวมถึงการโต้ตอบในระดับคอมโพเนนต์ และคาดว่าจะยิ่งดีขึ้นอีกเมื่อ .NET ผสานรวมกับฟีเจอร์ WasmGC

  • ขอความเห็นเกี่ยวกับข้อดีของ ecosystem .NET

    มีผู้ใช้อยากฟังเหตุผลจากแฟน ๆ .NET ว่าทำไมจึงควรเลือกใช้ .NET แทน ecosystem อื่น

  • ลิงก์วิดีโอ .NET Conf - Day 1

    มีการแชร์ลิงก์วิดีโอของ .NET Conf วันแรก

  • ความเห็นต่อฟีเจอร์ใหม่ของ C# 12 และการประกาศ "Aspire"

    มีการประเมินว่าฟีเจอร์ปรับปรุงคุณภาพใหม่ของ C# 12 (collection literals, primary constructors) และการประกาศ "Aspire" นั้นน่าสนใจ แต่ยังตัดสินใจไม่ได้ว่านี่เป็นการเปลี่ยนแปลงที่ดี หรือเป็น "magic" ที่มากเกินไป