1 คะแนน โดย GN⁺ 2025-11-13 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • ผ่าน แบ็กเอนด์ที่ใช้ Avalonia ทำให้แอปพลิเคชัน .NET MAUI สามารถรันบนเดสก์ท็อป Linux และเบราว์เซอร์ (WebAssembly) ได้
  • คง โค้ดเบส MAUI เดิม ไว้ พร้อม สลับเลเยอร์การเรนเดอร์เป็น Avalonia เพื่อให้ได้ทั้งประสิทธิภาพที่ดีขึ้นและการขยายแพลตฟอร์มไปพร้อมกัน
  • ทำงานด้วยเอนจินเรนเดอร์เดียวกันบน เดสก์ท็อป Linux เช่น Ubuntu, Debian, Fedora, รวมถึง Embedded Linux และ WebAssembly
  • บน Windows และ macOS ก็พบว่า ประสิทธิภาพเพิ่มขึ้นมากกว่า 2 เท่า พร้อมมอบ UI ที่สม่ำเสมอโดยไม่มีความต่างตามแพลตฟอร์ม
  • เป็นโครงการที่มอบ การรองรับ Linux·เว็บ และรอบการพัฒนาที่คาดการณ์ได้ ให้กับนักพัฒนา MAUI พร้อมเป็นฐานสำหรับการขยายระบบนิเวศของ Avalonia

ภาพรวมของ Avalonia MAUI Backend

  • Avalonia MAUI Backend เป็นสถาปัตยกรรมที่ คงโค้ดเบส MAUI ไว้ แต่แทนที่ด้วยเลเยอร์เรนเดอร์ของ Avalonia
    • ทำให้แอป MAUI เดิมขยายไปยัง แพลตฟอร์มเพิ่มเติมอย่าง Linux และเบราว์เซอร์ ได้
    • เพิ่มประสิทธิภาพบนเดสก์ท็อปและสร้างความสม่ำเสมอข้ามแพลตฟอร์ม
  • เดโมจริงเป็น แอป MAUI บน WebAssembly ที่รันในเบราว์เซอร์ได้โดยไม่ต้องใช้ปลั๊กอิน
    • แม้ยังเป็นบิลด์ระยะแรก แต่ก็พิสูจน์แล้วว่า MAUI ทำงานได้บนเดสก์ท็อประบบปฏิบัติการหลักและเบราว์เซอร์

การรองรับแพลตฟอร์มหลัก

  • รองรับเดสก์ท็อป Linux
    • รันเป็น แอปเดสก์ท็อประดับเฟิร์สคลาส บน Ubuntu, Debian, Fedora เป็นต้น
    • ใช้เรนเดอเรอร์ของ Avalonia เพื่อมอบคุณภาพในระดับแอปเดสก์ท็อปสมรรถนะสูง
    โฆษณา
  • รองรับ Embedded Linux
    • รันด้วยแบ็กเอนด์เดียวกับ Avalonia บนอุปกรณ์ ฝังตัว เช่น แผง Raspberry Pi และ HMI อุตสาหกรรม
  • รองรับ WebAssembly
    • ทำให้แอป MAUI รันในเบราว์เซอร์ได้ โดยไม่ต้องพึ่งพา native dependency
    • มีแผนพัฒนาให้พร้อมสำหรับการเผยแพร่ผ่านเบราว์เซอร์ในอนาคต
  • รองรับ Windows และ macOS
    • ผสานเข้ากับ สถาปัตยกรรมการเรนเดอร์เดสก์ท็อปที่สุกงอมของ Avalonia
    • บน macOS พบว่า ประสิทธิภาพดีขึ้นมากกว่า 2 เท่าเมื่อเทียบกับ Mac Catalyst
โฆษณา

ประสิทธิภาพการพัฒนาและความสม่ำเสมอ

  • ทีม Avalonia พัฒนาโดยมุ่งเป้าไปที่ แพลตฟอร์มเดียว (Avalonia) เท่านั้น
    • ไม่จำเป็นต้องแยกอิมพลีเมนเทชันสำหรับ iOS, Android, Windows, macOS, Linux และ WebAssembly
    • ลดบั๊กเฉพาะแพลตฟอร์มและความต่างด้านการเรนเดอร์
  • เมื่อใช้เอนจินเรนเดอร์เดียวกัน จึงได้ การแสดงผล UI แบบเดียวกันบนทุกแพลตฟอร์ม
    • เมื่อเพิ่มฟีเจอร์หรือแก้บั๊ก ก็จะ สะท้อนสู่ทุกแพลตฟอร์มทันที
    • ช่วยย่นรอบการพัฒนาและทำให้คุณภาพคาดการณ์ได้

