Flex: คำถามเกี่ยวกับการส่งข้อความไคลเอ็นต์ / เซิร์ฟเวอร์ (RPC หรือซ็อกเก็ต ?)

ฉันกำลังสร้างแอปพลิเคชัน Flex ซึ่งจะดำเนินการตามคำขอของเซิร์ฟเวอร์จำนวนมาก (สมมติว่า การโต้ตอบเกือบทั้งหมดต้องมีการอัปเดตจากเซิร์ฟเวอร์)

ในขณะนี้ฉันกำลังใช้การเรียกกระบวนการระยะไกล แต่ฉันสงสัยว่าถ้าใช้ซ็อกเก็ตจะดีกว่า

กล่าวอีกนัยหนึ่ง อาจจะดีกว่าถ้ารักษาการเชื่อมต่อไว้แทนที่จะทำการโทรหลายสายตามลำดับ ?

สำหรับแอปสาธิตของฉัน ฉันมีลูกค้าเพียง 1 รายเท่านั้น จำนวนไคลเอนต์ที่เชื่อมต่อกับเซิร์ฟเวอร์เป็นปัจจัยสำหรับตัวเลือกนี้หรือไม่?

ขอบคุณ


person aneuryzm    schedule 09.04.2010    source แหล่งที่มา


คำตอบ (1)


หากคุณใช้ซ็อกเก็ต (และในทางปฏิบัติสร้างเซิร์ฟเวอร์ NIO ของคุณเอง ซึ่งอาจใช้ Apache MINA) เป็นไปได้ที่จะได้รับการเพิ่มประสิทธิภาพ แต่ในความคิดของฉัน คุณจะต้องลงทุนงานจำนวนมากกับมัน ฉันรู้ว่าบางคนใช้แนวทางนี้ แต่สำหรับแอปพลิเคชันเฉพาะเจาะจง (เกม Flash ซึ่งคาดว่าจะมีผู้ใช้จำนวนมาก) พวกเขาใช้เวลาหนึ่งเดือนในการสร้างมันขึ้นมา

วิธีแก้ปัญหาอื่น (หากคุณวางแผนที่จะใช้ซ็อกเก็ต) คือการใช้ผลิตภัณฑ์บางอย่างที่นำเสนอช่อง RTMP (LCDS, WebOrb) แต่ไม่ฟรีและในความคิดของฉันก็ไม่คุ้มค่าหากคุณวางแผนที่จะใช้ผลิตภัณฑ์เหล่านี้เพียงเพื่อการโทร RPC ซ็อกเก็ต

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

นอกจากนี้ Flash Player ยังส่งคำขอ RPC ของคุณเป็นชุดเดียว - ตัวอย่างเช่น หากคุณเรียกใช้โค้ด Flex ของคุณ 3 วิธีทีละรายการ ทั้งหมดจะถูกจัดกลุ่มในการเรียก POST เพียงครั้งเดียวเท่านั้น

person Cornel Creanga    schedule 09.04.2010