การพัฒนาแอปพลิเคชัน. NET ในอนาคตด้วยแพลตฟอร์ม Uno

หากคุณใช้เวลาฟังและพูดคุยกับนักพัฒนา Windows คุณจะรู้ว่ามีความสับสนและความยุ่งยากมากมายเกี่ยวกับทิศทางของแพลตฟอร์มโดยเฉพาะอย่างยิ่งใน. NET และ UWP (Universal Windows Platform) Microsoft พยายามขีดเส้นใต้ความแตกต่างระหว่าง UWP และ Windows SDK รุ่นเก่าในขณะที่พยายามนำทุกคนเข้าสู่. NET 5 ในอนาคตด้วยการประกาศ Project Reunion รุ่น Build 2020 แต่ยังคงต้องใช้เวลาในการส่งมอบแพลตฟอร์มที่เป็นหนึ่งเดียว

หลายสิ่งหลายอย่างเกี่ยวกับวิธีการส่งมอบการอัปเดตแพลตฟอร์ม Windows ในอดีต: ควบคู่ไปกับการเปิดตัวระบบปฏิบัติการ Project Reunion สร้างจากการทำงานร่วมกับคอมโพเนนต์อินเทอร์เฟซผู้ใช้ WinUI แยกส่วนออกจากระบบปฏิบัติการพื้นฐานและช่วยให้แพลตฟอร์มสำหรับนักพัฒนาสามารถพัฒนาได้เร็วกว่าเดิม

การสร้างแนวทางโอเพ่นซอร์สไปยังแพลตฟอร์มทำให้มีโอกาสมากขึ้นในการนำรูปแบบการพัฒนา. NET (และโค้ดของคุณ) ไปใช้กับแพลตฟอร์มต่างๆ ตัวอย่างหนึ่งของวิธีการทำงานคือการใช้งาน WinUI ของ Uno Platform ซึ่งเพิ่งเปิดตัวรุ่นหลักที่สาม

ขอแนะนำ Uno Platform 3.0

หากคุณไม่เคยดูแพลตฟอร์ม Uno มาก่อนอาจเป็นเรื่องง่ายที่สุดที่จะคิดว่าเป็นทางเลือกอื่นสำหรับ Xamarin ที่ช่วยให้คุณสร้างรหัส. NET ที่ทำงานบน iOS, Android, macOS และเว็บ ฉันเคยเขียนเกี่ยวกับ Uno มาก่อนเพื่อส่งมอบอินเทอร์เฟซผู้ใช้ที่คุ้นเคยผ่านเว็บโดยใช้ WinUI กับ WebAssembly และกรอบการพัฒนา Blazor ของ Microsoft

Uno Platform 3.0 กำลังได้รับการพัฒนาให้รองรับ WinUI 3.0 ควบคู่ไปกับ WinUI 2.0 ด้วยวิธีนี้คุณสามารถผสมผสานและจับคู่การควบคุมใหม่และปัจจุบันซึ่งเป็นแนวทางที่ควรทำงานได้ดีควบคู่ไปกับการเปิดตัวแบบค่อยเป็นค่อยไปของ WinUI 3.0 และ Project Reunion API ระดับระบบ

มีหลายสิ่งที่ชอบใน Uno โดยเฉพาะอย่างยิ่งมีช่วงการเรียนรู้เพียงเล็กน้อยหรือไม่มีเลย โค้ดสามารถสร้างขึ้นใน IDE ที่คุณชื่นชอบและใช้เครื่องมือและเฟรมเวิร์กที่มีอยู่ซึ่งจัดเตรียมเลเยอร์ UI ทั่วไปสำหรับโค้ดทุกเวอร์ชันของคุณ คุณต้องเขียน C # และ XAML ของคุณเพียงครั้งเดียวโดยรหัส WinUI ที่ทำงานโดยตรงบน Windows และผ่าน Uno บนแพลตฟอร์มอื่น ๆ สร้างจากเครื่องมือดั้งเดิมของ Xamarin สำหรับ iOS, macOS และ Android และใช้การใช้งาน Mono-WASM บน เว็บ.

