首页 > 新闻 > 国内 >

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

2015-10-16 11:33:03   作者:   来源:CTI论坛   评论:0  点击:


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

  环信特装展台

  国外智能硬件客户和环信SDK负责人沟通技术细节

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

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

  接受CSDN记者专访

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

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

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

  “ 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平台。

  适配层

  适配层主要就是各平台需要实现核心层所需要的一些接口类例如,上图给出的线程模型,定时器模型,数据库模型,还有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功能。
  • 会话管理
  • 消息收发
  • 登录鉴权
  • 连接管理

  Audio/Video Call

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

  • 实时音视频
  • 多人语音

  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,使环信即时通讯平台生态圈更加壮大。

  主办方介绍:

  关于CSDN

  CSDN创立于1999年,是中国最大的IT社区和服务平台,为中国的软件开发者和IT从业者提供软件开发、知识传播、职业发展等全方位服务,满足他们在技术成长中提升研发生产力、学习及共享知识和信息、建立职业发展社交圈等刚性需求。拥有超过4000万注册会员(其中活跃会员850万)、60万注册企业及合作伙伴。

  关于创新工场

  创新工场自2009年创立,一直致力于早期投资并面向创业者提供全方位服务。从2012年,在完成新一支2.75亿美金的基金募集开始,创新工场陆续投资了一系列的A轮融资的优秀项目,包括美图、快牙、Face++、有妖气、极路由、墨迹天气等三四十个优秀的创业项目;并一如既往在财务、法务、市场商务、HR、PR、IT等方面为创业团队提供全方位的投后服务,帮助他们快速成长。截止2015年9月,创新工场投资的200+项目中已经有超过25家团队估值超过一亿美金,跻身“亿元美金俱乐部”,创新工场已然成为“亿元美金创业者的摇篮”。

分享到: 收藏

专题