0

Androidベースのチャットを実装しています。できるだけ低レベルに近づけたい。理由は簡単で、仕組みをもっと知りたいからです。ソケットを使用してサーバーに接続しています。単一のソケットですべてがうまく機能していますが、私の質問は次のとおりです。アプリケーションを使用しているユーザーが複数のチャット ウィンドウを開く場合、複数の接続が必要ですか。もしそうなら、それらの接続を確立するための最良のアプローチは何ですか。必要に応じて接続を開く Util クラスのようなものを使用することを考えていましたが、このクラスに必要なアーキテクチャはまだよくわかりません。たとえば、それをシングルトン クラスにすることは理にかなっていますか? 開いているすべての接続を追跡し、不要になったら閉じることができますか。どんな助けでも大歓迎です。

PS何かを見逃した場合は、遠慮なく教えてください。できるだけ明確になるように質問を編集しようとします。

4

1 に答える 1

0

これは明らかにアーキテクチャ上の問題ですが、いくつか考えてみます。これはあなたの設定次第だと思います。

中央サーバーを使用する代わりに、「連絡先」に直接接続しているようです。チャット セッションを開始するために IP アドレスを直接決定して使用していると思います。この場合、はい、進行中のチャット セッションごとに接続を開く必要があります。

代わりにチャット サーバーを使用している場合、理論的には、そのサーバーへの接続は 1 つだけ必要です。もちろん、このサーバーには各ユーザーへの接続が必要です。チャット サーバーを使用すると、より多くの作業が必要になりますが、よりユーザー フレンドリーなエクスペリエンスが可能になります。たとえば、サーバーにユーザー名を登録すると、IP を知らなくても、ユーザー名を介して他の人と話すことができます。ただし、既知の IP アドレスまたは DNS 名を使用してサーバーに接続する必要があります。

クラス アーキテクチャに関しては、「依存性注入」と呼ばれるものを確認することを強くお勧めします。実際の依存性注入は、通常、インターフェイスを介してサービスやプロバイダーと対話することを意味します。インターフェイスを実装する実際のクラスもユーザーが作成し、実行時に「注入」されます。これにより、アプリケーションを特定のテクノロジーまたはプロトコルから切り離すことができます。つまり、いつの日か、サービスを使用するコードを変更することなく、カスタム ソケットの実装を、たとえば Web サービスの実装に置き換えることができます。さらに、ほとんどの依存性注入フレームワークでは、注入時にクラスをインスタンス化して使用する方法を指定できます。構成を使用して、1 つのクラスのみがインスタンス化されるかどうかを指定できます (実質的にシングルトン)。

于 2013-11-14T21:56:42.780 に答える