2017-08-25 8 views
0

アンドロイドで実行されている自分のアプリケーション用にサーバーを構築しました。セットアップが受け入れられたり、間違っていたりすると、あなたから意見が聞こえます。そのため、アーキテクチャはリクエストレスポンのように機能します。 ユーザーはログインするとすべてのアプリが起動し、新しいセッションIDが取得されます。 クライアントとサーバーにキープアライブ接続がありません。リクエストは毎回切断されています。サーバー上のすべてのコマンドについて、セッションIDを最初に確認してから、コマンドまたは要求を計算する必要があります。すべてが完了したら、接続が切断されます。私は接続がサーバーに保持される何かについて考えていたので、サーバーからクライアントに直接データを送信する可能性が出てきました。これには多くの用途があります。しかし一方では、そのスレッドは "有能"ではありません。私はソケットアクセスを同期し、すべてのクラスとアクティビティ間で1ソケットオブジェクトを共有する必要があるので、これは私の意見では良い方法ではありません。しかし、他のアプリやオンラインゲームがどのようにしてデータやメッセージをクライアントに直接送信したかについては疑問を呈しています。これは、接続が保持されていることを意味します。私は彼らがそれをサービスなどで分かち合っていると思います。これは新しい問題に直面しています。私はfirebaseクラウドメッセージングを使用することができますが、100スレッド以上がサーバ上で実行されている場合は非常に遅いです。より良い解決策は、メインサーバから分離して実行されている第2のサーバプログラムをコード化し、クライアントへの接続を維持することです。これは私の解決策です。Appsのクライアント/サーバーアーキテクチャー

自分のアーキテクチャが良いか悪いのかを知りたいだけです。

ご迷惑をおかけしても、私のスマートフォンに書いてあります。

答えて

1

私の意見では、接続は比較的高価なリソースなので、接続の開閉は良い方法です。 だから、私はあなたが現在実装しているアーキテクチャに賛成だと言います。

  • オープン接続
  • 実行操作
  • 閉じる接続