ใช้ Uno เพื่อนำแอพ. NET ไปยัง macOS

ภายใต้ประสิทธิภาพการใช้งาน macOS ของ Uno สร้างความคล้ายคลึงกันระหว่าง AppKit ของ macOS และ UIKit ของ iOS ซึ่งทำให้ทีมพัฒนาสามารถโพสต์การใช้งานการควบคุม iOS ที่มีอยู่ได้ แม้ว่าจะใช้งานได้ แต่การควบคุมบางอย่างยังคงมีปัญหาดังนั้นจึงควรทดลองใช้ก่อนที่จะปรับใช้โค้ดกับผู้ใช้ของคุณ ถึงกระนั้นก็เป็นวิธีที่มีประสิทธิภาพในการนำแอพ. NET ที่มีอยู่จาก Windows ไปสู่ ​​macOS ด้วยการสร้างไลบรารี macOS หลัก Uno ควรจะอนุญาตให้โค้ดของคุณทำงานบนซิลิกอนของ Apple ที่ใช้ ARM ที่เพิ่งประกาศ

การรองรับ Mac ใน Uno นั้นค่อนข้างใหม่โดยเปิดตัวในเดือนพฤษภาคม 2020 โดยมีการนำแอพ Windows Calculator มาใช้ใหม่บน macOS และเผยแพร่ผ่าน macOS store ของ Apple การสร้างรหัสที่มีอยู่ของคุณใน macOS จำเป็นต้องใช้ชุดแม่แบบ Uno ใหม่และเครื่องมือบรรทัดคำสั่งของ Windows .NET เมื่อคุณติดตั้งเทมเพลตใหม่สำหรับ Uno 2.3 หรือ 3.0 แล้วคุณสามารถสร้างแอพ scaffolding สำหรับแอพพลิเคชั่น macOS ที่มีชื่อเดียวกับโปรเจ็กต์ที่คุณต้องการกำหนดเป้าหมาย

จากนั้นคุณสามารถย้ายโปรเจ็กต์นั้นไปไว้ในโฟลเดอร์เดียวกับไฟล์แอปพลิเคชันที่เหลือของคุณและเพิ่มโปรเจ็กต์ใหม่ลงในโซลูชัน Visual Studio ที่มีอยู่ คอมไพล์โค้ดของคุณสำหรับ macOS โดยใช้ Visual Studio for Mac และกำหนดการตั้งค่าตัวจำลอง iPhone เพื่อกำหนดเป้าหมายอุปกรณ์ macOS สำหรับการพัฒนาของคุณ

เนื่องจากคุณไม่สามารถใช้ Visual Studio for Mac เพื่อทำงานบนแอป Windows WinUI ได้คุณควรใช้ Git หรือแพลตฟอร์มควบคุมซอร์สโค้ดที่คล้ายกันสำหรับโซลูชันที่สมบูรณ์ของคุณเพื่อให้คุณสามารถจัดการการเปลี่ยนแปลงโค้ดสำหรับ macOS และสำหรับ Windows ได้ หากคุณกำลังทำงานกับแอปเวอร์ชัน WebAssembly ให้ใช้ Visual Studio Code เพื่อสร้างด้วยส่วนขยายตัวแก้ไขข้อบกพร่อง C # และ JavaScript การสนับสนุน MacOS มีให้บริการทั้งใน Uno 2.4 และ 3.0 โดยเวอร์ชันล่าสุดแสดงให้เห็นถึงแอปพลิเคชันเครื่องเล่นวิดีโอข้ามแพลตฟอร์มที่ใช้ WinUI ซึ่งมีอยู่ในร้านค้าแอปหลักทั้งหมด

ใช้ WinUI 3.0 ใน Uno

