科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网CIO与应用频道MDCC 2015干货分享:环信ONE SDK跨平台开发

MDCC 2015干货分享:环信ONE SDK跨平台开发

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

10月14日-16日,2015移动开发者大会(MDCC 2015)在北京举行。本次大会邀请国内外业界领袖与技术专家共论移动开发的热点,在实践中剖析 技术方案与趋势。其中环信SDK负责人隋云怡带来《环信 ONE SDK跨平台开发》主题演讲深受现场开发者追捧。

来源:CTI论坛 2015年10月16日

关键字: 环信

  • 评论
  • 分享微博
  • 分享邮件

10 月14日-16日,2015移动开发者大会(MDCC 2015)在北京新云南皇冠假日酒店隆重举行。本次大会以“万物互联,移动为先”为主题,邀请国内外业界领袖与技术专家共论移动开发的热点,在实践中剖析 技术方案与趋势。环信作为即时通讯云和移动客服领军企业受邀参展本次盛会。

本届MDCC将有5000+开发者、500+应用团队、100+平台提供商、100+移动游戏服务商参与大会演讲、现场展览、特色活动。除全体大会,更 设10大技术专场。那么,这样一场回归技术实践,深度解析行业热点话题、技术及研究方向的技术盛宴有哪些亮点呢?其中环信SDK负责人隋云怡带来《环信 ONE SDK跨平台开发》主题演讲深受现场开发者追捧。到底有哪些技术干货?让我们来一探究竟。

MDCC 2015干货分享:环信ONE SDK跨平台开发

环信SDK负责人隋云怡做主题演讲

MDCC 2015干货分享:环信ONE SDK跨平台开发

环信SDK自2014年6月正式发布2.0版本至今已走过一个年头,从基本的单聊功能,到群聊功能,再到聊天室的实现,SDK不管是功能,稳定性,还是 易集成性都在一步一步的走向完善与稳定,感谢开发者们给与提供的反馈与帮助,使我们的SDK迅速的在诸多方面得到提高与改进。

当前SDK开发之痛:1,接口不一。2,功能重复开发。3,BUG重复修复。4同样业务多人维护。5,不同SDK开发功能上线时间不同。6,开发人员沟通不及时。

所以针对以上的问题,我们今年年初就计划我们SDK 3.0的开发,我们称之为“ONE SDK”,基本的理念就是我们实现共同IM内核,使代码可被不同的平台最大化的重用,但是设计和实现却是面临着巨大的挑战,如何适配到不同的平台,如何最 大化的重用代码都是要面临的问题。

“ ONE SDK ”架构设计

总体设计

MDCC 2015干货分享:环信ONE SDK跨平台开发
  • ONE SDK的设计总体分为3层:平台层-Platfrom layer,适配层-Porting layer,核心层-Common layer。
  • 平台层会根据各平台的不同,实现不同的接口,开放符合平台层的API给第三方开发者。
  • 适配层主要要适配到ONE SDK 核心层所需要的一些接口,起到承上启下的作用。
  • 核心层主要提供IM 功能和业务逻辑,保证最大化的代码重用。
  • 考虑到跨平台共享代码,我们ONE SDK主要是用C++这种跨平台的语言来实现。

平台层

我们将要支持的平台为Android,IOS,MAC OS,Windows,Windows phone, Linux,Embedded Linux, 还有较为广泛应用的物联网平台-IOT OS。

我们会针对不同平台提供给开发者,和平台一致API规范,使各平台的开发者无难度的集成SDK,例如我们会提供JAVA给Android,Objective-C 给IOS和MAC, C++ 给Linux, IOT平台。

适配层

MDCC 2015干货分享:环信ONE SDK跨平台开发

适配层主要就是各平台需要实现核心层所需要的一些接口类例如,上图给出的线程模型,定时器模型,数据库模型,还有HTTP模型。

