สถาปัตยกรรมแอปพลิเคชัน Xamarin.Android

ฉันมีคำถามข้อหนึ่งที่ยากจะถามหรือตอบในฟอรัม เมื่อเร็ว ๆ นี้ฉันได้รับมอบหมายให้ออกแบบ (และใช้งาน) แอปพลิเคชันที่จะทำงานบนระบบปฏิบัติการ Android เนื่องจากฉันมาจากโลก .net ฉันจึงตัดสินใจใช้เฟรมเวิร์ก Xamarin.Android (ก่อนหน้านี้เรียกว่า mono สำหรับ Android) ฉันค้นคว้าเกี่ยวกับกรอบงานเป้าหมายและคิดการออกแบบคร่าวๆ แต่เนื่องจากฉันยังใหม่กับโลก Android ฉันไม่แน่ใจว่าการออกแบบของฉันดีที่สุด (หรือเป็นที่ยอมรับก็ได้) ฉันจะพยายามอธิบายให้สั้นที่สุดเท่าที่จะทำได้ ข้อกำหนดพื้นฐานสำหรับการสมัครคือ:

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

จากการวิจัยของฉัน ฉันพบสิ่งต่อไปนี้:

เพื่อให้ GUI ที่กำหนดเองสำหรับผู้ใช้แต่ละคน แอปพลิเคชันจะตรวจสอบสิทธิ์ผู้ใช้ก่อนดึงไฟล์ xml จากเซิร์ฟเวอร์ซึ่งจะใช้ในการสร้าง GUI โดยทางโปรแกรม เนื่องจากฉันต้องรองรับการหมุนอุปกรณ์และอุปกรณ์ต่างๆ จึงต้องทำงานหนักมาก ดังนั้นยินดีรับฟังความคิดเห็นใดๆ เกี่ยวกับเรื่องนี้

ฉันคิดว่าวิธีที่ดีที่สุดสำหรับแอปพลิเคชันในการสื่อสารกับเซิร์ฟเวอร์คือการเรียกบริการที่ใช้ REST (GET เพื่อดึงข้อมูลเริ่มต้นและ PUT เพื่ออัปเดตสถานะเซิร์ฟเวอร์)

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

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

อูโรช


person Uroš    schedule 15.05.2013    source แหล่งที่มา


คำตอบ (1)


ฉันมีแนวโน้มที่จะขนส่ง / จัดการการกำหนดค่า GUI เป็น JSON มากกว่า

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

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

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

person manadart    schedule 15.05.2013
comment
ขอบคุณสำหรับคำตอบ. ฉันตั้งใจจะใช้ไลบรารี PushSharp เนื่องจากเป็นไปได้ค่อนข้างมากที่สักวันหนึ่งแอปจะทำงานบน iPhone ด้วยเช่นกัน ดังนั้นฉันจะใช้ไลบรารีเดียวกันเพื่อแจ้งให้ลูกค้าเหล่านั้นทราบ ฉันจะดูที่ห้องสมุด RestSharp คุณช่วยชี้ให้ฉันดูตัวอย่างวิธีการสร้าง GUI โดยใช้ xml / json ได้ไหม - person Uroš; 17.05.2013
comment
ฉันเดาว่าคุณจะมีเอกสาร JSON/XML ต่อผู้ใช้และกิจกรรมที่สร้างเนื้อหาแบบไดนามิกโดยใช้เทคนิคบางอย่างเช่นนี้: stackoverflow.com/questions/6216547/ - person manadart; 20.05.2013
comment
คำตอบนี้เป็นประโยชน์หรือไม่? ;) - person manadart; 10.09.2013