เหตุผลที่ Avalonia สร้างแบ็กเอนด์สำหรับ MAUI

  • ให้ความสำคัญกับ การสนับสนุนนักพัฒนาไคลเอนต์ .NET เป็นอันดับแรก เพื่อให้ผู้ใช้ MAUI ได้รับ การรองรับ Linux·เบราว์เซอร์ และการปรับปรุงประสิทธิภาพ
  • ผ่านโครงการนี้ Avalonia จะได้เรียนรู้เรื่อง ความเป็นมิตรต่อมือถือ ปัญหา API และจุดที่ควรปรับปรุงด้านทูลลิง
  • คาดหวัง ผลเชิงระบบนิเวศ จากการที่นักพัฒนา MAUI ได้สัมผัสเรนเดอเรอร์และความสามารถของ Avalonia
  • เป้าหมายไม่ใช่การแทนที่ MAUI แต่คือ มอบทางเลือกที่กว้างขึ้นให้กับนักพัฒนา MAUI เดิม

ความหมายต่อผู้พัฒนา MAUI

  • มอบ การรองรับ Linux และ โมเดล UI แบบอิงการวาดที่สม่ำเสมอ ซึ่งนักพัฒนา MAUI เรียกร้องมาอย่างต่อเนื่อง
  • Avalonia มอบความสามารถดังต่อไปนี้
    • การเรนเดอร์แบบเร่งด้วยฮาร์ดแวร์
    • ระบบเลย์เอาต์และสไตล์ที่สม่ำเสมอ
    • แอนิเมชันรีเฟรชเรตสูง
    • การเรนเดอร์แบบกำหนดเองและเอฟเฟกต์ภาพ
    • การครอบคลุมแพลตฟอร์มอย่างกว้างขวาง
    • แพลตฟอร์มที่ได้รับการลงทุนและการสนับสนุนอย่างต่อเนื่อง
    โฆษณา
  • มีการใช้งานแล้วในสภาพแวดล้อมเชิงพาณิชย์โดยบริษัทอย่าง Unity, JetBrains และ Schneider Electric
  • คงโค้ด MAUI เดิมไว้ พร้อมบรรลุ การรองรับ Linux·เว็บ·ประสิทธิภาพเดสก์ท็อปที่ดีขึ้น ไปพร้อมกัน

ประสิทธิภาพและการเรนเดอร์ยุคถัดไป

  • ใช้ สแตก UI แบบวาดที่เป็นมิตรต่อ GPU เพื่อให้ได้ประสิทธิภาพสูงกว่า native toolkit
  • กำลังร่วมมือกับทีม Google Flutter เพื่อนำ Impeller GPU renderer เข้าสู่ .NET
    • เมื่อเทคโนโลยีนี้ถูกนำมาใช้ แบ็กเอนด์ MAUI ก็จะได้รับต่อยอดทั้ง ความเร็วในการเรนเดอร์ที่ดีขึ้น การประหยัดแบตเตอรี่ และแอนิเมชันที่ลื่นไหล

