พูดคุยเกี่ยวกับการตั้งความคาดหวังให้สูง ตรีเอกานุภาพไม่มีอะไรน้อย!
ความจริงก็คือการพัฒนาแอปบนอุปกรณ์เคลื่อนที่มีค่าใช้จ่ายสูงเมื่อคุณกำหนดเป้าหมายหลายแพลตฟอร์มเนื่องจากไม่มีรหัสที่ใช้ร่วมกัน Apple ต้องการให้คุณเขียนโค้ดใน Objective-C หรือ Swift, Android ต้องการให้คุณเขียนโค้ดใน Java และ WinPhone ต้องการให้คุณพัฒนาใน. NET ซึ่งมักจะเป็น C # นอกจากนี้ห้องสมุดมากมายเหลือเฟือที่แต่ละแพลตฟอร์มมีไว้เพื่อจัดการกับแผนที่ภาพวาดรูปภาพหรือ GPS จำเป็นต้องใช้เวลาและความรู้จำนวนมากในการสร้างแอปบนอุปกรณ์เคลื่อนที่เพียงแอปเดียว
ไม่จำเป็นต้องพูดว่า บริษัท ที่เพิ่งเริ่มต้นส่วนใหญ่ไม่สามารถจ่ายค่าใช้จ่ายเป็นสามเท่าได้และแม้แต่ธุรกิจที่จัดตั้งขึ้นแล้วก็อาจมีช่วงเวลาที่ยากลำบากในการกำหนดราคาเข้าสู่พื้นที่มือถือ
ในบทความนี้คุณจะได้เรียนรู้ว่า Xamarin Forms ร่วมกับ MVVMCross และ SkiaSharp เป็นวิธีการสร้างข้ามแพลตฟอร์มได้อย่างไร แอพมือถือ โดยไม่สูญเสียความคุ้นเคยประสิทธิภาพและความเป็นเอกลักษณ์ บทความนี้จะทบทวนเทคโนโลยีทั้งสามนี้และวิธีลดต้นทุนการพัฒนาโดยอนุญาตให้ใช้โค้ดซ้ำได้สูงสุดในแพลตฟอร์มมือถือหลายแพลตฟอร์ม
ปัญหาของการพัฒนาแอปบนอุปกรณ์เคลื่อนที่ข้ามแพลตฟอร์มเป็นเรื่องจริงและด้วยเหตุนี้จึงมีการแก้ปัญหาต่างๆมากมายในช่วงหลายปีที่ผ่านมาเพื่อลด ต้นทุนการพัฒนา โดยการแบ่งปันรหัสระหว่างแพลตฟอร์ม ตัวอย่างเช่นในอุตสาหกรรมวิดีโอเกมเอ็นจิ้นเกมหลัก ๆ ทั้งหมดมีโซลูชันข้ามแพลตฟอร์มแม้กระทั่ง Unreal และ Unity ที่กำหนดเป้าหมายไปยังโทรศัพท์มือถือและแท็บเล็ต
ที่หน้าแอปมีความพยายามหลายครั้งในการเป็นผู้นำตลาดข้ามแพลตฟอร์มนี้ในช่วงหลายปีที่ผ่านมา หลายคนล้มลุกคลุกคลานและจมหายไปในเหว แต่สองสามคนยังคงอยู่รอดได้หลังจากผ่านไปหลายปี ในจำนวนนี้คือ Xamarin ซึ่งเป็นโซลูชัน. NET เพียงหนึ่งเดียวที่รองรับแพลตฟอร์มมือถือทั้งสามแพลตฟอร์ม
จึงเกิดสงครามขับเคี่ยวกันระหว่างทางออกที่แตกต่างกันและใครบอกว่าสงครามหมายถึงการโฆษณาชวนเชื่อ!
สงครามส่วนใหญ่จะต่อสู้กันต่อหน้าผู้เป็นใหญ่ น : เป็นคนพื้นเมือง! คุณต้องระวังคำเพราะมันไม่มีความหมายที่ชัดเจน เป็นคำที่ใช้กันมากที่สุดในโลกการพัฒนาอุปกรณ์เคลื่อนที่ในปัจจุบันและเป็นคำที่ทันสมัยมาก ความจริงก็คือไม่มีใครเห็นด้วยกับความหมายที่แท้จริง
เมื่อเลือกเฟรมเวิร์กข้ามแพลตฟอร์มตัวเลือก 'เนทีฟ' ทั้งหมดจะไม่เท่ากันดังนั้นระวังคุณอาจเปรียบเทียบแอปเปิ้ลกับส้ม สำหรับบางคนเป็นเรื่องเกี่ยวกับภาษาโปรแกรมสำหรับคนอื่น ๆ เกี่ยวกับความสามารถในการใช้คุณลักษณะของฮาร์ดแวร์คนอื่น ๆ คิดว่ามันเกี่ยวกับการใช้ API / UI ของแพลตฟอร์มและมักจะเป็นเพียงการไม่ใช้เว็บแอป
มีข้อโต้แย้งในทุกด้านของการถกเถียงและฉันจะไม่เจาะลึกลงไปเพราะมันไม่มีประโยชน์ ทำไมมันไม่มีประโยชน์? ให้ฉันบอกคุณเป็นเรื่องยากที่จะกลืนข้อเท็จจริง: ผู้ใช้ของคุณไม่สนใจ!
การขุดข้อมูลในโซเชียลเน็ตเวิร์ก
ใช่คุณอ่านถูกต้องมีเพียงโปรแกรมเมอร์เท่านั้นที่สนใจ ผู้ใช้ปลายทางของคุณจะไม่เลือกแอปของคุณเนื่องจากเทคโนโลยีพื้นฐานพวกเขาจะเลือกแอปของคุณเพราะตอบโจทย์และให้ประสบการณ์ที่ดี
ดังนั้นแทนที่จะต่อสู้กับความหมายของคำเรามาดูวิธีที่ Xamarin มอบวิธีที่มีประสิทธิภาพในการให้สิ่งที่พวกเขาสนใจแก่ผู้ใช้ของคุณ
ก่อนที่เราจะดำเนินการต่อเรามาชี้แจงองค์ประกอบสามประการที่ประกอบเป็นโซลูชันของเราสำหรับปัญหาการพัฒนาข้ามแพลตฟอร์ม
ตามที่กล่าวไว้ก่อนหน้านี้ Xamarin เป็นโซลูชัน. NET สำหรับการพัฒนาแอปบนอุปกรณ์เคลื่อนที่และเดสก์ท็อป ไมโครซอฟท์ซื้อในปี 2559 แต่ย้อนไปเมื่อประมาณ 4 ปีที่แล้วด้วยโครงการโมโน ปัจจุบันมีสามโซลูชัน: Xamarin.iOS, Xamarin.Android และ Xamarin.Mac แพลตฟอร์มอื่น ๆ จัดการแอป. NET อยู่แล้วโดยค่าเริ่มต้นซึ่งเป็นโซลูชันของ Microsoft กล่าวโดยย่อคือ Xamarin มีลิงก์โดยตรงไปยังแพลตฟอร์ม API ใน. NET ดังนั้นคุณสามารถใช้คุณสมบัติดั้งเดิมจากแอป. NET นอกจากนี้ยังมีโมดูลส่วนขยายสำหรับ Xamarin ที่เรียกว่า Forms ซึ่งมีเลเยอร์นามธรรมสำหรับ UI
SkiaSharp เป็น. NET Wrapper บนไลบรารีกราฟิกเวกเตอร์ Skia ของ Google Skia คือเอ็นจิ้นการเรนเดอร์เนทีฟของ Android, Chrome, ChromeOS และ Firefox ด้วย SkiaSharp คุณสามารถใช้ไลบรารีในแอป. NET ของคุณเพื่อสร้างข้ามแพลตฟอร์มได้ ซึ่งหมายความว่าเงาที่เรียบง่ายที่นักออกแบบของคุณระบุว่า“ จะทำให้แอปของคุณดีขึ้นมาก” สามารถเข้ารหัสได้เพียงครั้งเดียวแทนที่จะทำซ้ำสำหรับแต่ละแพลตฟอร์มเป้าหมาย โดยส่วนตัวแล้วฉันคิดว่าคุณสมบัติที่ดีที่สุดคือความสามารถในการแสดงผลกราฟิก SVG ในลักษณะที่ช่วยให้คุณสามารถป้องกันการทำซ้ำของฟอร์มแฟคเตอร์ต่าง ๆ ในขณะที่ยังคงการแสดงผลที่คมชัดและสมบูรณ์แบบพิกเซล
วิธีหาความยืดหยุ่นของราคาอุปสงค์
เพื่อให้ทุกสิ่งแยกออกจากกันอย่างดีและเชื่อมโยงกันอย่างหลวม ๆ โซลูชันที่ได้รับการชำระให้บริสุทธิ์ของเราจะอาศัย MVVMCross เฟรมเวิร์กนี้ใช้โครงสร้างพื้นฐาน MVVM (Model-View-ViewModel) เพื่อให้ทุกอย่างเป็นอิสระ โดยทั่วไปแอปจะแบ่งออกเป็นสามส่วนโดยไม่ต้องใช้เทคนิคมากเกินไป:
ในวิศวกรรมซอฟต์แวร์เราพยายามแยกมุมมองออกจาก ViewModel เสมอเพื่อให้ตรรกะของแอปพลิเคชัน (ใน ViewModel) สามารถใช้ซ้ำได้แม้ว่าเราจะเปลี่ยนการแสดงภาพ MVVMCross ช่วยให้เราบรรลุสิ่งนั้นได้ด้วยการจัดการการผูกข้อมูลและจัดหารูปแบบและเครื่องมือสำหรับสิ่งที่เป็นนามธรรมของแพลตฟอร์ม
สรุปมีหลายสิ่งที่ทำให้แอปที่ประสบความสำเร็จแตกต่างจากแอปที่ไม่ดี แอปที่ประสบความสำเร็จ:
จุดที่ 1 เห็นได้ชัดว่าไม่มีส่วนเกี่ยวข้องกับกรอบงานที่คุณเลือก ดังนั้นเราจะมุ่งเน้นไปที่จุดที่ 2 มีสามประเด็นหลักที่ช่วยให้แอปของคุณเพลิดเพลิน:
ความคุ้นเคยเกี่ยวข้องกับการใช้งานง่ายและค้นหาเส้นทางผ่านแอปได้อย่างรวดเร็ว
กล่าวอีกนัยหนึ่งก็คือการใช้กระบวนทัศน์อินเทอร์เฟซผู้ใช้ที่แตกต่างกันของแพลตฟอร์มในลักษณะที่สอดคล้องกันทั้งระบบ ตัวอย่างเช่นสิ่งง่ายๆเช่นตำแหน่งปุ่มรายการการดำเนินการตามบริบทหรือการนำทางล้วนส่งผลให้แอปของคุณคุ้นเคย
ความคุ้นเคยเป็นจุดอ่อนหลักของเว็บแอปหรือเฟรมเวิร์กที่ใช้อินเทอร์เฟซเว็บ ในทางกลับกัน Xamarin Forms ให้การแมปข้ามแพลตฟอร์มกับองค์ประกอบ UI ที่ผู้จัดจำหน่ายจัดหาให้
ดังนั้นผู้ใช้ของคุณจะได้รับประสบการณ์ที่สอดคล้องกับรูปลักษณ์ทั่วไปของแพลตฟอร์มดังนั้นพวกเขาจึงรู้สึกสบายใจเมื่ออยู่ในแอปของคุณ
ตรงไปตรงมาการกล่าวถึง“ เจ้าของภาษา” ในโฆษณาชวนเชื่อทางการตลาดของคุณไม่ได้หมายความว่าอะไร ใช้ Jasonette เป็นตัวอย่างซึ่งเป็น 'เนทีฟผ่าน HTTP' UI ถูกเก็บไว้บนเว็บเซิร์ฟเวอร์…สวัสดีการเดินทางรอบและการชะลอตัวดังนั้นเราจึงเห็นว่าเนทีฟไม่จำเป็นต้องสันนิษฐานว่ามีประสิทธิภาพดีกว่า!
ดังนั้นเมื่อมองไปที่การเปรียบเทียบในชีวิตจริง Xamarin จึงออกมาเป็น โซลูชันที่โค้งมนที่สุดโดยคำนึงถึงประสิทธิภาพ . แบบฟอร์ม Xamarin ซึ่งไม่ต้องการสวิตช์บริบทเพิ่มเติมข้อเสนอ ประสิทธิภาพเทียบเท่ากับแอพภาษาพื้นเมือง .
ข้อสรุปของฉันคือตัวเลือกการใช้งานของคุณคือสิ่งที่ทำให้แอปของคุณช้าลงแทนที่จะเป็น Xamarin เทียบกับภาษาพื้นเมือง ตัวเลือกอื่น ๆ มีข้อเสียที่ชัดเจนเกี่ยวกับประสิทธิภาพ
ความเป็นไปได้ที่นักออกแบบของคุณจะสร้างแอปที่ดูไม่ซ้ำใครก็เป็นสิ่งสำคัญมากที่ต้องพิจารณาว่าคุณต้องการมอบประสบการณ์การใช้งานที่ดีที่สุดเท่าที่จะเป็นไปได้และทำให้แอปของคุณแตกต่าง
หลายครั้งความเป็นเอกลักษณ์บ่งบอกถึงการสร้างตัวควบคุมภาพเคลื่อนไหวหรือท่าทางที่ดูกำหนดเอง เมื่อไม่พร้อมใช้งานใน Xamarin คุณสามารถใช้ SkiaSharp (กระดาษห่อหุ้มรอบไลบรารีการเรนเดอร์กราฟิกเวกเตอร์ Skia ของ Google) และใช้ประโยชน์จากแนวคิดการแสดงผลแบบกำหนดเองของ Xamarin Forms เพื่อให้เข้าใกล้ฮาร์ดแวร์ได้มากที่สุดเท่าที่จำเป็นในขณะที่เข้ารหัสเสมอ ภาษาสิ่งที่โซลูชันอื่นไม่สามารถนำเสนอได้
บริษัท c กับ s คอร์ปอเรชั่น
ณ จุดนี้คุณมักคิดว่าการเลือกกรอบการทำงานเป็นการตัดสินใจทางธุรกิจด้วย นอกเหนือจากปัจจัยที่อยู่นอกขอบเขตของบทความนี้เช่นความพร้อมด้านทรัพยากรบุคคล Xamarin ยังมีอีกมากมายที่จะนำเสนอโดยเฉพาะเมื่อใช้ร่วมกับ MVVMCross ฉันจะอธิบายรายละเอียดในสี่ด้านที่คุณจะต้องพิจารณาในการตัดสินใจของคุณ:
มากำจัดสิ่งนี้ให้พ้น ๆ ตั้งแต่ต้นปีนี้ Xamarin ให้บริการฟรีสำหรับ freelancers และธุรกิจขนาดเล็กเช่น startups (with Visual Studio Community Edition ). สำหรับองค์กรขนาดใหญ่จะมีสิทธิ์ใช้งาน Visual Studio «ได้อย่างอิสระ»ซึ่งคุณอาจมีอยู่แล้ว Xamarin Forms, MVVMCross และ SkiaSharp นั้นฟรีและโอเพ่นซอร์สทั้งหมด!
ดังที่ได้กล่าวไปแล้วการไปเส้นทาง. Net กับ Xamarin ช่วยให้คุณสามารถพัฒนาแอปของคุณในภาษาเดียวตั้งแต่ต้นจนจบ โซลูชันอื่น ๆ ส่วนใหญ่ต้องการให้โปรแกรมเมอร์ของคุณรู้ภาษาต่างๆ ในกรณีของ คอร์โดวา ตัวอย่างเช่นคุณต้องคล่องแคล่วไม่เพียง แต่ใน HTML, Javascript, CSS แต่ยังอาจเป็น Objective-C, Java และ / หรือ C # หากคุณต้องการเข้าถึง API ของผู้จำหน่ายที่ไม่มีปลั๊กอินที่พร้อมใช้งาน
ความหลากหลายของภาษาที่ใช้ทำให้สวิตช์บริบทมากขึ้นและมีเครื่องมือเพิ่มเติมในการควบคุมซึ่งทำให้ประสิทธิภาพลดลง ในทางกลับกัน Xamarin เป็นโซลูชันแบบ all-in-one: จาก Visual Studio ที่คุณสร้างปรับใช้และดีบักบนทุกแพลตฟอร์ม
แม้ว่าจะไม่เกี่ยวข้องโดยตรงกับ Xamarin แต่คุณยังได้รับคุณสมบัติมากมายใน C # ที่เร่งความเร็วในการพัฒนาโดยเลือก . เน็ตโซลูชั่น . กล่าวคือคุณได้รับประโยชน์จากคุณสมบัติที่ยอดเยี่ยมใน C # 4.5+ เช่นการเชื่อมต่อแบบมัลติเธรดที่ง่ายดายด้วย async / await การปิดและการสะท้อนซึ่งทั้งหมดนี้ได้รับการแสดงเพื่อปรับปรุงประสิทธิภาพ
คุณอาจมีความคิดเกี่ยวกับการใช้โค้ดซ้ำและเป็นไปได้มากว่าคุณคิดว่าโซลูชันทั้งหมดจะเทียบเท่ากันบ้างในเรื่องนี้ ขอโทษที่ต้องพูดว่าเพื่อน แต่คุณคิดผิด!
โปรแกรมเมอร์ในหมู่พวกคุณอาจสงสัยว่าทำไมฉันถึงเสนอให้ใช้ MVVMC ข้ามเลเยอร์ 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 เมื่อเดือนมีนาคมที่ผ่านมาเดิมพันของฉันก็คือมันจะไม่ไปไหนนอกจากไปข้างหน้า นับตั้งแต่การลดราคาและการจับคู่ย้ายไปสู่รูปแบบที่ไม่เสียค่าใช้จ่ายชุมชนก็เติบโตขึ้นการสนับสนุนได้รับการปรับปรุงและผลิตภัณฑ์ยังคงปรับปรุงอยู่ตลอดเวลาอาจจะเร็วขึ้น!
อนาคตดูสดใสสำหรับ Xamarin
จะเขียนโค้ด c++ . ได้ที่ไหน
ฉันตระหนักถึงความจริงที่ว่าฉันอาจจะเปิดตัวหนอนด้วยบทความนี้ อย่าทำให้ฉันเข้าใจผิดมีตัวเลือกอื่น ๆ ที่ควรพิจารณาและฉันขอเชิญคุณให้ทำเช่นนั้นเพราะข้อกังวลของฉันอาจไม่เหมือนกับของคุณ
โปรดทราบว่าหากคุณมีไทม์ไลน์หกสัปดาห์และสี่เดือนหลังจากนั้นคุณยังไม่มีแอปพร้อมแสดงว่าคุณไม่ชนะ นั่นจะทำให้เหลือเวลาสองเดือนครึ่งและเงินจำนวนมากเพื่อฝึกคนในบ้านหรือจ้างคนที่มีความรู้ การยืนยันที่จะสร้างแอป 'เนทีฟ' ณ จุดนั้นอาจเป็นอันตรายต่อชะตากรรมของโครงการของคุณ
Xamarin และเทคโนโลยีที่ใช้ร่วมกันเหล่านี้มอบสิ่งที่ผู้ใช้ของคุณสนใจและสิ่งที่คุณต้องการ ฉันหวังว่าบทความนี้จะช่วยให้คุณตัดสินใจได้ดีเกี่ยวกับกรอบงานที่คุณอาจเลือกใช้สำหรับแอปมือถือตัวถัดไปของคุณ
ที่เกี่ยวข้อง: แอพ Android ที่ดีกว่าโดยใช้ MVVM พร้อมสถาปัตยกรรมที่สะอาด