Xamarin Forms, MVVMCross และ SkiaSharp: The Holy Trinity of Cross-Platform App Development

เผยแพร่แล้ว: 2022-03-11

พูดคุยเกี่ยวกับการกำหนดความคาดหวังสูง ตรีเอกานุภาพไม่น้อย!

ความจริงก็คือ การพัฒนาแอพมือถือมีค่าใช้จ่ายสูงเมื่อคุณกำหนดเป้าหมายหลายแพลตฟอร์ม เนื่องจากไม่มีรหัสที่ใช้ร่วมกัน Apple ต้องการให้คุณเขียนโค้ดใน Objective-C หรือ Swift, Android ต้องการให้คุณเขียนโค้ดใน Java และ WinPhone ต้องการให้คุณพัฒนาใน .NET ซึ่งมักจะเป็น C# นอกจากนี้ ยังมีไลบรารีจำนวนมากที่แต่ละแพลตฟอร์มจัดเตรียมไว้เพื่อจัดการแผนที่ ภาพวาด รูปภาพ หรือ GPS ซึ่งต้องใช้เวลาและความรู้จำนวนมากในการสร้างแอปบนอุปกรณ์เคลื่อนที่เครื่องเดียว

การพัฒนาแอพข้ามแพลตฟอร์มด้วย Xamarin Forms, MVVMCross และ SkiaSharp

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

ในบทความนี้ คุณจะได้เรียนรู้ว่า Xamarin Forms ร่วมกับ MVVMCross และ SkiaSharp เป็นวิธีที่มีประสิทธิภาพในการสร้างแอปมือถือข้ามแพลตฟอร์มโดยไม่กระทบต่อความคุ้นเคย ประสิทธิภาพ และความเป็นเอกลักษณ์ บทความจะทบทวนเทคโนโลยีทั้งสามนี้และวิธีที่พวกเขาสามารถลดต้นทุนการพัฒนาโดยอนุญาตให้ใช้รหัสซ้ำสูงสุดในแพลตฟอร์มมือถือหลายตัว

ปัญหาสำคัญ

ปัญหาของการพัฒนาแอพมือถือข้ามแพลตฟอร์มนั้นเป็นเรื่องจริง และด้วยเหตุนี้ จึงมีโซลูชันที่แตกต่างกันมากมายในช่วงหลายปีที่ผ่านมาเพื่อลดต้นทุนการพัฒนาโดยการแบ่งปันรหัสระหว่างแพลตฟอร์ม ตัวอย่างเช่น ในอุตสาหกรรมวิดีโอเกม เอ็นจิ้นเกมหลักทั้งหมดนำเสนอโซลูชั่นข้ามแพลตฟอร์ม โดยที่แม้แต่ Unreal และ Unity ก็มุ่งเป้าไปที่โทรศัพท์มือถือและแท็บเล็ต

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

พื้นเมืองหรือไม่ ฉันมา

จึงมีสงครามระหว่างการแก้ปัญหาที่แตกต่างกันและผู้ที่กล่าวว่าสงครามหมายถึงการโฆษณาชวนเชื่อ!

สงครามส่วนใหญ่จะสู้หน้า N ตัวใหญ่ : เป็นคนพื้นเมือง! คุณต้องระวังคำเพราะมันไม่มีความหมายที่ชัดเจน เป็นคำที่ใช้มากที่สุดในโลกของการพัฒนาอุปกรณ์พกพาในปัจจุบันและทันสมัยมาก ความจริงก็คือไม่มีใครเห็นด้วยกับความหมายที่แท้จริง

เมื่อเลือกเฟรมเวิร์กข้ามแพลตฟอร์ม ตัวเลือก "ดั้งเดิม" ทั้งหมดไม่เท่ากัน ดังนั้นโปรดระวัง คุณอาจกำลังเปรียบเทียบแอปเปิ้ลกับส้ม สำหรับบางคนมันเกี่ยวกับภาษาการเขียนโปรแกรม สำหรับคนอื่นๆ มันเกี่ยวกับความสามารถในการใช้ฟีเจอร์ของฮาร์ดแวร์ คนอื่นๆ คิดว่ามันเกี่ยวกับการใช้แพลตฟอร์ม API/UI และบ่อยครั้งที่มันไม่ได้เกี่ยวกับการเป็นเว็บแอปเท่านั้น

