Table of Contents

ONE SDK架构设计

平台层

适配层

核心层

Audio/Video Call

Abstract Protocol Layer


环信即时通讯SDK自2014年6月正式发布2.0版本至今已走过一个年头,从基本的单聊功能,到群聊功能,再到聊天室的实现,SDK不管是功能, 稳定性,还是易集成性都在一步一步的走向完善与稳定。

文章出处:朵西科技(docy2015)

随着现在物联网的兴起,环信现在的SDK的架构对应对未来物联网平台还是略有不足,使环信不得不在今年年初就考虑如何去改善其架构,使之能够较容易的适配到各个主流平台和物联网平台。

现 在的Android、iOS SDK都是各自维护了自己逻辑,给2.0开发带来了很多不便,相同的功能需要维护两份代码,同一个bug要在不同的平台修复两次,由于不同平台的实现,导 致Android、iOS架构设计不统一,API不一致,再加上在不同的平台开发的工程师之间由于不同的实现导致沟通问题诸多,这样导致的问题就是,不同 平台的开发进度大多数情况下都不相同。

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

ONE SDK架构设计

总体设计 ONE SDK的设计总体分为3层,平台层-Platfrom layer,适配层-Porting layer,核心层-Common layer.

平台层会根据各平台的不同,实现不同的接口,开放符合平台层的API给第三方开发者。

适配层主要要适配到ONE SDK 核心层所需要的一些接口,起到承上启下的作用。

核心层主要提供IM 功能和业务逻辑,保证最大化的代码重用。

考虑到跨平台共享代码,ONE SDK主要是用C++这种跨平台的语言来实现。

平台层

环信计划要支持的平台为Android,IOS,MACOS,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上得到了实现。

平台层-适配层-核心层|拆分环信ONE SDK架构相关推荐

  1. 环信IM SDK使用(一):集成环信SDK及注意事项

    环信IM SDK可以帮助用户快速开发IM相关的应用.如何快速集成环信IM SDK呢? 首先附上环信官网的集成SDK的文档:Android SDK 介绍及导入 一.集成环信IM SDK 1.申请环信Ap ...

  2. 环信IM SDK使用(四):环信会话列表实现及相关接口介绍

    前言:本文是在已经集成环信SDK及使用环信easeUi的基础上进行的,如果不了解环信SDK集成及easeUi,请点击跳转:环信IM SDK使用(一):集成环信SDK及注意事项和环信IM SDK使用(三 ...

  3. shit 环信 IM SDK IM SDK web

    shit 环信 IM SDK & IM SDK & web 环信 IM SDK, 采坑大全 自己写 UI appkey 是否正确 password 是字符串,不是 数字 HTTPS 是 ...

  4. 环信IM SDK使用(二):环信SDK初始化及注册和登录

    上一篇文章,我们介绍了如何集成环信IM SDK:环信IM SDK使用(一):集成环信SDK及注意事项,后面的文章是在这个的基础上一步一步实现的,如果还有不清楚如何集成环信IM SDK的,请翻看上一篇文 ...

  5. Linux sdk工作的前景,环信Linux SDK测试版简直逆天 高端大气上档次

    万物互联时代,物联网创新方兴未艾.今日环信即时通讯云宣布环信LinuxSDK测试版正式发布,作为环信生态圈重要的布局,环信LinuxSDK测试版使用C++开发,原生支持Linux操作系统,适用于基于L ...

  6. IM实战:Android接入环信 IM SDK

    本次学习目标: 注册环信: Android端集成环信 IM SDK: 实现注册-登录-发送消息-会话列表等: 一.环信IM        什么是环信IM 环信IM是一款即时通讯产品,为开发者提供基于移 ...

  7. Unity Metaverse(四)、接入环信IM SDK 实现用户登录注册

    文章目录

  8. Unity Metaverse(七)、基于环信IM SDK实现的好友系统、私聊、群聊

    文章目录

  9. 环信即时通讯在Android平台的部署

    官网 环信 下载SDK 创建一个工程 如果想要封装性好一点,也可以在工程里再创建一个环信的Library,然后将SDK里的jar和.so,都导入到工程 清单文件 下面是环信Library库里面的清单文 ...

最新文章

  1. 2020 北京智源大会“云上”开幕, 中外顶尖学者畅想AI的下一个十年
  2. day29(对象转xml(使用java))
  3. Altium designer关于铺铜的操作
  4. easyui datagrid onLoadSuccess方法 正确使用
  5. 微信小程序 bindtap 绑定事件
  6. alfs学习笔记-自动化构建lfs系统
  7. 对Python参数类型详解以及学习中遇到的坑
  8. 浅析C++利器之——引用
  9. python教学视频p_python接口自动化28requestshtml爬虫框架
  10. day16前端(Dom+Jquery)
  11. 如何赛筛选出多列内容相同的数据??
  12. Kubernetes 日志查询分析实践
  13. 甲骨文中国裁员已定,补偿为N+6;VMware联手云平台合作伙伴AsiaPac,闪耀狮城;对标英伟达,寒武纪新货曝光……...
  14. JspWriter 与 printwriter区别
  15. 前端代码部署后通过html访问,将前端项目部署到nginx上
  16. Linq to sql并发与事务
  17. 2008年IT业十大预测:微软收购雅虎
  18. SDL农场游戏开发 1.环境搭建
  19. 输入文本的html,输入文本的步骤主要包括
  20. 用IMAP4访问Exchange邮箱

热门文章

  1. 【Oracle的存储过程之面向对象之特性】
  2. SpringGateway与Zookeeper的Maven冲突
  3. MySQL高级-MySQL查询缓存优化
  4. Codeforces Round #447 Div. 2 A.B.C
  5. xml没有提示解决办法eclipse
  6. Linux常用命令及笔记
  7. (论坛答疑点滴)如何按照HashTable动态设定类的属性和字段?
  8. 王伟storm_王伟 - 南京大学 - 化学化工学院
  9. django orm关联查询_Django ORM 聚合查询和分组查询实现详解
  10. arm平台下linux c语言编程,简单分析针对ARM平台的C语言程序的编译问题