自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

環(huán)信隋云怡:環(huán)信ONE SDK架構(gòu)全解析

移動(dòng)開發(fā)
環(huán)信即時(shí)通訊SDK自2014年6月正式發(fā)布2.0版本至今已走過(guò)一個(gè)年頭,從基本的單聊功能,到群聊功能,再到聊天室的實(shí)現(xiàn),SDK不管是功能,穩(wěn)定性,還是易集成性都在一步一步的走向完善與穩(wěn)定,感謝開發(fā)者們給與提供的反饋與幫助,使我們的SDK迅速的在諸多方面得到提高與改進(jìn)。

環(huán)信即時(shí)通訊SDK自2014年6月正式發(fā)布2.0版本至今已走過(guò)一個(gè)年頭,從基本的單聊功能,到群聊功能,再到聊天室的實(shí)現(xiàn),SDK不管是功能,穩(wěn)定性,還是易集成性都在一步一步的走向完善與穩(wěn)定,感謝開發(fā)者們給與提供的反饋與幫助,使我們的SDK迅速的在諸多方面得到提高與改進(jìn)。

隨著現(xiàn)在物聯(lián)網(wǎng)的興起,環(huán)信現(xiàn)在的SDK的架構(gòu)對(duì)應(yīng)對(duì)未來(lái)物聯(lián)網(wǎng)平臺(tái)還是略有不足,使我們不得不在今年年初就考慮到如何去改善我們的架構(gòu),使之能夠較容易的適配到各個(gè)主流平臺(tái)和物聯(lián)網(wǎng)平臺(tái)。

現(xiàn)在的Android, IOS, SDK都是各自維護(hù)了自己邏輯,給2.0開發(fā)帶來(lái)了很多不便,相同的功能需要維護(hù)兩份代碼,同一個(gè)bug要在不同的平臺(tái)修復(fù)兩次,由于不同平臺(tái)的實(shí)現(xiàn),導(dǎo)致Android,IOS架構(gòu)設(shè)計(jì)不統(tǒng)一,API不一致,再加上在不同的平臺(tái)開發(fā)的工程師之間由于不同的實(shí)現(xiàn)導(dǎo)致溝通問題諸多,這樣導(dǎo)致的問題就是,不同平臺(tái)的開發(fā)進(jìn)度大多數(shù)情況下都不相同。

所以針對(duì)以上的問題,我們今年年初就計(jì)劃我們SDK3.0的開發(fā),我們稱之為ONE SDK,基本的理念就是我們實(shí)現(xiàn)共同IM 內(nèi)核,使代碼可被不同的平臺(tái)***化的重用,但是設(shè)計(jì)和實(shí)現(xiàn)卻是面臨著巨大的挑戰(zhàn),如何適配到不同的平臺(tái),如何***化的重用代碼都是要面臨的問題。

ONE SDK 架構(gòu)設(shè)計(jì)

總體設(shè)計(jì)

 

 

ONE SDK的設(shè)計(jì)總體分為3層,平臺(tái)層-Platfrom layer,適配層-Porting layer,核心層-Common layer.

平臺(tái)層會(huì)根據(jù)各平臺(tái)的不同,實(shí)現(xiàn)不同的接口,開放符合平臺(tái)層的API給第三方開發(fā)者。

適配層主要要適配到ONE SDK 核心層所需要的一些接口,起到承上啟下的作用。

核心層主要提供IM 功能和業(yè)務(wù)邏輯,保證***化的代碼重用。

考慮到跨平臺(tái)共享代碼,我們ONE SDK主要是用C++這種跨平臺(tái)的語(yǔ)言來(lái)實(shí)現(xiàn)。

平臺(tái)層

我們計(jì)劃要支持的平臺(tái)為Android,IOS,MAC OS,Windows,Windows phone, Linux,Embedded Linux, 還有較為廣泛應(yīng)用的物聯(lián)網(wǎng)平臺(tái)-IOT OS。

我們會(huì)針對(duì)不同平臺(tái)提供給開發(fā)者,和平臺(tái)一致API規(guī)范,使各平臺(tái)的開發(fā)者無(wú)難度的集成SDK,例如我們會(huì)提供JAVA給Android,Objective-C 給IOS和MAC, C++ 給Linux, IOT平臺(tái)。