มีข้อโต้แย้งในทุกด้านของการอภิปรายและฉันจะไม่เจาะลึกเพราะมันไร้ประโยชน์ ทำไมมันไร้ประโยชน์? ให้ฉันบอกคุณเรื่องยากที่จะกลืนความจริง: ผู้ใช้ปลายทางของคุณไม่สนใจ!

ใช่ คุณอ่านถูกต้องแล้ว มีเพียงโปรแกรมเมอร์ของคุณเท่านั้นที่ใส่ใจ ผู้ใช้ปลายทางของคุณจะไม่มีวันเลือกแอปของคุณเนื่องจากเทคโนโลยีพื้นฐาน: พวกเขาจะเลือกแอปของคุณเพราะจะตอบคำถามของพวกเขาและให้ประสบการณ์ที่ดี

ดังนั้น แทนที่จะทะเลาะกันเรื่องความหมายของคำ เรามาดูกันว่า Xamarin มีวิธีที่มีประสิทธิภาพในการมอบสิ่งที่พวกเขาสนใจให้กับผู้ใช้ของคุณได้อย่างไร

พระบิดา พระบุตร และพระวิญญาณบริสุทธิ์

ก่อนที่เราจะดำเนินการต่อ เรามาชี้แจงองค์ประกอบสามประการที่ประกอบด้วยวิธีแก้ปัญหาของเราสำหรับปัญหาการพัฒนาข้ามแพลตฟอร์ม

พ่อ: Xamarin

ตามที่กล่าวไว้ก่อนหน้านี้ Xamarin เป็นโซลูชัน .NET สำหรับการพัฒนาแอพมือถือและเดสก์ท็อป ถูกซื้อโดย Microsoft ในปี 2559 แต่มีอายุประมาณสี่ปีที่แล้วกับโครงการ Mono ปัจจุบันมีสามโซลูชั่น ได้แก่ Xamarin.iOS, Xamarin.Android และ Xamarin.Mac แพลตฟอร์มอื่นจัดการแอป .NET เป็นค่าเริ่มต้นอยู่แล้ว ซึ่งเป็นโซลูชันของ Microsoft กล่าวโดยย่อ Xamarin เสนอลิงก์โดยตรงไปยังแพลตฟอร์ม API ใน .NET คุณจึงใช้ฟีเจอร์เนทีฟจากแอป .NET ได้ นอกจากนี้ยังมีโมดูลส่วนขยายสำหรับ Xamarin ที่เรียกว่า Forms ซึ่งมีเลเยอร์นามธรรมสำหรับ UI

ลูกชาย: SkiaSharp

SkiaSharp เป็นโปรแกรมห่อหุ้ม .NET เหนือไลบรารีกราฟิกแบบเวกเตอร์ Skia ของ Google Skia เป็นเอ็นจิ้นการเรนเดอร์ดั้งเดิมของ Android, Chrome, ChromeOS และ Firefox ด้วย SkiaSharp คุณสามารถใช้ไลบรารีในแอพ .NET ของคุณเพื่อทำให้เป็นแบบข้ามแพลตฟอร์มได้ ซึ่งหมายความว่าเงาเรียบร้อยที่นักออกแบบของคุณกล่าวว่า "จะทำให้แอปของคุณดีขึ้นมาก" สามารถเขียนโค้ดได้เพียงครั้งเดียวแทนที่จะทำซ้ำสำหรับแต่ละแพลตฟอร์มเป้าหมาย โดยส่วนตัวแล้ว ฉันคิดว่าคุณสมบัติที่ดีที่สุดคือความสามารถในการแสดงกราฟิก SVG ในลักษณะที่ช่วยให้คุณสามารถป้องกันการทำซ้ำของฟอร์มแฟคเตอร์ต่างๆ ในขณะที่ยังคงการเรนเดอร์ที่คมชัดและสมบูรณ์แบบด้วยพิกเซล

พระวิญญาณบริสุทธิ์: MVVMCross