แผนในอนาคต

  • จะเดินหน้าปรับปรุงคุณภาพแบ็กเอนด์อย่างต่อเนื่องผ่านความร่วมมือกับวิศวกร MAUI
  • เมื่อการรองรับ Linux และเบราว์เซอร์เข้าสู่ระดับที่สุกงอม, MAUI ก็จะสมบูรณ์ในฐานะ เฟรมเวิร์ก UI แบบหลายแพลตฟอร์มอย่างแท้จริง
  • หลังจากเสถียรแล้ว มีแผน เปิดซอร์สภายใต้สัญญาอนุญาต MIT
  • จะมีการแบ่งปันความคืบหน้าการพัฒนา เบนช์มาร์ก และพรีวิวอย่างต่อเนื่อง

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

 
GN⁺ 2025-11-13
ความเห็นจาก Hacker News
  • น่าสนใจมากที่นำความสามารถแบบนี้มาสู่เว็บ
    แต่พอลองเดโมแล้ว ไม่ให้ความรู้สึกว่าเป็นเว็บเลย
    ค้นหาด้วย Ctrl+F ก็ไม่ได้, เลือกข้อความหรือคัดลอกที่อยู่ลิงก์ก็ทำไม่ได้
    บนมือถือก็กดรูปค้างเพื่อแชร์ไม่ได้ และ screen reader ก็ไม่ทำงาน
    จุดพวกนี้สะสมกันจนทำให้รู้สึกว่า “นี่ไม่ใช่เว็บจริง ๆ”
    มันให้ความรู้สึกเหมือน ริชคอนเทนต์ที่เป็นเกาะโดดเดี่ยวจากเบราว์เซอร์ แบบ Java applet ช่วงปลายยุค 90 หรือ Flash/Silverlight ช่วงต้นยุค 2000

    • นี่ไม่ใช่ปัญหาเล็กน้อยเลย
      ถ้าขาดความสามารถพวกนี้ไป ตามนิยามก็เรียกว่าเป็น ‘เว็บจริง’ ไม่ได้
      สุดท้ายมันนำไปสู่คำถามเชิงปรัชญาว่า “เว็บคืออะไร”
      เป็นแค่ช่องทางส่งผ่านสื่อ หรือเป็นบางสิ่งที่ใหญ่กว่านั้น
      ทุกวันนี้มีคนจำนวนมากเหนื่อยกับเว็บที่ถูก ทำให้กลายเป็นแอป (app-lification) และโหยหาเว็บแบบเปิดในอดีต
    • ถ้าไม่ใช้ความสามารถมาตรฐานของเว็บ มันจะกลายเป็นฝันร้ายด้าน accessibility
      ลองใช้ screen reader กับเดโมแล้ว ใช้งานไม่ได้เลย
    • เดิมที MAUI ไม่ได้ทำมาสำหรับเว็บ
      นี่ก็ไม่ใช่ทิศทางที่ Microsoft ตั้งใจไว้แต่แรก
      แค่เพราะ Avalonia รองรับ WASM พอเอา MAUI ไปวางบนมันก็เลยรันได้
      แต่นั่นก็เหมือนกับการ เรนเดอร์ desktop GUI toolkit ด้วย WASM มากกว่า
      มันเท่ดี แต่ให้ความรู้สึกเหมือน Silverlight เวอร์ชันยุคใหม่มากกว่าเว็บแอป
      ถึงอย่างนั้น การที่สามารถเจาะกลุ่ม Linux desktop ได้ก็เป็นข้อดีใหญ่
      หลายคนน่าจะชอบแนวทางแบบ Avalonia ที่ เรนเดอร์หน้าตาให้สม่ำเสมอ มากกว่าการใช้ native control ของแต่ละแพลตฟอร์มแบบที่ MAUI ทำ
    • ในฐานะนักพัฒนา .NET ที่มีประสบการณ์ 20 ปี ผมไม่เข้าใจว่าทำไมถึงยังพยายามทำอะไรแบบนี้ในตอนนี้
      แค่ CSS/JS/HTML ของเบราว์เซอร์ยุคใหม่ก็ทำได้เกือบทั้งหมดแล้ว
      ผมชอบ XAML แต่ JSX ก็เป็นแนวคิดคล้ายกัน และสุดท้ายก็คอมไพล์เป็น HTML จริง
      ตอน Silverlight ผมก็คิดเหมือนกัน — ไม่เข้าใจว่าทำไมถึงพยายามสร้าง Flash ขึ้นมาใหม่อยู่เรื่อย ๆ
      Unity Web build ยังเป็น “C# Flash” ที่ดีกว่าเสียอีก
    • พอเห็นว่า Ctrl+F กับการเลือกข้อความใช้ไม่ได้ ความสนใจก็หายไปทันที
      ถ้าความสามารถพื้นฐานแบบนี้ยังไม่มี สำหรับผมมันก็ ใช้ไม่ได้ตั้งแต่ต้น (non-starter)
  • MAUI ที่ไม่รองรับ Linux desktop ไม่เคยอยู่ในข่ายให้พิจารณาตั้งแต่แรก
    การเพิ่มครั้งนี้ทำให้ดีขึ้นบ้าง แต่ผมก็ยังคิดว่าใช้ Avalonia ตรง ๆ ดีกว่า
    ถึงอย่างนั้นก็ดีใจที่มีตัวเลือกแบบนี้เพิ่มขึ้นสำหรับโปรเจ็กต์เดิม

  • ในที่สุดเราก็สามารถสร้างแอป “UX สไตล์มือถือ” ที่ช้าและมีแอนิเมชันประหลาดบน Linux ได้ โดยไม่ต้องใช้ Kotlin Multiplatform หรือ Electron
    แต่ก็ผิดหวังที่ชุดวิดเจ็ตมีแค่ประมาณปุ่มกับเช็กบ็อกซ์
    สงสัยว่าทำไมเดโมของ UI toolkit สมัยนี้ถึง สู้เดโมยุค Delphi 1 ไม่ได้

    • จริง ๆ ใช้ Avalonia แบบ native ไปเลยก็ได้
      มันรองรับ Windows/Mac/Linux/WASM อยู่แล้ว
      งานนี้น่าจะทำมาเพื่อคนที่อยากขยายแอป MAUI เดิมไปยัง Linux/WASM มากกว่า
    • Avalonia ยังไม่มี Wayland backend แต่กำลังพัฒนาเป็นลำดับความสำคัญอยู่
      ดูความคืบหน้าได้ที่ บล็อก Avalonia
  • หนึ่งในเหตุผลที่คนใน ecosystem ของ .NET ไม่ค่อยอยากใช้ MAUI คือ Microsoft เองก็ไม่ใช้มัน
    แม้แต่ Teams ก็ยังสร้างบน Electron
    เลยเกิดคำถามว่า “ถ้า MS ยังไม่ใช้ แล้วทำไมเราต้องใช้”

    • นั่นเป็นเหตุผลทางประวัติศาสตร์
      ฝั่ง Windows ดูแล WinUI/Win32, ฝั่ง Office ใช้ React, และฝั่งนักพัฒนาดูแล WPF กับ MAUI
      แต่ละฝ่ายเดินกันคนละทางจนเกิดผลคือ UI toolkit กระจัดกระจาย
      สุดท้ายทุก toolkit ก็ได้รับการสนับสนุนแบบครึ่ง ๆ กลาง ๆ
    • ทุกวันนี้แอปเดสก์ท็อปของ MS หลายตัวใช้ WebView2 โดยตรงแทน Electron
      Teams ก็เป็นแบบนั้นหลังย้ายจาก Angular ไป React
      ถึงอย่างนั้นก็จริงที่พวกเขาไม่ได้ใช้ MAUI
      บรรยากาศโดยรวมคือชอบเทคโนโลยีที่พิสูจน์ตัวเองแล้วอย่าง Avalonia หรือ WinForms มากกว่า
      ยังไม่ชัดเจนว่า MS จะดันอะไรในระยะยาว
      มี Blazor ด้วย แต่ก็ดูใกล้กับงานทำแอปภายในมากกว่าจะเป็นตัวแทน React
      อีกอย่างก็ไม่แน่ใจเหมือนกันว่า Google ใช้ Flutter กับแอปของตัวเองมากแค่ไหน
    • ที่ Teams ใช้ Electron ก็แค่เพราะ มันออกมาก่อน MAUI
      Teams เปิดตัวในปี 2017 ส่วน MAUI เปิดตัวในปี 2022
      ตอนที่ย้ายไป React ก็เกิดขึ้นก่อน MAUI เช่นกัน
      แต่การที่ MS ไม่ได้ dogfooding MAUI มากพอก็น่ากังวล
      ช่วงหลังมีข่าวลดคนในทีมที่เกี่ยวข้องกับ MAUI ด้วย ทำให้ดูเหมือนความเชื่อมั่นภายในไม่แข็งแรง
      ต้องคำนึงด้วยว่า Flutter ออกตัวก่อน 5 ปี
      ถึงอย่างนั้นก็ยังลบความรู้สึกไม่ได้ว่า MS ไม่ได้ทุ่มกับ MAUI จริงจัง
    • ถ้าเป็น .NET frontend ผมจะไม่ทำเด็ดขาด
      สุดท้ายก็ลงเอยด้วยการ ยุติการสนับสนุน ทุกครั้ง
      ใช้เทคโนโลยีเว็บมาตรฐานสบายใจกว่าเยอะ
    • ทุกวันนี้จะดูว่า MS ใช้อะไร ก็ไม่ได้มีคุณค่าอ้างอิงมากนัก
      (ไม่ได้หมายความว่ากำลังปกป้อง MAUI)
  • เผื่อใครสับสน ขอสรุปไว้ตรงนี้
    .NET MAUI เดิมเป็นเฟรมเวิร์กสำหรับทำแอป Android, iOS, macOS และ Windows จาก codebase เดียว
    ครั้งนี้มีการเพิ่ม Linux และเบราว์เซอร์ เข้ามา
    ผมลองทำแอป Hello World บน Mac แล้วพบว่าการตั้งค่าค่อนข้างซับซ้อน
    แต่ก็รู้สึกดีที่ได้กลับมาใช้ XAML อีกครั้งหลังจากไม่ได้แตะมานาน

    • คล้าย Flutter ไหม?
  • ผมกำลังทำซอฟต์แวร์สำหรับงานพัฒนาและมองหา cross-platform GUI อยู่
    ตอนแรกลอง MAUI แต่ แค่ขั้นตอนติดตั้งก็นรกแล้ว
    ฟีเจอร์ UI พื้นฐานยังไม่รองรับด้วยซ้ำ
    จากนั้นลอง AvaloniaUI แล้วประสบการณ์ตรงกันข้ามเลย
    ติดตั้งง่าย และแค่ค้นหาข้อมูลนิดหน่อยก็ทำอะไรอย่าง หน้าต่างโปร่งใสไร้ขอบ ได้ง่าย ๆ
    การรวมเข้ากับ Visual Studio อาจยังไม่สมบูรณ์นัก แต่ก็นำหน้า MAUI ไปไกลมาก

  • เหมือน Silverlight ฟื้นคืนชีพ
    อ้างอิง: Microsoft Silverlight วิกิ

  • เดโมแทบใช้งานไม่ได้เลยบน Chrome
    เกม sliding puzzle ตอบสนองช้า และลูกศรย้อนกลับก็ค้าง
    ถ้ารีเฟรชจะกลับไปหน้าจอแรก
    ตัวเลือกเวลาและตัวเลือกวันที่ ก็จัดวางเพี้ยนและใช้งานลำบาก
    โดยรวมแล้วแย่มาก

  • ผมลองรันเดโม “Word puzzle” ในส่วน “Launch MAUI in your browser”
    พอกด ‘Randomize’ แผ่นไทล์จะเริ่มสลับ แล้วถ้ากลับด้วยลูกศรด้านบน หน้าจอจะค้างสนิท
    พื้นหลังยังเป็นปริศนาอยู่ ส่วนเมนูมาซ้อนอยู่ด้านบนจนกดอะไรไม่ได้
    เกิดเหมือนกันในหลายเบราว์เซอร์
    ลิงก์เดโม

    • ถ้ารอให้ shuffle เสร็จก่อนก็กลับได้ แต่ ความรู้สึกตอนใช้เมาส์มันแปลก ๆ
      การคลิก-ลากไม่เสถียร และไม่มี visual feedback
      ไทล์ไม่ขยับแบบต่อเนื่องแต่กระโดดไปเลย
      ถ้าให้คลิกครั้งเดียวหรือมีแอนิเมชันการเคลื่อนที่น่าจะดีกว่า
      มีผู้ใช้อีกคนพูดถึงปัญหาเดียวกัน
    • ผมลองเครื่องคิดเลขแล้ว 7/9 = 1
      เครื่องคิดเลข RPN ก็ใส่ตัวเลขลง stack ไม่ได้ด้วยซ้ำ
  • อยากได้ UI toolkit ที่ ทำโปรแกรม CAD จริงจังได้ แบบจริง ๆ
    เบื่อแอปที่ดูเหมือน webview แล้ว

    • เห็นด้วยสุด ๆ
      ผมเกลียดเทรนด์เว็บ UI ในช่วง 10 ปีที่ผ่านมา
      ทุกอย่างใหญ่ขึ้นเพราะเน้นสัมผัส, เว้นที่ว่างเยอะ, และมีแอนิเมชันไร้ประโยชน์เต็มไปหมด
      อยากกลับไปหา UI แบบเก่าที่เน้น ความหนาแน่นของข้อมูลและการใช้งานจริง
      พอดูเว็บไซต์ญี่ปุ่นแล้วชอบตรงนี้มาก
    • จริง ๆ ของอย่าง CAD ขอแค่มีพื้นผิวเรนเดอร์ด้วย GPU ก็ทำได้บน toolkit ไหนก็ได้
      ถ้าดูเดโมรีลของ Avalonia จะเห็นว่าสแตก GUI ฝั่ง .NET ก็ทำของอย่าง โปรแกรมตัดต่อวิดีโอหรือเครื่องมือวิเคราะห์แผนที่ ได้เหมือนกัน
      Avalonia Showcase
    • เกณฑ์วัด GUI toolkit ของผมคือ มันสร้างซอฟต์แวร์ระดับ Photoshop ได้ไหม
      ถ้าทำได้แค่แอปอากาศหรือแอป To-do ก็ไม่มีความหมายอะไร
    • แล้ว QT ล่ะ?
      WPF กับ WinForms ก็ยังมีอยู่นะ