適配層

 

 

適配層主要就是各平臺(tái)需要實(shí)現(xiàn)核心層所需要的一些接口類例如,上圖給出的線程模型,定時(shí)器模型,數(shù)據(jù)庫(kù)模型,還有HTTP模型。

這些模型都是和平臺(tái)相關(guān)的,例如有的平臺(tái)提供sqllite的訪問,有的沒有,有的線程模型和定時(shí)器模型都有自己的實(shí)現(xiàn)方式例如物聯(lián)網(wǎng)IOT OS,所以實(shí)現(xiàn)了上述的模型,就可以使核心層可以工作,不過(guò)也可能會(huì)遇到一些問題,這都會(huì)在具體的實(shí)現(xiàn)中會(huì)具體的應(yīng)對(duì),但結(jié)構(gòu)是清晰的。

其實(shí)例如Android,Linux, IOS, Mac OS,Windows都是支持C++11,也就是說(shuō)都是支持C++11所提供的線程模型,所以這幾個(gè)操作系統(tǒng)的線程模型的實(shí)現(xiàn)應(yīng)該是同樣的,所以代碼是可以共享的, 但是數(shù)據(jù)庫(kù)Anroid NDK是不支持sqlite訪問,所以這部分Android有兩種策略一個(gè)是集成sqlite源代碼,二是回調(diào)給JAVA層,前一種策略是代碼邏輯清晰,但壞處就是增加了代碼量。

還有就是HTTP模型,默認(rèn)的android,iOS,Mac OS,windows都有自己的API提供,所以O(shè)NE SDK策略就是如果有平臺(tái)有原生的HTTP API 支持我們就會(huì)盡量用平臺(tái)的,但是類似linux,就需要第三方庫(kù)的支持例如libcurl.

所以綜上所述適配層的意義重大,保證我們ONE SDK代碼共享***化的目的。

核心層

核心層是具體實(shí)現(xiàn)環(huán)信相關(guān)功能的模塊,它里面也包含的幾個(gè)部分,核心業(yè)務(wù)邏輯API實(shí)現(xiàn),抽象協(xié)議層,和獨(dú)立實(shí)時(shí)音視頻模塊。

Core Common

業(yè)務(wù)邏輯層,負(fù)責(zé)提供基本的IM功能。

 

 

·會(huì)話管理

·消息收發(fā)

·登錄鑒權(quán)

·連接管理

Audio/Video Call

實(shí)時(shí)音視頻模塊是一個(gè)獨(dú)立的模塊,可以單獨(dú)存在,這樣可以靈活處理,不需要時(shí)不用加載此模塊。

 

 

·實(shí)時(shí)音視頻

·多人語(yǔ)音

Abstract Protocol Layer

協(xié)議抽象層,主要用來(lái)處理具體的IM底層協(xié)議,這層是比較獨(dú)立的主要實(shí)現(xiàn)環(huán)信定義的IM傳輸協(xié)議,也為為日后協(xié)議改造,擴(kuò)展提供承上啟下的作用。

 

 

 

·定義抽象消息載體

·基本的消息發(fā)送

·基本的消息回調(diào)

·定義基本的通知

上述ONE SDK架構(gòu)是我們計(jì)劃要實(shí)現(xiàn)的,現(xiàn)在一些基本的設(shè)計(jì)已經(jīng)在Linux SDK上得到了實(shí)現(xiàn),下面讓我們繼續(xù)了解下Linux SDK。

Linux SDK

經(jīng)過(guò)幾個(gè)月的開發(fā),我們已經(jīng)推出了Linux SDK測(cè)試版,有興趣的開發(fā)者可以小試一下去我們的官網(wǎng)http://www.easemob.com/downloads 下載。

通過(guò)EMChatClient Facade類開發(fā)者可以訪問到任何IM停供的功能

·登錄注冊(cè)

·消息收發(fā),支持TXT, IMAGE, VIDEO, AUDIO, FILE, LOCATION, 類型的message

·會(huì)話管理