เพื่อให้ทุกอย่างแยกจากกันและเชื่อมโยงกันอย่างหลวม ๆ โซลูชันที่ชำระให้บริสุทธิ์ของเราจะต้องพึ่งพา MVVMCross เฟรมเวิร์กนี้ใช้โครงสร้างพื้นฐาน MVVM (Model-View-ViewModel) เพื่อให้สามารถเก็บทุกอย่างเป็นอิสระได้ โดยทั่วไปแอปจะแบ่งออกเป็นสามส่วนโดยไม่ได้รับข้อมูลด้านเทคนิคมากเกินไป:

  1. แบบจำลอง: การแสดงหน่วยความจำของข้อมูลของเรา
  2. มุมมอง: UI ของเราที่นำเสนอข้อมูลและการดำเนินการแก่ผู้ใช้
  3. ViewModel: เลเยอร์ที่ผูกโมเดลของเรากับมุมมองของเราและในทางกลับกัน

ในด้านวิศวกรรมซอฟต์แวร์ เราพยายามแยกมุมมองออกจาก ViewModel เสมอ เพื่อให้ตรรกะของแอปพลิเคชัน (ใน ViewModel) สามารถนำมาใช้ซ้ำได้ แม้ว่าเราจะเปลี่ยนการแสดงภาพก็ตาม MVVMCross ช่วยให้เราบรรลุผลได้โดยการจัดการการเชื่อมโยงข้อมูล และจัดเตรียมรูปแบบและเครื่องมือสำหรับการทำให้เป็นนามธรรมของแพลตฟอร์ม

สิ่งที่ผู้ใช้ปลายทางสนใจ

เพื่อสรุป มีหลายสิ่งที่แยกความแตกต่างระหว่างแอปที่ประสบความสำเร็จและแอปที่ไม่ดี แอปที่ประสบความสำเร็จ:

  1. แก้ปัญหาชีวิตจริง
  2. มอบประสบการณ์ที่สนุกสนาน

จุดที่ 1 เห็นได้ชัดว่าไม่มีอะไรเกี่ยวข้องกับกรอบงานที่คุณเลือก มาเน้นที่ประเด็นที่ 2 มีสามประเด็นหลักที่ส่งผลต่อความเพลิดเพลินของแอปของคุณ:

  1. ความคุ้นเคย
  2. ผลงาน
  3. เอกลักษณ์

ความคุ้นเคย

ความคุ้นเคยเกี่ยวข้องกับความสะดวกในการใช้งานและค้นหาวิธีของคุณผ่านแอพได้อย่างรวดเร็ว

กล่าวอีกนัยหนึ่ง มันเกี่ยวกับการใช้กระบวนทัศน์อินเทอร์เฟซผู้ใช้ที่แตกต่างกันของแพลตฟอร์มในลักษณะที่สอดคล้องกันทั่วทั้งระบบ ตัวอย่างเช่น สิ่งง่ายๆ เช่น ตำแหน่งของปุ่ม การดำเนินการตามบริบทของรายการ หรือการนำทาง ล้วนมีส่วนทำให้แอปของคุณคุ้นเคย

ความคุ้นเคยเป็นจุดอ่อนหลักของเว็บแอปหรือเฟรมเวิร์กที่อิงจากเว็บอินเทอร์เฟซ ในทางกลับกัน Xamarin Forms ให้การแมปข้ามแพลตฟอร์มกับองค์ประกอบ UI ที่ผู้ขายจัดหาให้

ผู้ใช้ของคุณจะได้รับประสบการณ์ที่สอดคล้องกับรูปลักษณ์ทั่วไปของแพลตฟอร์ม ดังนั้นพวกเขาจะรู้สึกสบายใจในแอปของคุณโดยสัญชาตญาณ

ผลงาน

ตรงไปตรงมา การกล่าวถึง "เจ้าของภาษา" ในการโฆษณาชวนเชื่อทางการตลาดของคุณไม่มีความหมายอะไรเลย ใช้ Jasonette เป็นตัวอย่างซึ่งเป็น "native over HTTP" UI ถูกจัดเก็บไว้ในเว็บเซิร์ฟเวอร์… สวัสดีทั้งไปและกลับและการชะลอตัว ดังนั้นเราจึงเห็นว่าเนทีฟนั้นไม่จำเป็นต้องหมายถึงประสิทธิภาพที่ดีขึ้นเสมอไป!

ดังนั้นด้วยความเชื่อผิดๆ ดังกล่าว เมื่อพิจารณาถึงเกณฑ์มาตรฐานในชีวิตจริง Xamarin จึงเป็นโซลูชันที่ครบถ้วนสมบูรณ์ที่สุดในแง่ของประสิทธิภาพ Xamarin Forms ซึ่งไม่ต้องการการสลับบริบทมากนัก ให้ประสิทธิภาพที่เทียบเท่ากับแอปภาษาแม่

