引言

在开发IM即时通讯应用时,架构设计至关重要。设计应兼顾灵活性与可扩展性,但同时要避免陷入过度设计的误区。过度设计
非常容易导致项目复杂性增加,影响项目进展;而提前设计则可能无法应对未来的变化。

客户端

客户端使用原生Android进行开发,语言选型为Java和Kotlin的混合模式。由于之前大多使用Java开发Android应用,此次项目中希望通过实战来深入学习Kotlin。

基础技术

  • 数据库MMKVObjectBox

    对于IM应用,消息存储和读取的效率至关重要。于是ObjectBox,这款数据库正是由开发Greendao团队的另一款高效数据库,因其比传统的SQLite有更高的性能表现,且API简洁易用,非常适合大规模消息数据的存储需求。另一方面,MMKV作为高效的键值对存储方案,由于其在多进程情况下的稳定性,成为了SharedPreference的理想替代品,避免了并发访问带来的问题。

  • 实时通信:采用WebSocket协议。

    即时通讯的核心在于消息的实时性可靠性。传统的轮询和长轮询虽然能实现持续连接,但它们常常伴随着高延迟和资源浪费的问题。而WebSocket作为全双工通信协议,能够实现客户端与服务器之间的低延时双向数据传输,极大提升了通信效率。在握手之后,WebSocket通过一个单一的持久连接保持双向通信,这不仅减少了网络开销,还显著提升了消息的传输速度。

  • 网络请求:使用https协议。

  • 架构设计:采用MVVM架构。

    为了更好地实现代码的解耦和复用,选择了MVVM架构。该架构通过将业务逻辑、UI和数据管理分离,简化了复杂的UI状态管理,同时提升了代码的可维护性和扩展性。在使用过程中,可以更好地处理数据与UI的绑定,确保在界面更新时能够保持业务逻辑的独立性。