·聯(lián)系人管理

在開發(fā)linux SDK的時(shí)候我們利用了C++11提供的很多優(yōu)良feature,例如lambda,shared ptr,thread等較新的功能,通過(guò)這些功能的使用,讓我們能夠迅速并且高效的開發(fā)出Linux SDK測(cè)試版。

Lambda是我們的代碼邏輯閱讀起來(lái)更清楚,shared ptr使我們對(duì)內(nèi)存的管理更為簡(jiǎn)單,thread的使用使我們能迅速的建立好線程模型,加快開發(fā)的速度。

我們?cè)贚inux SDK porting layer實(shí)現(xiàn)了線程模型,數(shù)據(jù)庫(kù)模型,定時(shí)器模型和HTTP模型

線程模型,利用C++11的thread進(jìn)行封裝

數(shù)據(jù)庫(kù)模型,使用Linux的sqlite

HTTP模型,我們使用了Libcurl進(jìn)行了封裝

定時(shí)器模型,我們使用了C++11進(jìn)行了封裝

我們對(duì)Linux SDK還在緊鑼密鼓,夜以繼日的緊張開發(fā)中,群組和實(shí)時(shí)音視頻功能還在開發(fā)中,但是在開發(fā)過(guò)程中我們也遇到了些的問題,例如不linux平臺(tái)對(duì)庫(kù)的支持也不盡相同,所以勢(shì)必會(huì)對(duì)我們的架構(gòu)有些改變,有些重構(gòu)的工作也在進(jìn)行中,我們希望8月底能夠?qū)崿F(xiàn)大部分的功能。

選擇linux SDK為開始主要是因?yàn)榇蠖鄶?shù)的嵌入式智能平臺(tái)還是以linux為主,所以首先開發(fā)Linux 版SDK也是必先的一步,感謝我們的工程師,我么的Linux SDK已經(jīng)能夠支持樹莓派的開發(fā)環(huán)境,這對(duì)于很多開發(fā)者來(lái)說(shuō)確實(shí)是個(gè)好消息。

如果想了解如何集成Linux SDK請(qǐng)參考環(huán)信IM Linux SDK 集成說(shuō)明

展望

Linux SDK 只是實(shí)現(xiàn)我們ONE SDK 的***步,我們下半年還要實(shí)現(xiàn)基于ONE SDK 的Android ,IOS,MAC OS, 還有主流物聯(lián)網(wǎng)平臺(tái)的SDK,通過(guò)借鑒Linux SDK的實(shí)現(xiàn)方式,我們認(rèn)為實(shí)現(xiàn)ONE SDK是可以做到的。

我們還會(huì)進(jìn)一步和主要IOT平臺(tái)供應(yīng)商合作,實(shí)現(xiàn)某個(gè)具體IOT平臺(tái)的環(huán)信SDK,使環(huán)信即時(shí)通訊平臺(tái)生態(tài)圈更加壯大。

責(zé)任編輯:老門 來(lái)源: CSDN博客
相關(guān)推薦

2015-07-31 15:07:48

環(huán)信移動(dòng)客服

2014-10-31 11:38:35

即時(shí)通訊移動(dòng)互聯(lián)網(wǎng)app

2014-10-31 10:56:21

即時(shí)通訊移動(dòng)互聯(lián)網(wǎng)app

2014-12-29 14:20:25

即時(shí)通訊移動(dòng)互聯(lián)網(wǎng)app

2021-01-21 21:34:04

環(huán)信SDKAPP

2015-08-18 16:30:37

環(huán)信CEO在線客服

2015-06-10 15:36:47

環(huán)信移動(dòng)客服

2014-11-13 11:42:47

Gitcafe

2015-08-19 16:22:48

環(huán)信

2011-05-04 19:03:07

2021-06-10 22:09:57

華云數(shù)據(jù)信創(chuàng)云

2014-11-13 11:49:22

環(huán)信

2018-07-06 11:50:11

科技

2014-11-13 11:46:51

環(huán)信

2015-09-02 15:26:13

環(huán)信

2018-06-11 15:39:38

鑫苑置業(yè)OA系統(tǒng)辦公
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)