ข้อสรุปของฉันคือตัวเลือกการใช้งานของคุณทำให้แอปของคุณช้าลงมากกว่า Xamarin เทียบกับภาษาแม่ ตัวเลือกอื่น ๆ มีข้อเสียที่ชัดเจนเกี่ยวกับประสิทธิภาพ

เอกลักษณ์

ความเป็นไปได้สำหรับนักออกแบบของคุณในการสร้างแอปที่ดูไม่เหมือนใครนั้นเป็นสิ่งสำคัญมากที่จะต้องพิจารณาว่าคุณต้องการมอบประสบการณ์ผู้ใช้ที่ดีที่สุดเท่าที่จะเป็นไปได้และสร้างความแตกต่างให้กับแอปของคุณ

หลายครั้ง ความเป็นเอกลักษณ์หมายถึงการสร้างตัวควบคุมแบบกำหนดเอง ภาพเคลื่อนไหว หรือท่าทางสัมผัส เมื่อไม่พร้อมใช้งานใน Xamarin คุณสามารถใช้ SkiaSharp (ตัวห่อหุ้มรอบไลบรารีการเรนเดอร์กราฟิกแบบเวกเตอร์สกีของ Google) และใช้ประโยชน์จากแนวคิดการเรนเดอร์แบบกำหนดเองของ Xamarin Forms เพื่อให้ใกล้เคียงกับฮาร์ดแวร์เท่าที่จำเป็น ในขณะที่เขียนโค้ดในไฟล์เดียวเสมอ ภาษา ซึ่งเป็นสิ่งที่โซลูชันอื่นไม่สามารถนำเสนอได้

สิ่งที่คุณใส่ใจในฐานะธุรกิจ

ณ จุดนี้ คุณมักจะคิดว่าการเลือกกรอบงานเป็นการตัดสินใจทางธุรกิจด้วย นอกเหนือจากปัจจัยที่อยู่นอกขอบเขตของบทความนี้ เช่น ความพร้อมของทรัพยากรบุคคล Xamarin ยังมีข้อเสนออีกมากมาย โดยเฉพาะอย่างยิ่งเมื่อใช้ร่วมกับ MVVMCross ฉันจะอธิบายอย่างละเอียดในสี่ด้านที่คุณจะต้องพิจารณาในการตัดสินใจของคุณ :

  1. ราคาและต้นทุนการพัฒนา
  2. ใช้รหัสซ้ำ
  3. ความพร้อมใช้งานของส่วนประกอบ
  4. การสนับสนุนและชุมชน

ราคาและต้นทุนการพัฒนา

เอาอันนี้ออกไปให้พ้นทาง ตั้งแต่ต้นปีนี้ Xamarin ให้บริการฟรีสำหรับฟรีแลนซ์และธุรกิจขนาดเล็ก เช่น สตาร์ทอัพ (ด้วย Visual Studio Community Edition) สำหรับองค์กรขนาดใหญ่ สิทธิ์ใช้งาน Visual Studio มาพร้อมกับสิทธิ์ใช้งาน "ฟรี" ที่คุณอาจมีอยู่แล้ว Xamarin Forms, MVVMCross และ SkiaSharp ล้วนเป็นโอเพ่นซอร์สฟรีทั้งสิ้น!

ตามที่ได้กล่าวไปแล้ว การใช้เส้นทาง .Net กับ Xamarin จะทำให้คุณสามารถพัฒนาแอปในภาษาเดียวได้ตั้งแต่ต้นจนจบ โซลูชันอื่นๆ ส่วนใหญ่ต้องการให้โปรแกรมเมอร์ของคุณรู้ภาษาต่างๆ ตัวอย่างเช่น ในกรณีของ Cordova คุณต้องคล่องแคล่วไม่เพียงแต่ใน HTML, Javascript, CSS แต่ยังอาจรวมถึง Objective-C, Java และ/หรือ C# หากคุณต้องการเข้าถึง API ของผู้ขายที่ไม่มีปลั๊กอินที่พร้อมใช้งาน .

