ฉันมีคำถามข้อหนึ่งที่ยากจะถามหรือตอบในฟอรัม เมื่อเร็ว ๆ นี้ฉันได้รับมอบหมายให้ออกแบบ (และใช้งาน) แอปพลิเคชันที่จะทำงานบนระบบปฏิบัติการ Android เนื่องจากฉันมาจากโลก .net ฉันจึงตัดสินใจใช้เฟรมเวิร์ก Xamarin.Android (ก่อนหน้านี้เรียกว่า mono สำหรับ Android) ฉันค้นคว้าเกี่ยวกับกรอบงานเป้าหมายและคิดการออกแบบคร่าวๆ แต่เนื่องจากฉันยังใหม่กับโลก Android ฉันไม่แน่ใจว่าการออกแบบของฉันดีที่สุด (หรือเป็นที่ยอมรับก็ได้) ฉันจะพยายามอธิบายให้สั้นที่สุดเท่าที่จะทำได้ ข้อกำหนดพื้นฐานสำหรับการสมัครคือ:
- แอปพลิเคชันจะต้องสามารถจัดเตรียม GUI ที่แตกต่างกันให้กับผู้ใช้ที่แตกต่างกันได้
- แอปพลิเคชันจะต้องแสดงข้อมูลที่ดึงมาจากเซิร์ฟเวอร์
- แอปพลิเคชันจะต้องจัดเตรียมวิธีการสำหรับผู้ใช้ในการแก้ไขข้อมูลเซิร์ฟเวอร์
- เมื่อผู้ใช้รายใดรายหนึ่งแก้ไขข้อมูลเซิร์ฟเวอร์ ผู้ใช้รายอื่นจะต้องได้รับแจ้ง
จากการวิจัยของฉัน ฉันพบสิ่งต่อไปนี้:
เพื่อให้ GUI ที่กำหนดเองสำหรับผู้ใช้แต่ละคน แอปพลิเคชันจะตรวจสอบสิทธิ์ผู้ใช้ก่อนดึงไฟล์ xml จากเซิร์ฟเวอร์ซึ่งจะใช้ในการสร้าง GUI โดยทางโปรแกรม เนื่องจากฉันต้องรองรับการหมุนอุปกรณ์และอุปกรณ์ต่างๆ จึงต้องทำงานหนักมาก ดังนั้นยินดีรับฟังความคิดเห็นใดๆ เกี่ยวกับเรื่องนี้
ฉันคิดว่าวิธีที่ดีที่สุดสำหรับแอปพลิเคชันในการสื่อสารกับเซิร์ฟเวอร์คือการเรียกบริการที่ใช้ REST (GET เพื่อดึงข้อมูลเริ่มต้นและ PUT เพื่ออัปเดตสถานะเซิร์ฟเวอร์)
เมื่อผู้ใช้คนใดคนหนึ่งแก้ไขสถานะเซิร์ฟเวอร์ ผู้ใช้รายอื่นทั้งหมดจะได้รับการแจ้งเตือนโดยใช้การแจ้งเตือน (การส่งข้อความบนคลาวด์ของ Google หรือ GCM ซึ่งมาแทนที่ C2DM เก่า) เนื่องจากกิจกรรมส่วนใหญ่จะอาศัยการแจ้งเตือนเพื่อแสดงการอัปเดต ฉันคิดว่าวิธีที่ดีที่สุดในการใช้งานคือการสร้างบริการ Android บริการจะเริ่มต้นด้วยแอปพลิเคชันและจะทำงานตราบเท่าที่แอปพลิเคชัน เมื่อบริการเริ่มต้นขึ้น บริการจะลงทะเบียนด้วยตนเองกับ GCM และใช้การออกอากาศเพื่อแจ้งกิจกรรมปัจจุบันว่ามีการเปลี่ยนแปลงบางอย่าง
ฉันขอโทษสำหรับการโพสต์ที่ยาว แต่ฉันพยายามให้สั้นที่สุดเท่าที่จะทำได้ อย่างที่ฉันบอกไปแล้ว นี่เป็นการออกแบบที่หยาบมาก ดังนั้นทุกความคิด แนวคิด หรือคำวิจารณ์ก็ยินดีเป็นอย่างยิ่ง
อูโรช