Mars 是微信官方的终端基础组件, 是一个业务性无关,平台性无关 使用C++ 编写的基础组件。目前支持Android、iOS、Mac、Windows 平台.
它主要包括以下几个部分:
- Comm: 基础库、包括Socket、线程、消息队列、协程等基础工具;
- Xlog: 通用日志模块、充分考虑移动终端的特点,提供高性能、高可用、安全性、容错性的日志功能.
- SDT: 网络诊断模块
- STN: 信令传输网络模块,负责终端与服务器的小数据信令通道.
总的来说:
- Mars 中包括一个完整的高性能的日志组件 xlog;
- Mars 中 STN 是一个跨平台的 Socket 层解决方案,并不支持完整的 HTTP 协议;
- Mars 中 STN 模块是更加贴合“移动互联网”、“移动平台”特性的网络解决方案,尤其针对弱网络、平台特性等有很多的相关优化策略。
Mars常用术语:
- 长连接: 维持一个Socket连接,用来发送网络请求以及和服务器同步消息.
- 短连接: 每次请求都需要重新建立新的连接,协议为简单的HTTP协议.
- seq: 也就是上层所看到的taskid,是用来标识任务的唯一性的,长连上也通过比较seq的制对应请求包和回包的关系.
- Noop/Nooping: 心跳,为了维持长连接和检测长连是否连通会定时向服务器发送一个比较小的数据包,服务器需要回包. 比如设置2s时间间隔一次,维持心跳.
- Signalling: 信令包,为了维持手机网卡的活跃态以及用来长时间霸占基站的信令进儿提高发送数据的速度. 可选功能.
- Longlink identify check: 长连接刚建立时用来绑定用户身份与长连的对应关系以及同步消息,可用 sync 代替。
- Sync: 和服务器同步消息。
- Push: 服务器向客户端推送数据。