ความหลากหลายของภาษาที่ใช้ทำให้สามารถสลับบริบทได้มากขึ้นและมีเครื่องมือในการควบคุมมากขึ้นซึ่งส่งผลให้ประสิทธิภาพลดลง ในทางกลับกัน Xamarin เป็นโซลูชันแบบครบวงจร: จาก Visual Studio คุณสร้าง ปรับใช้ และดีบักบนทุกแพลตฟอร์ม

แม้ว่าจะไม่เกี่ยวข้องโดยตรงกับ Xamarin แต่คุณยังได้รับคุณลักษณะมากมายใน C# ที่เร่งการพัฒนาโดยการเลือกโซลูชัน .Net กล่าวคือ คุณจะได้รับประโยชน์จากคุณลักษณะที่ยอดเยี่ยมใน C# 4.5+ เช่น การทำมัลติเธรดที่ง่ายดายด้วย async/await การปิด และการสะท้อน ซึ่งทั้งหมดนี้แสดงให้เห็นว่าปรับปรุงประสิทธิภาพ

การใช้รหัสซ้ำ

คุณคงเคยคิดเกี่ยวกับการใช้โค้ดซ้ำ และเป็นไปได้มากที่คุณจะพิจารณาว่าโซลูชันทั้งหมดมีความเท่าเทียมกันในเรื่องนี้ ขอโทษที่ต้องพูดเพื่อน แต่คุณคิดผิด!

โปรแกรมเมอร์ในหมู่พวกคุณอาจสงสัยว่าทำไมบนโลกนี้ฉันจึงเสนอให้ใช้ MVVMCross บนเลเยอร์ MVVM ที่สร้างไว้ในฟอร์ม นี่คือสิ่งที่ควรพิจารณา: คุณสร้างเฉพาะแอปบนอุปกรณ์เคลื่อนที่จริงหรือ

ด้วยการแยกตรรกะของแอปด้วย MVVMCross และการใช้การควบคุมที่กลับกัน คุณสามารถนำโค้ดสูงสุดมาใช้ซ้ำบนมือถือได้ รวมถึงบน Windows และ Mac ด้วย (เพราะ Xamarin.Mac เป็นเพื่อนของคุณ)

ไม่เพียงแต่จะช่วยให้คุณประหยัดเงินเท่านั้น แต่ยังนำเสนอแนวทางปฏิบัติด้านวิศวกรรมที่ดี ซึ่งจะช่วยลดต้นทุนการบำรุงรักษาโค้ดของคุณ

ความพร้อมใช้งานของส่วนประกอบ

บางทีคุณอาจไม่เหมือนฉัน แต่ฉันเกลียดการคิดค้นล้อใหม่ ดังนั้น การเข้าถึงส่วนประกอบที่มีอยู่ซึ่งคุณสามารถรวมเข้ากับแอพของคุณได้อย่างง่ายดายจึงเป็นสิ่งสำคัญในการเร่งเวลาออกสู่ตลาด และมักจะลดต้นทุนของคุณไปพร้อม ๆ กัน

การเลือก Xamarin และ MVVMCross เสนอทางเลือกให้คุณสองตัวเลือกในการเลือกส่วนประกอบที่มีอยู่ ประการแรก มีส่วนประกอบมากขึ้นเรื่อยๆ สำหรับ Xamarin ทั้งแบบมีหรือไม่มีแบบฟอร์ม Xamarin มี Component Store ที่รวมอยู่ใน Visual Studio ซึ่งคุณจะพบวิธีแก้ปัญหาต่างๆ สำหรับปัญหาทั่วไปของแอปและบริษัทอื่นๆ ขายตรง ดังนั้นโปรดค้นหาก่อนที่จะเริ่มเขียนส่วนประกอบของคุณเอง (หรือพิจารณาขายสิ่งเหล่านี้เมื่อสร้างเสร็จแล้ว)

ประการที่สอง คุณจะต้องค้นหาแพ็คเกจ Nuget เพราะมีโอกาสที่ใครบางคนจะเขียนโค้ดเพื่อทำสิ่งที่คุณต้องการ ในบรรดาแพ็คเกจเหล่านั้น คุณจะพบรายการปลั๊กอิน MVVMCross ข้ามแพลตฟอร์มที่เหมาะสม ซึ่งจะแก้ปัญหาทั่วไป เช่น อีเมล GPS หรือการแปลเป็นภาษาท้องถิ่น

