Skip to content
garryyan edited this page Dec 30, 2016 · 32 revisions

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

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

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

  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 是一个比较好的选择,如果你面对的用户是移动网络下的用户,Mars 更是一个比较好的选择。但如果你只是想使用完整的 HTTP 协议,Mars暂时可能不适合你。

如何使用 Mars

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

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

为了方便大家更容易的接入 Mars 或讨论相关技术,大家可加入 QQ 交流群 581426866。为了方便大家交流,入群请注明姓名与公司等信息。

group ##更多文章

Android 微信智能心跳方案

[微信 Mars — 移动互联网下的高质量网络连接探索(小蛮腰科技大会PPT)] (https://github.com/WeMobileDev/article/blob/master/%E5%BE%AE%E4%BF%A1Mars%20%E2%80%94%20%E7%A7%BB%E5%8A%A8%E4%BA%92%E8%81%94%E7%BD%91%E4%B8%8B%E7%9A%84%E9%AB%98%E8%B4%A8%E9%87%8F%E7%BD%91%E7%BB%9C%E8%BF%9E%E6%8E%A5%E6%8E%A2%E7%B4%A2.pdf)

[微信终端跨平台组件 Mars 系列(一) - 高性能日志模块 xlog] (http://mp.weixin.qq.com/s/cnhuEodJGIbdodh0IxNeXQ)

[微信 Mars:客户端跨平台组件的开发经验] (http://mp.weixin.qq.com/s/obfHNHYXDZDMGrZd-TpRGA)

[微信终端跨平台组件 Mars 系列 (二) - 信令传输超时设计] (http://mp.weixin.qq.com/s/PnICVDyVuMSyvpvTrdEpSQ)

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

[微信客户端怎样应对弱网络(GMCC会议PPT)] (https://github.com/WeMobileDev/article/blob/master/%E5%BE%AE%E4%BF%A1%E5%AE%A2%E6%88%B7%E7%AB%AF%E6%80%8E%E6%A0%B7%E5%BA%94%E5%AF%B9%E5%BC%B1%E7%BD%91%E7%BB%9C.pdf)