我对Android的架构有疑问。我开始使用Android并在一些静态应用程序之后,我想构建一个动态类型的应用程序,如聊天应用程序。我的问题是:
这是我对聊天应用的基本架构的理解。
答案 0 :(得分:5)
假设聊天对话总是通过,我是否正确 通过服务器往返?
这取决于你。如果你想实现P2P通信,请随意这样做;)但我会建议在客户端之间使用服务器(如果你想实现群聊怎么办? - > p2p中更复杂)。除此之外:您如何知道其他客户的IP地址?使用服务器,您可以轻松“登录”或“注销”,并查看当前还有哪些可用等等。
据我所知,本机Android使用的是sqlite。我有可能吗? 可以在服务器上使用其他数据库,还是应该坚持使用sqlite?
也取决于你。服务器的数据库不必与Android中使用的数据库相同。我从未在服务器端使用过sqlite。十二点选择它!
服务器端代码是否需要使用Java以便它能够很好地运行 使用Android或我可以编写它,也许是我更多的东西 精通 - 比如Python?
我建议您通过HTTP与服务器进行通信。因此,您可以使用任何您喜欢的编程语言。
最后,如果需要以某种方式转换消息,那就这样做 在发送之前发生在用户的设备上或发生这种情况 服务器?
你到底是什么意思?您的服务器将提供类似“sendMessage(messageObject,target,....”)的接口 - 您可以决定messageObject的外观。此外,服务器可以修改对象并将其发送给客户端。
我强烈建议你看一下:
使用GCM,您可以在服务器到达时立即发送/接收消息。
我还有一个教程,可以帮助您实现与GCM的聊天:
Create an Instant Messaging app using Google Cloud Messaging (GCM).
否则,如果您不想使用推送服务,可以查看本教程:
在这个例子中,他们使用套接字进行客户端和服务器之间的通信。
答案 1 :(得分:0)
我是否正确假设聊天对话始终通过服务器往返?
大多数现代聊天解决方案都使用服务器后端,但是您可以根据需要尝试减少在服务器上的实现。但是,我还是建议您使用服务器后端,因为它可以简化聊天记录,群组聊天,参与者的在线/离线状态等管理。
顺便说一句,您不需要自己开发服务器端解决方案。当前市场上有很多提供商,您可以根据所需的功能集尝试其中的一种。
您可能还会发现此article comparing products of several backend providers有用。
我知道Android原生使用sqlite。我是否可以在服务器上使用其他数据库,还是应该坚持使用sqlite?
由您决定。您可以使用服务器上的任何数据库。
服务器端代码是否需要使用Java才能在Android上很好地发挥作用,或者我可以使用它编写代码?也许我比较精通-例如Python?
服务器端API也可以用另一种语言编写。例如,我已经看到了Ruby-on-Rails API服务器实现的解决方案。
最后,如果需要以某种方式转换邮件,这是在发送之前在用户设备上发生的还是在服务器上发生的?
据我了解,您的意思是编辑邮件选项。 在这种情况下,在与我一起工作的解决方案中,客户端应用程序向服务器发送了一个请求,以更新历史记录中的消息,并且一旦从服务器中获取了聊天记录,它就会包含更新后的消息。