扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
来源:CTI论坛 2015年10月16日
关键字: 环信
10 月14日-16日,2015移动开发者大会(MDCC 2015)在北京新云南皇冠假日酒店隆重举行。本次大会以“万物互联,移动为先”为主题,邀请国内外业界领袖与技术专家共论移动开发的热点,在实践中剖析 技术方案与趋势。环信作为即时通讯云和移动客服领军企业受邀参展本次盛会。
本届MDCC将有5000+开发者、500+应用团队、100+平台提供商、100+移动游戏服务商参与大会演讲、现场展览、特色活动。除全体大会,更 设10大技术专场。那么,这样一场回归技术实践,深度解析行业热点话题、技术及研究方向的技术盛宴有哪些亮点呢?其中环信SDK负责人隋云怡带来《环信 ONE SDK跨平台开发》主题演讲深受现场开发者追捧。到底有哪些技术干货?让我们来一探究竟。
环信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 ”架构设计
总体设计
平台层
我们将要支持的平台为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 下载。
在开发linux SDK的时候我们利用了C++11提供的很多优良feature,例如lambda,shared ptr,thread等较新的功能,通过这些功能的使用,让我们能够迅速并且高效的开发出Linux SDK测试版。
Lambda是我们的代码逻辑阅读起来更清楚,shared ptr使我们对内存的管理更为简单,thread的使用使我们能迅速的建立好线程模型,加快开发的速度。
我们在Linux SDK porting layer实现了线程模型,数据库模型,定时器模型和HTTP模型
选择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领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者