当前位置: 首页 > 软件库 > 程序开发 > 常用工具包 >

Mars

微信客户端跨平台组件
授权协议 MIT
开发语言 C/C++
所属分类 程序开发、 常用工具包
软件类型 开源软件
地区 国产
投 递 者 勾海超
操作系统 跨平台
开源组织 腾讯
适用人群 未知
 软件概览

Mars 是微信官方的终端基础组件,是一个使用 C++ 编写的业务性无关、平台性无关的基础组件。目前已接入微信 Android、iOS、Mac、Windows、WP 等客户端。

主要包括以下几个部分:

  • COMM:基础库,包括socket、线程、消息队列、协程等基础工具;

  • XLOG:通用日志模块,充分考虑移动终端的特点,提供高性能、高可用、安全性、容错性的日志功能;

  • SDT:网络诊断模块;

  • STN:信令传输网络模块(核心模块),负责终端与服务器的小数据信令通道。包含了微信终端在移动网络上的大量优化经验与成果,经历了微信海量用户的考验。

Mars 最早起源于微信的实际发展需要。由于微信多平台、亿级用户,微信基础功能的修改影响重大。但不同平台不同的实现导致众多平台上很难统一,一方面不利于质量把关,可能存在重大隐患,一方面也不利于微信对基础研究的深入。

因此,微信开始了跨平台基础组件的开发,并且在微信中沉淀多年。随着基础组件的发展与稳定,他们希望通过开源的力量进一步的提升微信的基础,并且也期待行业的互相交流与促进,因此启动了Mars项目。

微信的网络层设计到很多不同的业务,在微信中使用到的绝大部分功能,都是基于Mars提供的网络组件,包括文本消息、语音消息、朋友圈等核心功能。只有少部分业务不在范围内,例如VOIP、Webview等。微信中使用到的网络服务,大体分为两种类型:信令网络、数据网络。其中STN负责信令网络,CDN组件则负责数据网络。但由于CDN涉及到腾讯内部的CDN服务,因此在Mars的开源列表中并没有包含CDN部分。

SDT网络诊断模块提供了最基础的检测能力,需要由使用者自己组合使用。各个平台的Reachability API能反映的情况有局限,无法应对复杂的网络诊断,事实上有一些开源项目就是为了替换系统API。微信由于自身特点对网络诊断要求很高,因此将它作为基础的跨平台组件进行开发维护。

STN是微信的信令传输网络,也可以认为是小数据传输网络,是微信日常中使用最频繁的网络通道。在开源设计上,STN抽象了微信的使用模型,使得STN成为业务无关的网络通道,并且应用到了包括微信在内的多个腾讯内部应用中。

AFNetworkingRetrofitOkhttp等框架不同,STN不仅是跨平台的网络解决框架,更是着重了“移动互联网“这一特点,结合移动互联网的不稳定特性,做了大量的优化工作,并且这些优化都是经过了微信长时间的验证和使用的。除此之外,STN中还包含了很多其他方面的实用设计,包括自定义DNS、容灾设计、负载考量、APP的前后台考量、休眠机制考量、省电机制等等。

STN 比其它网络框架提供更多的功能:

  1. 数据监控:STN提供了许多数据回调接口,使得应用可以基于这些网络数据,建立统计分析、监控等工具来管理应用的实际网络情况;

  2. 问题定位:STN中含有很多关键日志,并且日志的设计已经帮助微信定位了很多的网络层问题。结合Mars提供的XLOG日志机制,应用可以运行时也打开日志,非常方便定位;

  3. 参数配置:STN中将很多参数抽离为配置,使得应用可以根据自己的情况进行修改。