หากคุณมีประสบการณ์กับ C# แล้ว คุณอาจมีส่วนประกอบที่คุณต้องการ แน่นอน คุณคงไม่อยากปล่อยพวกเขาไป พวกเขารู้สึกสบายใจ วางใจได้เลย คุณสามารถสร้างการโยง C# สำหรับส่วนประกอบที่มีอยู่แล้วใช้งานได้เหมือนกับว่าเรากำลังรวม Xamarin ไว้ แม้แต่ในฟอร์มด้วยความช่วยเหลือเล็กน้อยจากตัวสร้างภาพที่กำหนดเอง

เมื่อพูดถึงเรื่องนี้ คุณอาจต้องการดู Xamarin ผูกที่เก็บ Github ก่อนที่จะสร้างของคุณเอง

การสนับสนุนและชุมชน

สุดท้าย การเข้าถึงการสนับสนุนและตัวอย่างเป็นปัจจัยสำคัญในการเลือกกรอบงาน Xamarin อยู่มาได้ระยะหนึ่งแล้ว ดังนั้นชุมชนจึงค่อนข้างดีในปัจจุบัน

การค้นหาข้อมูลใน Google มักจะมีคำตอบอยู่พอสมควร (เคล็ดลับ: ลองค้นหา monotouch และ monodroid บรรพบุรุษของ Xamarin) และ Xamarin มีตัวอย่างและเอกสารประกอบที่ยอดเยี่ยมมากมายบนเว็บไซต์

นอกจากนี้ เนื่องจาก Xamarin เป็นเพียงการผูกมัดกับ API ของผู้ขาย เอกสารของ Apple และ Google จึงมีความเกี่ยวข้องเสมอและจะตอบคำถามของคุณมากมาย จากนั้นคุณสามารถสร้างบริการ MVVMCross ของคุณเองเพื่อสรุป API ของผู้ขายภายในรหัสที่แชร์ของคุณ

สำหรับอนาคตของ Xamarin ด้วยการซื้อกิจการเมื่อเดือนมีนาคมที่ผ่านมาโดย Microsoft การเดิมพันของฉันคือมันจะไม่เกิดขึ้นที่ไหนเลยยกเว้นไปข้างหน้า ตั้งแต่การขายครั้งนั้นและการเปลี่ยนไปใช้โมเดลแบบฟรี-ish ชุมชนก็เติบโตขึ้นเท่านั้น การสนับสนุนก็ดีขึ้น และผลิตภัณฑ์ก็พัฒนาขึ้นเรื่อยๆ และอาจเป็นไปได้ว่าเร็วขึ้น!

อนาคตดูสดใสสำหรับซามาริน

มาเตรียมตัวให้พร้อม Rumble กันเถอะ!

ฉันตระหนักดีถึงความจริงที่ว่าฉันอาจจะเปิดกระป๋องเวิร์มด้วยบทความนี้ ตอนนี้อย่าเข้าใจฉันผิด มีตัวเลือกอื่น ๆ ที่ควรค่าแก่การพิจารณาและฉันขอเชิญคุณทำเช่นนั้นเพราะความกังวลของฉันอาจไม่เหมือนกับของคุณ

จำไว้ว่าถ้าคุณมีไทม์ไลน์หกสัปดาห์และอีกสี่เดือนต่อมา คุณยังไม่มีแอพพร้อม แสดงว่าคุณไม่ชนะ นั่นจะทำให้เหลือเวลาอีกสองเดือนครึ่งและเงินจำนวนมากในการฝึกอบรมใครสักคนในบ้านหรือจ้างคนที่มีความรู้ การยืนกรานที่จะสร้างแอป "ดั้งเดิม" ณ จุดนั้นอาจส่งผลเสียต่อชะตากรรมของโครงการของคุณ

Xamarin และเทคโนโลยีคู่หูเหล่านี้มอบสิ่งที่ผู้ใช้ของคุณสนใจและสิ่งที่คุณต้องการอย่างแท้จริง ฉันหวังว่าบทความนี้จะช่วยให้คุณตัดสินใจได้อย่างรอบรู้เกี่ยวกับเฟรมเวิร์กที่คุณอาจเลือกสำหรับแอปบนอุปกรณ์เคลื่อนที่ตัวถัดไป

ที่เกี่ยวข้อง: แอพ Android ที่ดีกว่าโดยใช้ MVVM พร้อม Clean Architecture