我需要爲學校製作在Android上運行的應用。其實有兩個應用程序,一個客戶端和一個服務器。 Ther服務器運行在PC上,而客戶端運行在Android設備上。我想知道什麼是最好的技術。我知道RMI和WebServices沒有在Android中實現,因此有什麼選擇(除了以傳統方式實際與套接字進行通信之外)。我沒有考慮的一個替代方案是REST,但是我需要能夠在其他客戶做出某些事情時通知客戶,類似於玩家A通知玩家B他做出了行動的基本遊戲。如我所說,套接字可以做到這一點,但與RMI和Web服務相比,它們只是低級別的,並且只是希望將它們作爲最後的手段。適用於客戶端 - 服務器Android應用的最佳技術
回答
保持簡單。使用REST並讓客戶端輪詢更新。
另外,如果你到一個點下來,你需要擴展的道路,這種解決方案實際上是相當容易的擴展,因爲你的服務器並不需要保持連接。因爲有一個特定的服務器和客戶端之間沒有共享的狀態(有共享應用和客戶端之間的服務器),你可以很容易地添加更多的服務器來處理查詢,並把它們背後負載平衡器。
您還可以添加緩存,以便在投票只是獲取而不引起響應的重新計算完全相同的響應。遊戲狀態發生變化時,您可以讓後端遊戲狀態服務器更新緩存。這會讓你更頻繁地進行調查,並且仍然具有非常靈活的可擴展架構。
對於傳統上用於即時通信的回合制遊戲,你可以看看XMPP(例如Smack)。使用C2DM創建用於推送通知的遊戲也很有趣。
您也可以看看這實質上是在球員動作被送入一個永無止境的HTTP響應HTTP流。
或者,您可以查看更適合實時遊戲但仍適用的二進制消息傳遞系統,如RabbitMQ(平穩回合制遊戲出了什麼問題?)。
HTTP流式傳輸的問題,特別是在基於回合的遊戲場景中,服務器必須保持連接狀態,在這種情況下,每場遊戲需要2個連接。對於大多數Web服務器(不是全部),打開的連接內存密集,這意味着這種方法不能很好地擴展,因爲大部分時間都花在等待用戶和浪費資源。 – cdeszaq
你說得對 - HTTP流看起來不可擴展。儘管如此,使用C2DM將是一個非常好的解決方案。 –
我將不得不考慮Smack,看看我能用它做什麼。如果它主要用於即時消息傳遞,那麼它可能不是最好的解決方案......但它可能比這更強大。感謝您的建議。 –
- 1. 適用於java ee應用程序的最佳免費技術
- 2. 應使用哪種Java技術在服務器端構建客戶端 - 服務器應用程序?
- 3. 在C#中使用客戶端服務器技術的Windows Store應用程序
- 4. .NET 2.0客戶端將使用的服務的技術選擇
- 5. 查找適合的雲客戶端/服務器技術堆棧的故障
- 6. 服務器從客戶端接收分塊數據的技術
- 7. 什麼是DBMS中的客戶端/服務器技術?
- 8. 實時無服務器聊天應用程序的最佳協議\技術
- 9. 適用於Linux *的最佳sql客戶端窗口管理器
- 10. JAX-WS用於調用Web服務的異步客戶端技術
- 11. Java/Tomcat服務器的最佳Comet/Push技術?
- 12. 通過適用於Android的PHP服務器進行客戶端與客戶端通信應用程序
- 13. 現代客戶端/服務器身份驗證技術
- 14. 廣播事件 - 適用於服務器端,但不適用於客戶端
- 15. 用於Windows平臺的最佳技術?
- 16. 客戶端Java Web技術
- 17. 服務器端與客戶端端編碼的最佳實踐
- 18. 當前技術構建基於瀏覽器的應用程序與實時客戶端 - 服務器交互
- 19. gui的應用服務器/客戶端
- 20. 客戶端與服務器術語
- 21. 適用於iPad 1和iPad 2 GPU確定的最佳技術?
- 22. Android客戶端服務器
- 23. 適用於重型AJAX Java應用程序的最佳服務器端框架
- 24. 網絡服務VS客戶端 - 服務器分佈式計算技術
- 25. 適用於小型Java應用程序的最佳桌面部署技術
- 26. RIA開發的客戶端和服務器端調試有哪些技術
- 27. 客戶端(Android應用程序) - 服務器(Java應用程序)
- 28. C#服務器客戶端應用程序(一個服務器多客戶端)
- 29. 適用於Windows Vista的最佳Subversion客戶端(64位)
- 30. 服務器的客戶端應用程序的Android客戶端VS僅
使用其餘的我將在「檢查,如果其他玩家取得了他的行動」的無限循環一個用戶。這是相當CPU密集型的,也會在服務器上做更多的請求。另一個問題是,一旦建立了「遊戲室」,我可能需要兩個用戶通過peer2peer進行通信。 –
很好的解釋哥們。可以分享一些鏈接來知道這件事嗎? – Dharmendra
@Pazvanti - 設置任何輪詢時,您總是需要在輪詢之間有某種間隔。你不能在沒有某種等待的情況下把它扔進一個循環。客戶端到客戶端的通信也可以通過服務器基礎設施完成。根據您希望事情的響應程度,您可以適當調整輪詢時間。 – cdeszaq