Android——聊天应用程序的体系结构

Android——聊天应用程序的体系结构,android,python,sqlite,server-side,Android,Python,Sqlite,Server Side,我有一个关于Android架构的问题。我开始使用Android,在使用了一些静态应用程序之后,我想构建一个类似聊天应用程序的动态应用程序。我的问题是: 这是我对聊天应用程序基本架构的理解 我假设聊天对话总是通过服务器来来回回,对吗 我知道Android本机使用sqlite。我是否可以在服务器上使用其他数据库,还是应该坚持使用sqlite 服务器端代码是否需要用Java编写,以便与Android配合使用,或者我可以用我更精通的语言编写,比如Python 最后,如果消息需要以某种方式进行转换,是在

我有一个关于Android架构的问题。我开始使用Android,在使用了一些静态应用程序之后,我想构建一个类似聊天应用程序的动态应用程序。我的问题是:

这是我对聊天应用程序基本架构的理解

  • 我假设聊天对话总是通过服务器来来回回,对吗
  • 我知道Android本机使用sqlite。我是否可以在服务器上使用其他数据库,还是应该坚持使用sqlite
  • 服务器端代码是否需要用Java编写,以便与Android配合使用,或者我可以用我更精通的语言编写,比如Python
  • 最后,如果消息需要以某种方式进行转换,是在发送前在用户设备上进行转换,还是在服务器上进行转换
我认为聊天对话总是会过去,对吗 通过服务器往返

这取决于你。如果您想实现P2P通信,请随意执行;)但我建议在客户端之间使用服务器(如果您想实现群聊呢?->在p2p中更复杂)。除此之外:您如何知道其他客户端的ip地址?使用服务器,您可以轻松地“登录”或“注销”,并查看当前还有谁可用

我知道Android本机使用sqlite。有没有可能我 可以在服务器上使用其他数据库,还是应该使用sqlite

也取决于你。服务器的数据库不必与Android中使用的数据库相同。我从未在服务器端使用过sqlite。自己选择吧

服务器端代码是否需要使用Java才能很好地发挥作用 有了安卓系统,或者我可以把它编码进去,也许我更喜欢它 精通-比如Python

我建议您通过HTTP与服务器通信。因此,您可以使用任何喜欢使用的编程语言

最后,如果消息需要以某种方式进行转换,那么 在发送前在用户设备上发生,还是在 服务器

你到底是什么意思?您的服务器将提供一个类似“sendMessage(messageObject,target,…”)的接口—您可以决定messageObject的外观。此外,服务器可以修改对象并将其发送给客户端

如何开始 我强烈建议您看看:

使用GCM,您可以在服务器到达时立即发送/接收消息

我还为您提供了一个使用GCM实现聊天的教程:

否则,如果您不想使用推送服务,可以查看本教程:

在本例中,他们使用套接字进行客户端和服务器之间的通信

我认为聊天对话总是会过去,对吗 通过服务器往返

这取决于你。如果您想实现P2P通信,请随意执行;)但我建议在客户端之间使用服务器(如果您想实现群聊呢?->在p2p中更复杂)。除此之外:您如何知道其他客户端的ip地址?使用服务器,您可以轻松地“登录”或“注销”,并查看当前还有谁可用

我知道Android本机使用sqlite。有没有可能我 可以在服务器上使用其他数据库,还是应该使用sqlite

也取决于你。服务器的数据库不必与Android中使用的数据库相同。我从未在服务器端使用过sqlite。自己选择吧

服务器端代码是否需要使用Java才能很好地发挥作用 有了安卓系统,或者我可以把它编码进去,也许我更喜欢它 精通-比如Python

我建议您通过HTTP与服务器通信。因此,您可以使用任何喜欢使用的编程语言

最后,如果消息需要以某种方式进行转换,那么 在发送前在用户设备上发生,还是在 服务器

你到底是什么意思?您的服务器将提供一个类似“sendMessage(messageObject,target,…”)的接口—您可以决定messageObject的外观。此外,服务器可以修改对象并将其发送给客户端

如何开始 我强烈建议您看看:

使用GCM,您可以在服务器到达时立即发送/接收消息

我还为您提供了一个使用GCM实现聊天的教程:

否则,如果您不想使用推送服务,可以查看本教程:

在本例中,他们使用套接字进行客户端和服务器之间的通信

我假设聊天对话总是通过服务器来来回回,对吗

大多数现代聊天解决方案都使用服务器后端,但如果您愿意,可以尝试在较少的服务器上实现它。不过,我还是建议使用服务器后端,因为它简化了对聊天历史记录、群聊天、参与者在线/离线状态等的管理

顺便说一下,您不需要自己开发服务器端解决方案。目前市场上有很多提供商,您可以根据需要的一系列功能尝试其中一个提供商

您可能也会发现这很有用

我知道Android本机使用sqlite。我是否可以在服务器上使用其他数据库,还是应该坚持使用sqlite

这取决于你。您可以使用服务器上的任何数据库

服务器端代码是否需要用Java编写,以便与Android配合使用,或者我可以用我更精通的语言编写,比如Python

服务器端API也可以用另一种语言编写。例如,我见过使用RubyonRailsAPI服务器实现的解决方案

最后,如果一条消息需要转换