这些模型都是和平台相关的,例如有的平台提供sqllite的访问,有的没有,有的线程模型和定时器模型都有自己的实现方式例如物联网IOT OS,所以实现了上述的模型,就可以使核心层可以工作,不过也可能会遇到一些问题,这都会在具体的实现中会具体的应对,但结构是清晰的。

其实例如Android,Linux, IOS, Mac OS,Windows都是支持C++11,也就是说都是支持C++11所提供的线程模型,所以这几个操作系统的线程模型的实现应该是同样的,所以代码是可 以共享的, 但是数据库Anroid NDK是不支持sqlite访问,所以这部分Android有两种策略一个是集成sqlite源代码,二是回调给JAVA层,前一种策略是代码逻辑清晰, 但坏处就是增加了代码量。

还有就是HTTP模型,默认的android,iOS,Mac OS,windows都有自己的API提供,所以ONE SDK策略就是如果有平台有原生的HTTP API 支持我们就会尽量用平台的,但是类似linux,就需要第三方库的支持例如libcurl。

所以综上所述适配层的意义重大,保证我们ONE SDK代码共享最大化的目的。

核心层

核心层是具体实现环信相关功能的模块,它里面也包含的几个部分,核心业务逻辑API实现,抽象协议层,和独立实时音视频模块。

Core Common

  业务逻辑层,负责提供基本的IM功能。

MDCC 2015干货分享:环信ONE SDK跨平台开发
  • 会话管理
  • 消息收发
  • 登录鉴权
  • 连接管理

Audio/Video Call

MDCC 2015干货分享:环信ONE SDK跨平台开发

实时音视频模块是一个独立的模块,可以单独存在,这样可以灵活处理,不需要时不用加载此模块。

  • 实时音视频
  • 多人语音

Abstract Protocol Layer

协议抽象层,主要用来处理具体的IM底层协议,这层是比较独立的主要实现环信定义的IM传输协议,也为为日后协议改造,扩展提供承上启下的作用。

  • 定义抽象消息载体
  • 基本的消息发送
  • 基本的消息回调
  • 定义基本的通知

上述ONE SDK架构是我们计划要实现的,现在一些基本的设计已经在Linux SDK上得到了实现,下面让我们继续了解下Linux SDK。

Linux SDK

经过几个月的开发,我们已经推出了Linux SDK测试版,有兴趣的开发者可以小试一下去我们的官网http://www.easemob.com/downloads 下载。

  • 通过EMChatClient Facade类开发者可以访问到任何IM停供的功能
  • 登录注册
  • 消息收发,支持TXT,IMAGE,VIDEO,AUDIO,FILE,LOCATION,类型的message
  • 会话管理
  • 联系人管理

在开发linux SDK的时候我们利用了C++11提供的很多优良feature,例如lambda,shared ptr,thread等较新的功能,通过这些功能的使用,让我们能够迅速并且高效的开发出Linux SDK测试版。

Lambda是我们的代码逻辑阅读起来更清楚,shared ptr使我们对内存的管理更为简单,thread的使用使我们能迅速的建立好线程模型,加快开发的速度。

  我们在Linux SDK porting layer实现了线程模型,数据库模型,定时器模型和HTTP模型

  • 线程模型,利用C++11的thread进行封装
  • 数据库模型,使用Linux的sqlite
  • HTTP模型,我们使用了Libcurl进行了封装
  • 定时器模型,我们使用了C++11进行了封装

选择linux SDK为开始主要是因为大多数的嵌入式智能平台还是以linux为主,所以首先开发Linux 版SDK也是必先的一步,感谢我们的工程师,我们的Linux SDK已经能够支持树莓派的开发环境,这对于很多开发者来说确实是个好消息。

展望

Linux SDK 只是实现我们ONE SDK 的第一步,我们下半年还要实现基于ONE SDK 的Android ,IOS,MAC OS, 还有主流物联网平台的SDK,通过借鉴Linux SDK的实现方式,我们认为实现ONE SDK是可以做到的。

我们还会进一步和主要IOT平台供应商合作,实现某个具体IOT平台的环信SDK,使环信即时通讯平台生态圈更加壮大。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章