网络通道上,目前STN提供了长连、短连两种类型的通道,用于满足不同的需求。使用STN后,应用开发者只需关注业务开发。移动互联网的各种“坑”则可以交由STN帮你处理。

  • 在使用 Mars 之前,你需要了解以下常用术语: 名词 描述 长连接 维持一个 socket 连接,用来发送网络请求以及和服务器同步消息。 短连接 每次请求都重新建立新的连接,协议为简单的 http 协议。 seq 也就是上层所看到的 taskid,是用来标识任务的唯一性的,长连上也通过比较 seq 的值来对应请求包和回包的关系。 Cmdid 长连的cgi命令号,用于标识长连请求的cgi。相当于短

 相关资料
  • 背景 2012 年中,微信支持包括 Android、iOS、Symbian 等三个平台。但在各个平台上,微信客户端没有任何统一的基础模块。2012 年的微信正处于高速发展时期,各平台的迭代速度不一、使用的编程语言各异,后台架构也处在不断探索的过程中。多种因素使得各个平台基础模块的实现出现了差异,导致出现多次需要服务器做兼容的善后工作。网络作为微信的基础,重要性不言而喻。任何网络实现的 bug 都可

  • 前言 mars 是微信官方的终端基础组件,是一个使用 C++ 编写的业务性无关,平台性无关的基础组件。目前已接入微信 Android、iOS、Mac、Windows、WP 等客户端。现正在筹备开源中,它主要包括以下几个部分: comm:可以独立使用的公共库,包括 socket、线程、消息队列等 xlog:可以独立使用的日志模块 sdt:可以独立使用的网络诊断模块 stn:可以独立使用的信令分发网路

  • 问题内容: 将在官方网站上MongoDB的GUI客户端应用程序的列表已经过时:某些客户端不支持,有些是严重势必.NET和Linux上运行的不是。而且它们都缺乏编辑已存储文档的能力(即提供只读访问权限)。 我需要一个GUI客户端: 适用于Linux(但不适用于Web); 免费; 支持文档编辑。 是否有满足这些要求的应用程序? 问题答案: Robomongo-跨平台MongoDB GUI客户端 更新:

  • 天天微信平台 是免费、开源、支持二次开发扩展的微信发布平台,让你在微信开发中更专注于业务。支持多公众账号管理。 公众号接入步骤 将授权信息(URL、TOKEN,进入后台管理,在菜单“配置授权”中查看)配置到公众平台 从微信客户端向公众号发送验证码(系统生成,如:52731 ) 完成授权 开发环境: JDK1.6 + jetty1.7 + myeclipse(IntelliJ IDEA) 开发框架:

  • GoBelieve IM云平台,iOS 端,提供了功能齐全,性能健壮,需求完善的 IM 客户端实现,和 GoBelieve IM 云平台配套。 GoBelieve IM云平台特色: 1.一小时接入。专注IM,无冗余功能 几行代码,一小时接入 省时省力。 2.自由定制。提供最新源码, 自行二次开发,业务协议 交互视觉均可根据业务需求 自由定制。   3.完全开源。国内唯一开源IM服务,所有源码在Gi

  • GoBelieve IM云平台  Android端         Android 端,提供了功能齐全,性能健壮,需求完善的IM客户端实现,需和 GoBelieve IM 云平台配套 GoBelieve IM云平台特色: 1.一小时接入。专注IM,无冗余功能 几行代码,一小时接入 省时省力。 2.自由定制。提供最新源码, 自行二次开发,业务协议 交互视觉均可根据业务需求 自由定制。   3.完全开

  • 多平台支持 Mpx支持在多个小程序平台中进行增强,目前支持的小程序平台包括微信,支付宝,百度,qq和头条,不过自2.0版本后,Mpx支持了以微信增强语法为base的跨平台输出,实现了一套业务源码在多端输出运行的能力,大大提升了多小程序平台业务的开发效率,详情可以查看template增强特性 不同平台上的模板增强指令按照平台的指令风格进行设计,文档和代码示例为了方便统一采用微信小程序下的书写方式。

  • 本文向大家介绍Java微信公众平台开发(1) 接入微信公众平台,包括了Java微信公众平台开发(1) 接入微信公众平台的使用技巧和注意事项,需要的朋友参考一下 前面几篇文章一直都在说微信公众平台的开发准备工作,那么从这篇开始我们就将正式的进入JAVA微信公众平台开发的整个流程,那么这篇我们开始聊聊如何将我们的服务端和微信公众平台对接! (一)接入流程解析 在我们的开发过程中无论如何最好的参考工具当