หากคุณกำลังวางแผนที่จะทำงานกับ WinUI 3.0 คุณต้องใช้รุ่น 3.0 ล่าสุดของ Uno ใช้เทมเพลต. NET ของ Uno Platform อีกครั้งเพื่อตั้งค่าโครงสำหรับโค้ดของคุณ หากคุณกำลังย้ายโค้ดที่มีอยู่ไปที่ WinUI 3.0 คุณจำเป็นต้องเปลี่ยนเนมสเปซที่คุณใช้ทั้งสำหรับการควบคุมของ Microsoft และสำหรับรหัส Uno ของคุณซึ่งเป็นสิ่งที่ง่ายพอที่จะทำได้โดยใช้เครื่องมือการปรับโครงสร้างใหม่ที่มีอยู่ใน Visual Studio

สิ่งที่น่าสนใจอย่างหนึ่งของ Uno Platform คือการรองรับอุปกรณ์สองหน้าจอ เมื่อนำโค้ดที่มีอยู่ไปที่ Uno และเพิ่มการควบคุมแบบสองหน้าจอคุณควรจะสามารถพอร์ตแอพจาก Windows ไปยัง Surface Duo ที่ใช้ Android ที่กำลังจะมาถึงโดยมีการเปลี่ยนแปลงเพียงเล็กน้อย ด้วย Microsoft จัดลำดับความสำคัญของแอปพลิเคชันมือถือสองหน้าจอและร่วมมือกับ Google เพื่อปรับปรุงการรองรับ Android รุ่นที่กำลังจะมาถึงเครื่องมืออย่าง Uno จะเป็นเส้นทางสำคัญในการรับประสบการณ์หน้าจอขนาดใหญ่และแท็บเล็ตที่มีอยู่จาก Windows และนำไปสู่ฮาร์ดแวร์ Android แบบพับได้และแบบสองหน้าจอ .

Uno Platform และอนาคตของการพัฒนาแอปพลิเคชัน. NET

เป็นที่ชัดเจนว่า Microsoft มีเป้าหมายที่จะขจัดความสับสนเกี่ยวกับวิธีสร้างแอปพลิเคชันในระบบนิเวศ. NET โดยใช้ WinUI และ Project Reunion เพื่อให้ความชัดเจนที่จำเป็นมากเกี่ยวกับอนาคต แต่เร็วที่สุดเท่าที่ Microsoft สัญญาว่าจะส่งมอบพวกเขาก็ยังคงช้าเกินไปสำหรับนักพัฒนาหลายคน ทั้งแพลตฟอร์ม Uno และ MAUI ของ Xamarin เป็นวิธีการเข้าถึงเทคโนโลยีเหล่านี้ได้เร็วขึ้นนอกเหนือจากรหัส. NET ที่คุณมีอยู่

ด้วยการเพิ่มการรองรับ macOS และ Web UI ใน. NET ทำให้ Uno Platform เป็นตัวเลือกที่ดีกว่าสำหรับการกำหนดเป้าหมายผู้ใช้ให้มากที่สุดโดยมีการเปลี่ยนแปลงโค้ดน้อยที่สุด เป็นเส้นทางสู่อนาคตของ. NET ที่จะช่วยประหยัดเวลาในการพัฒนาได้มากและช่วยให้โหลดการสนับสนุนน้อยที่สุด

การใช้ Uno ควรพิสูจน์รหัส. NET ที่มีอยู่ของคุณในอนาคตด้วยวิธีอื่นด้วย แอปพลิเคชัน WebAssembly ในเบราว์เซอร์และ WASI (WebAssembly System Interface) แบบสแตนด์อะโลนควรทำให้ขั้นตอนการนำโค้ดของคุณไปใช้กับฮาร์ดแวร์ขอบรุ่นใหม่ได้ง่ายขึ้นโดยเฉพาะฟอร์มแฟคเตอร์ขนาดเล็กและอุปกรณ์หน้าจอขนาดเล็กที่ใช้ ARM และโปรเซสเซอร์พลังงานต่ำอื่น ๆ