CTI論壇(ctiforum)10月16日消息(記者 李文杰): 10月14日-16日,2015移動(dòng)開發(fā)者大會(huì)(MDCC 2015)在北京新云南皇冠假日酒店隆重舉行。本次大會(huì)以“萬物互聯(lián),移動(dòng)為先”為主題,邀請(qǐng)國內(nèi)外業(yè)界領(lǐng)袖與技術(shù)專家共論移動(dòng)開發(fā)的熱點(diǎn),在實(shí)踐中剖析技術(shù)方案與趨勢(shì)。環(huán)信作為即時(shí)通訊云和移動(dòng)客服領(lǐng)軍企業(yè)受邀參展本次盛會(huì)。
![](http://m.yh9t5.com/uploadfile/2015/1016/20151016113522607.jpg)
環(huán)信特裝展臺(tái)
![](http://m.yh9t5.com/uploadfile/2015/1016/20151016113548914.jpg)
國外智能硬件客戶和環(huán)信SDK負(fù)責(zé)人溝通技術(shù)細(xì)節(jié)
本屆MDCC將有5000+開發(fā)者、500+應(yīng)用團(tuán)隊(duì)、100+平臺(tái)提供商、100+移動(dòng)游戲服務(wù)商參與大會(huì)演講、現(xiàn)場(chǎng)展覽、特色活動(dòng)。除全體大會(huì),更設(shè)10大技術(shù)專場(chǎng)。那么,這樣一場(chǎng)回歸技術(shù)實(shí)踐,深度解析行業(yè)熱點(diǎn)話題、技術(shù)及研究方向的技術(shù)盛宴有哪些亮點(diǎn)呢?其中環(huán)信SDK負(fù)責(zé)人隋云怡帶來《環(huán)信ONE SDK跨平臺(tái)開發(fā)》主題演講深受現(xiàn)場(chǎng)開發(fā)者追捧。到底有哪些技術(shù)干貨?讓我們來一探究竟。
![](http://m.yh9t5.com/uploadfile/2015/1016/20151016113603640.jpg)
環(huán)信SDK負(fù)責(zé)人隋云怡做主題演講
![](http://m.yh9t5.com/uploadfile/2015/1016/20151016113620967.jpg)
接受CSDN記者專訪
環(huán)信SDK自2014年6月正式發(fā)布2.0版本至今已走過一個(gè)年頭,從基本的單聊功能,到群聊功能,再到聊天室的實(shí)現(xiàn),SDK不管是功能,穩(wěn)定性,還是易集成性都在一步一步的走向完善與穩(wěn)定,感謝開發(fā)者們給與提供的反饋與幫助,使我們的SDK迅速的在諸多方面得到提高與改進(jìn)。
當(dāng)前SDK開發(fā)之痛:1,接口不一。2,功能重復(fù)開發(fā)。3,BUG重復(fù)修復(fù)。4同樣業(yè)務(wù)多人維護(hù)。5,不同SDK開發(fā)功能上線時(shí)間不同。6,開發(fā)人員溝通不及時(shí)。
所以針對(duì)以上的問題,我們今年年初就計(jì)劃我們SDK 3.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ì)
![](http://m.yh9t5.com/uploadfile/2015/1016/20151016113655698.jpg)
- 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)的語言來實(shí)現(xiàn)。
平臺(tái)層
我們將要支持的平臺(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ā)者無難度的集成SDK,例如我們會(huì)提供JAVA給Android,Objective-C 給IOS和MAC, C++ 給Linux, IOT平臺(tái)。
適配層
![](http://m.yh9t5.com/uploadfile/2015/1016/20151016113739320.jpg)
適配層主要就是各平臺(tái)需要實(shí)現(xiàn)核心層所需要的一些接口類例如,上圖給出的線程模型,定時(shí)器模型,數(shù)據(jù)庫模型,還有HTTP模型。
這些模型都是和平臺(tái)相關(guān)的,例如有的平臺(tái)提供sqllite的訪問,有的沒有,有的線程模型和定時(shí)器模型都有自己的實(shí)現(xiàn)方式例如物聯(lián)網(wǎng)IOT OS,所以實(shí)現(xiàn)了上述的模型,就可以使核心層可以工作,不過也可能會(huì)遇到一些問題,這都會(huì)在具體的實(shí)現(xiàn)中會(huì)具體的應(yīng)對(duì),但結(jié)構(gòu)是清晰的。
其實(shí)例如Android,Linux, IOS, Mac OS,Windows都是支持C++11,也就是說都是支持C++11所提供的線程模型,所以這幾個(gè)操作系統(tǒng)的線程模型的實(shí)現(xiàn)應(yīng)該是同樣的,所以代碼是可以共享的, 但是數(shù)據(jù)庫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,就需要第三方庫的支持例如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功能。![](http://m.yh9t5.com/uploadfile/2015/1016/20151016113804627.jpg)
- 會(huì)話管理
- 消息收發(fā)
- 登錄鑒權(quán)
- 連接管理
Audio/Video Call
![](http://m.yh9t5.com/uploadfile/2015/1016/20151016113845507.jpg)
實(shí)時(shí)音視頻模塊是一個(gè)獨(dú)立的模塊,可以單獨(dú)存在,這樣可以靈活處理,不需要時(shí)不用加載此模塊。
- 實(shí)時(shí)音視頻
- 多人語音
Abstract Protocol Layer
協(xié)議抽象層,主要用來處理具體的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)過幾個(gè)月的開發(fā),我們已經(jīng)推出了Linux SDK測(cè)試版,有興趣的開發(fā)者可以小試一下去我們的官網(wǎng)http://www.easemob.com/downloads 下載。
- 通過EMChatClient Facade類開發(fā)者可以訪問到任何IM停供的功能
- 登錄注冊(cè)
- 消息收發(fā),支持TXT,IMAGE,VIDEO,AUDIO,F(xiàn)ILE,LOCATION,類型的message
- 會(huì)話管理
- 聯(lián)系人管理
在開發(fā)linux SDK的時(shí)候我們利用了C++11提供的很多優(yōu)良feature,例如lambda,shared ptr,thread等較新的功能,通過這些功能的使用,讓我們能夠迅速并且高效的開發(fā)出Linux SDK測(cè)試版。
Lambda是我們的代碼邏輯閱讀起來更清楚,shared ptr使我們對(duì)內(nèi)存的管理更為簡(jiǎn)單,thread的使用使我們能迅速的建立好線程模型,加快開發(fā)的速度。
我們?cè)贚inux SDK porting layer實(shí)現(xiàn)了線程模型,數(shù)據(jù)庫模型,定時(shí)器模型和HTTP模型- 線程模型,利用C++11的thread進(jìn)行封裝
- 數(shù)據(jù)庫模型,使用Linux的sqlite
- HTTP模型,我們使用了Libcurl進(jìn)行了封裝
- 定時(shí)器模型,我們使用了C++11進(jìn)行了封裝
選擇linux SDK為開始主要是因?yàn)榇蠖鄶?shù)的嵌入式智能平臺(tái)還是以linux為主,所以首先開發(fā)Linux 版SDK也是必先的一步,感謝我們的工程師,我們的Linux SDK已經(jīng)能夠支持樹莓派的開發(fā)環(huán)境,這對(duì)于很多開發(fā)者來說確實(shí)是個(gè)好消息。
展望
Linux SDK 只是實(shí)現(xiàn)我們ONE SDK 的第一步,我們下半年還要實(shí)現(xiàn)基于ONE SDK 的Android ,IOS,MAC OS, 還有主流物聯(lián)網(wǎng)平臺(tái)的SDK,通過借鑒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)圈更加壯大。
主辦方介紹:
關(guān)于CSDN
CSDN創(chuàng)立于1999年,是中國最大的IT社區(qū)和服務(wù)平臺(tái),為中國的軟件開發(fā)者和IT從業(yè)者提供軟件開發(fā)、知識(shí)傳播、職業(yè)發(fā)展等全方位服務(wù),滿足他們?cè)诩夹g(shù)成長中提升研發(fā)生產(chǎn)力、學(xué)習(xí)及共享知識(shí)和信息、建立職業(yè)發(fā)展社交圈等剛性需求。擁有超過4000萬注冊(cè)會(huì)員(其中活躍會(huì)員850萬)、60萬注冊(cè)企業(yè)及合作伙伴。
關(guān)于創(chuàng)新工場(chǎng)
創(chuàng)新工場(chǎng)自2009年創(chuàng)立,一直致力于早期投資并面向創(chuàng)業(yè)者提供全方位服務(wù)。從2012年,在完成新一支2.75億美金的基金募集開始,創(chuàng)新工場(chǎng)陸續(xù)投資了一系列的A輪融資的優(yōu)秀項(xiàng)目,包括美圖、快牙、Face++、有妖氣、極路由、墨跡天氣等三四十個(gè)優(yōu)秀的創(chuàng)業(yè)項(xiàng)目;并一如既往在財(cái)務(wù)、法務(wù)、市場(chǎng)商務(wù)、HR、PR、IT等方面為創(chuàng)業(yè)團(tuán)隊(duì)提供全方位的投后服務(wù),幫助他們快速成長。截止2015年9月,創(chuàng)新工場(chǎng)投資的200+項(xiàng)目中已經(jīng)有超過25家團(tuán)隊(duì)估值超過一億美金,躋身“億元美金俱樂部”,創(chuàng)新工場(chǎng)已然成為“億元美金創(chuàng)業(yè)者的搖籃”。