Skip to content
garryyan edited this page Jun 13, 2022 · 32 revisions

Mars -- 微信跨平台跨业务基础组件

Mars 是什么

Mars 是微信官方的终端基础组件, 是一个业务性无关,平台性无关 使用C++ 编写的基础组件。目前已接入微信 Android、iOS、Mac、Windows、WP、UWP 等客户端。注意:目前仅支持Android、iOS、Mac、Windows 平台,其他平台会在后续的版本中很快支持

它主要包括以下几个部分:

  1. Comm:基础库,包括socket、线程、消息队列、协程等基础工具;
  2. Xlog:通用日志模块,充分考虑移动终端的特点,提供高性能、高可用、安全性、容错性的日志功能
  3. SDT:网络诊断模块;
  4. STN:信令传输网络模块,负责终端与服务器的小数据信令通道。包含了微信终端在移动网络上的大量优化经验与成果,经历了微信海量用户的考验。

为什么使用 Mars

  Mars AFNetworking OkHttp
跨平台 yes no no
实现语言 C++ Objective-C Java
具体实现 基于 socket 基于 HTTP 基于 HTTP
支持完整的 HTTP no yes yes
支持长连 yes no no
DNS 扩展 yes no yes
结合移动 App做设计 yes no no

总的来说

  1. Mars 中包括一个完整的高性能的日志组件 xlog;
  2. Mars 中 STN 是一个跨平台的 socket 层解决方案,并不支持完整的 HTTP 协议;
  3. Mars 中 STN 模块是更加贴合“移动互联网”、“移动平台”特性的网络解决方案,尤其针对弱网络、平台特性等有很多的相关优化策略。

Mars 是一个结合移动 App 所设计的基于 socket 层的解决方案,在网络调优方面有更好的可控性,不过对于 HTTP 完整协议的支持,已经考虑后续版本会加入。Mars在微信用的应用场景主要是:普通CGI请求类似收发消息收发语音,业务CGI支付请求等。

如果你想一次学习,多个平台使用,Mars 是一个比较好的选择,如果你面对的用户是移动网络下的用户,Mars 更是一个比较好的选择。但如果你只是想使用完整的 HTTP 协议,Mars暂时可能不适合你。如果你的应用中存在大量发送大数据的场景,Mars也不是一个好的选择,不建议使用。

如何使用 Mars

在使用之前请务必先仔细阅读以下文档:

Mars Android 接入指南
Mars iOS/OS X 接入指南
Mars Windows 接入指南
Mars 常用术语
Mars 常见问题
Mars 自定义扩展
Mars sample 使用说明

Mars 获取的信息

Mars 在运行时只获取必要的信息以保证在不同的设备上和不同的网络下正常运行,这些信息不涉及系统敏感权限和用户隐私相关的内容。同时 Mars 不含上报逻辑,即不会上报获取到的信息。有关 Mars 获取信息的类型及用途,请查看 Mars SDK 个人信息保护规则 了解详情。

更多文章

Android 微信智能心跳方案

微信 Mars — 移动互联网下的高质量网络连接探索(小蛮腰科技大会PPT)

微信终端跨平台组件 Mars 系列(一) - 高性能日志模块 xlog

微信 Mars:客户端跨平台组件的开发经验

微信终端跨平台组件 Mars 系列 (二) - 信令传输超时设计

微信终端跨平台组件 Mars 系列(三)连接超时与 IP&Port 排序

微信终端跨平台组件 Mars 系列 - 我们如约而至

微信客户端怎样应对弱网络(GMCC会议PPT)