处理Android上的用户连接 - 体系结构提示

时间:2013-11-14 21:27:24

标签: java android sockets architecture client

我正在实施基于Android的聊天。我想让它几乎尽可能低。 原因很简单 - 我希望获得更多关于事物如何运作的知识。 我正在使用套接字连接到服务器。一个插槽一切都运行良好,但我的问题是: 当使用该应用程序的用户打开多个聊天窗口时,我是否需要多个连接。如果是这样的话 - 建立这些联系的最佳方法是什么。 我正在考虑使用类似于在需要时打开连接的Util类,但我仍然不太确定这个类必须具有什么样的架构。例如,将它作为单例类是否有意义?我是否能够跟踪所有已打开的连接并在不再需要时关闭它们。 任何帮助,将不胜感激。

P.S。如果我错过了什么,请随时告诉我什么,我会尽量编辑问题。

1 个答案:

答案 0 :(得分:0)

这显然更像是一个架构问题,但我会提出一些想法。我会说这取决于你的设置。

听起来您直接连接到“联系人”,而不是使用中央服务器。我假设您正在确定并直接使用IP地址来启动聊天会话。如果是这种情况,那么是的,您将需要为您正在进行的每个聊天会话打开一个连接。

如果您使用的是聊天服务器,那么从理论上讲,您只需要与该服务器建立一个连接。当然,该服务器需要连接到每个用户。使用聊天服务器需要您做更多的工作,但它可以提供更友好的用户体验。例如,在服务器上注册您的用户名将允许您通过其用户名与其他人交谈,而不必知道他们的IP。但是,您仍然需要通过众所周知的IP地址或DNS名称连接到服务器。

至于类架构,我强烈建议你查看一下名为“Dependency Injection”的东西。实践中的依赖注入通常意味着您通过接口与服务和提供者进行交互。实现接口的实际类也是由您编写的,并在运行时“注入”。这允许您将应用程序与特定技术或协议分离,这意味着有一天,您可以使用Web服务实现替换自定义套接字实现,而无需更改使用该服务的代码。此外,大多数依赖注入框架允许您指定在注入类时如何实例化和使用类。您可以使用配置来指定是否只实例化一个类(实际上是单例),或者每次请求服务时是否实例化新类。