WebAssembly เป็นมาตรฐานเทคโนโลยีบนเว็บใหม่อีกตัว ที่หลายๆ คนหมายว่า มันจะมาเปลี่ยนโลกของเว็บอย่างสิ้นเชิง
ถ้าพูดถึงประโยชน์ของมัน สรุปได้สั้นๆ ตอนนี้ว่า
มันสามารถทำให้โค้ดภาษา Native ทำงานบน Web Browser ได้ความเร็วเหมือนโปรแกรม Native ยังไงยังงั้น
ดังนั้นภาษาโปรแกรมมิ่งแบบ Native ต่างก็พากันตื่นตัวยกใหญ่ มองว่าจะทำยังไง ถึงจะภาษาตัวเองเข้าไปแย่งชิงพื้นที่บนเทคโนโลยีเว็บผ่านเจ้า WebAssembly นี้ได้
ซึ่งหนึ่งในนั้นคือ C#.NET อย่างไม่ต้องสงสัย และวันนี้โค้ชพลก็ได้เอาความคืบหน้าจากทางฝั่ง C# มาฝากกัน
C# บน WebAssembly ด้วย Mono
ใครที่ติดตามเรื่อง Xamarin หรือเรียน Workshop กับโค้ชพลไป จะมีส่วนที่คุยกันว่า Xamarin พา C# เติบโตมาสู่ iOS และ Android ได้ เพราะอิงเทคโนโลยีของ Mono เป็นหลัก
และตอนนี้ Mono กำลังมองยาวไปยังส่วนต่อไปคือการเขียน C# ใช้งานบนเว็บเบราเซอร์ได้ ผ่านเทคโนโลยี WebAssembly นั่นเอง
โดย Mono ออกมาอัพเดตว่าการทดลองพา C# เข้าสู่ WebAssembly ตอนนี้มีอยู่ 2 แบบคือ
- Full Static Compilation
- Mixed Mode
1. เหมาเหมา (Full Static Compilation)
แบบแรก เรียกว่าเหมาเหมา ก็ได้ เพราะมันคอมไพล์ทุกอย่าง ทั้ง Mono C Runtime, Class Libraries, รวมถึงโค้ดของเราเข้าไปใน WebAssembly
ผลลัพธ์คือไฟล์ขนาดใหญ่ (มากๆ) เราสามารถดูโปรเจคที่คอมไพล์เรียบร้อยแล้วได้ที่นี่ ส่วนโค้ดที่คอมไพล์แล้วดูที่นี่
2. โหมดผสม (Mixed Mode)
แบบที่สองเป็นแบบผสมผสาน โดยการคอมไพล์ Mono C Runtime เข้าไปใน WebAssembly และใช้ Mono IL จัดการ และรันโค้ด
ได้ไฟล์ขนาดเล็กว่าแบบแรก แต่ประสิทธิภาพแย่กว่า ดูโปรเจคแบบที่ 2 ได้ที่นี่
ขนาดเป็นสิ่งสำคัญ
ปัจจุบันขนาดของไฟล์ที่เอามาใช้ยังมีขนาดใหญ่อยู่ เนื่องจากในการทดลอง ทีมพัฒนา Mono ยังใช้โปรไฟล์ในการสร้างแบบเดียวกับที่ใช้บน Desktop แอพพลิเคชั่นอยู่
แต่แผนการต่อไปคือ Mono จะใช้การปรับแต่งโปรไฟล์ที่ใช้กับ Mobile Application และตัดทอนส่วนที่ไม่จำเป็นออก เพื่อให้ได้ขนาดที่เล็กพอจะทำงานได้อย่างรวดเร็วบน Web Platform
ขั้นตอนต่อไป
เห็นชัดว่าตอนนี้ Mono ผ่านการทดสอบแนวคิดขั้นแรกมาได้แล้ว ส่วนต่อไปคือการเพิ่มประสิทธิภาพการทำงานของไฟล์ที่เอามาใช้บน WebAssembly
จากที่ลองเล่น และเข้าไปดูมา Mono ดูจะสนใจวิธีที่ 2 เป็นพิเศษ
ซึ่งเดี๋ยวเราจะเอามาอัพเดตกันต่อไปครับ
อ้างอิง – Mono Assembly Project, Mono Blog