1雲端服務與Android軟硬整合之路走進巴黎鐵塔看不見巴黎鐵塔走進雲裡看不見彩虹從軟硬整合看見雲層上的彩虹請您來分享彩虹之美0.Android整合之路在眾雲成群下,Android成為移動端的一枝獨秀,也是進軍雲產業的主要渠道。云想衣裳花想容Android端里映彩虹By李白&高煥堂SensorsFacebookTwitter醫療服務端Google雲平台Microsoft從移動端看眾雲成群2Framework/API/Application系統架構/商業模式整合雲/端整合軟硬整合Android的整合之路的三個面向在眾強龍之下,”小強龍”有無限廣大的天空。軟硬端雲客戶/地頭蛇$強龍(員外)&長工z1000個領域(Domain)z軟硬整合(賣產品:軟or硬)z雲端整合(賣服務or廣告)API/Framework人人有成為”小強龍”美好機會在眾星球上建立星際連鎖商店,各商店的框架是一致的。3AP(Java)Library(C++)Linux(OS)Driver(C)一致的架構一致的架構來自簡單元素的無限組合。Library(C++)clientsubclasssuperclass簡單的基本元素1.雲與端整合的關鍵:API1.1雲端服務發展新焦點:API(ApplicationProgrammingInterface)4海峽兩岸IT硬件產業是舉世聞名的,基於這項產業優勢,進而開發各層級(Layer)、各領域(Domain)的軟件介面是具有極大商機的。當然,在談及海峽兩岸產業優勢之際,也必須談談其產業的劣勢,就是平台管理軟件的能力不足。我們擅長研發硬件伺服器(ServerHardware),但並不擅長開發大型或分散式伺服器的平台管理軟件系統。因此,值此雲服務產業方興未艾之際,思考海峽兩岸未來雲與端產業的發展之路,是有其建設性的。鑒於過去30年來,海峽兩岸IT產業長期受制於外人所掌控的封閉型平台管理軟件(如操作系統、數據庫管理系統等),因而有被外人掐著脖子走的苦楚。這樣的情境似乎仍然會延續到新興的雲產業裡。因之,此刻來探討如何走出劣勢、邁向優勢,是有其價值的。那麼,如何克服上述的劣勢,邁向贏家之路呢?答案之一是:開發各種應用領域的API(ApplicationProgrammingInterface)。由於雲朵紛飛,在平台管理軟件層級的介面(Platform-layerInterface,簡稱PI)將呈現百花齊放、千鳥爭鳴的現象。這必然讓全球數百萬應用軟件開發者,更加依賴於上層的應用領域層級的介面(ApplicationDomain-layerInterface,簡稱API)。例如,医疗应用软件-1汽车API云PI-x云PI-y云PI-z医疗API医疗应用软件-2车载应用软件-n车载应用软件-n圖1-1、API在雲產業裡的角色在應用軟件市集(如GoogleAppStore或AppleAppStore)盛行的今天,誰能更號召全球數百萬應用軟件開發者(簡稱AP開發者),將是雲產業中的強龍。由此而觀之,兩岸IT產業如果在API上先馳得點,加上大陸龐大市場的優勢,即使未能掌控雲層平台的PI,也一樣能成為未來雲產業的強龍盟主。51.2雲端服務API開發之基本概念API的角色在上一小節裡,提到海峽兩岸在雲與端產業裡的兢爭優勢,以及能四兩撥千金的重要槓桿點:API。很多讀者問道:有沒有API開發的How-to呢?答案是:當然有。首先來看看API的角色,如下圖:雲主AP開發者客戶(用戶)提供API貢獻AP提供服務(即AP+內容)圖1-2、雲API的角色雲主就是雲服務的盟主(強龍),全球第三方應用程式開發者(AP開發者)是自願來協助雲主的地頭蛇。API就成為雲主與眾多地頭蛇之間的分工介面,也是雙方系統的介面。例如Facebook、Google等都主動提供API給AP開發者,並且提供內容(Content)來源,則AP開發者就能據之而開發形形色色的應用程序,回饋給雲主。隨著API愈來愈完整,愈多地頭蛇投靠該雲主,自然而然雲主擁有了更多AP和內容,於是將AP和內容整合為服務(Service),提供給數以億計的用戶了。z誰掌握API,誰就是老大z誰打造自己的尚方寶劍(即應用框架),誰就是強龍z成功的雲主(提供雲服務者)是英雄z雲服務的客戶(即用戶)介面是UIz雲主英雄莫不需要極多樣化的UIz莊子有言:愈想射箭中靶心,愈要專注於箭身z大家知道:英雄愈想生小孩,愈要多疼愛美人z雲主知道:愈想要極多樣化UI,愈需要屬於自己的APIz掌握API等於擁有控制權z手握尚方寶劍等於掌握APIz誰掌握API,誰就是老大6雲服務API的分類API(ApplicationInterface)的型式有許多種,但可以分為兩類:「被動型API」和「主動型API」。被動型API通常是以程式庫(SoftwareLibrary)形式呈現。因為它提供一群函數(Function)來讓應用程序調用之。它被應用程式調用,所以稱為被動型API。主動型API通常是以框架(Framework)形式呈現。因為它提供一群父類(Superclass)來讓應用程序的子類(Subclass)繼承之。通常,它都主動調用應用程式,所以稱為主動型API。Framework-based的API目前,無論是在雲層服務方面,或在行動端應用方面,大多採用Framework-based的主動型API。例如,在雲層的WebServer上有如Spring等各式各樣的平台框架,以及其它應用領域框架。同時,在行動端應用方面,Android也採用Framework-based的主動型API。例如,Android硬件抽象層(HardwareAbstractionLayer,簡稱HAL)就是一個框架,如下圖:圖1-3、Android底層框架之例表面上看來框架只有一個介面(ihal),其實有兩個介面。如果將一個框架比喻為一張桌子,就很容易理解了,如下圖:7對桌上的介面對桌腳的介面圖1-4、將框架比喻為桌子框架就如同桌面。AP開發者會撰寫應用子類,成為桌腳,然後以類繼承機制,將桌腳搭配上去,就成為一張空的桌子了。接著,AP開發者,撰寫UI部分(又稱為Client部分),成為桌上的東西(如水果等),然後以依般介面機制,將之擺到桌面上,就成為一張完整的桌子了。如下圖:桌上桌腳(卡榫Stub)圖1-5、完整的桌子(即可用的應用程式)在Android行動端裡,除了上述的底層HAL框架之外,其上面的Java層8框架也是提供主動型的API。以上只是概念上說明雲服務API的幕後機制,尤其是目前流行的Framework-based的主動型API。在後續的文章裡,將繼續說明詳細的API開發方法和技術。1.3雲計算:從Twitter的API談起客(用)戶從兩個途徑去使用Twitter的雲服務:z使用瀏覽器(Browser)取得Twitter網頁的服務。z使用第3方應用開發者的應用程式(Application,簡稱AP)去調用Twitter的API,取得Twitter的服務。從2010年4月份的統計分析,發現上述的途徑(1)佔25%;而途徑(2)則佔75%。可見提供體貼好用的API,對雲主的重要性正日益增加中。還有,Twitter每日接受外部應用程式超過30億項的API請求。這些數據顯示出,以API來號召天下八方豪傑(即全球各地的AP開發者)是雲主們欲稱霸武林的不二法門。那麼,雲主的API又如何支援AP開發者呢?首先,看看API一般目的是:zAPI必須有效支援AP開發者去客制化出自己的雲層服務。zAPI必須有效支援AP開發者去開發出多樣化的行動端(如Android手機)的應用程式。這了達成上述的目標,幾乎提供基於框架(Framework-based)型式的API,包括雲層的領用框架(DomainFramework),以及行動端的應用框架(ApplicationFramework)。於是,以API來號召天下八方豪傑(即AP開發者)是雲主們稱霸武林的不二法門。那麼,雲主們積極開發自己的框架,成為自己手中的尚方寶劍,將是決定勝敗的關鍵了。框架的內涵決定於它的應用領域(ApplicationDomain)。各個領域都可以開發出其專用的框架。也就說,各朵雲彩都有其特定領域,也有其專用框架。善於掌握框架,就能提供體貼的API來廣召各方英雄好漢來拔刀相助。在眾星拱月下,善於掌握框架的雲主就逐漸壯大、並迅速稱霸武林了。1.4為什麼流行框架型式(Framework-based)的API呢?當今,無論是雲層或行動端,都流行Framework-based的API。大家都知道,掌握介面標準(如JDBC,SQL,W3C等)就是強權,而強權之間必然爭奪介面標準(即InterfaceorProtocol)的掌控權。例如,當年微軟和寶藍(Borland)爭奪ODBCAPI的掌控權,失去API的掌控權的一方,在競爭上,常常處於非常不利形勢。所以,API是強權爭奪的標的。那麼,什麼型式的API可以強化自己的兢爭優勢呢?這要先釐清什麼是競爭優勢呢?9由於Apple公司的iPhone率先提供API,開放給全球的第三方AP開發者使用,並設立iPhone的全球性第三方AP市集(ApplicationStore)。因而匯集了數十萬AP開發者的加盟,讓Apple處於極佳的兢爭優勢。Apple是強龍,而追隨Apple的眾多第三方AP開發者是地頭蛇,因而形成極具獲利能力的「強龍/地頭蛇」商業樣式。因之,當今競爭優勢的評估點,就在於地頭蛇數量的多少。獲得愈多地頭蛇的擁戴,就愈是強權。跟隨的地頭蛇數量少,就非強權(龍)。為了鞏固強龍地位,強權競相提供更好的API來吸引全球的地頭蛇(第三方AP開發者)。其作為包括:z增加API的服務內容,協助地頭蛇,讓地頭蛇降低AP開發成本。z提供更好的API的使用環境(如AP開發、測試工具等),讓地頭蛇的開發工作更加流暢。z提供AP市集,擴大AP的行銷管道。z提供AP買賣的收費機制(包括廣告營收),協助地頭蛇快速獲利。z等等。以上所述都是強龍送給地頭蛇的貼心禮物,換取廣大地頭蛇的擁戴,以鞏固強龍的地盤。這些是成為強龍的必備作為,也就是必備條件。但是,並非充分條件。那麼,充分條件是什麼呢?答案很簡單,就是:掌控地頭蛇,讓他們不能光拿禮物,然後掉頭走人。所以,強龍的「充分」作為是:透過API幕後的軟件機制來主導(即掌控)地頭蛇AP軟件架構,讓數十萬支AP軟件的架構都依賴於API幕後的機制,則廣大地頭蛇群,一方面能獲利,一方面又受約制,於是成為穩固金湯的「強龍/地頭蛇」產業聯合架構。這個神祕的幕後機制就是『應用框架(ApplicationFramework』。為何應用框架具有這項神秘的力量呢?就請繼續看下回的解釋了。1.5雲計算:主動的框架型API在上一小節裡,簡介了目前IT產業為何(Why)流行框架型API。本文將進一步說明框架型式API的特色,以及其幕後框架對整體系統控制權的巨大影響。被動型API平台開發者本應是強龍,雖然強龍制定API,然而卻是被地頭蛇(即AP開發者)所調用,強龍成為被調用者。於是,強龍失去控制權,導致龍困淺灘。雖然大家都知道,掌控API(介面或協定)就是主導者,就能主導金錢的流向,所以會是較大的獲利者。因此,API的制定者不一定是強龍。然而,「API制定者而且是調用者」就是強龍。至於,地頭蛇則是API的服從者、實踐者、被調用者。例如,在傳統的Linux環境裡,其API的主導形勢如下圖1所示:10AP-1平台(如Linux/Windows)AP-2AP-n控制權AP開發者的智慧平台開發者的智慧被動型API調用(Invoke)圖1-6、被動型APIz平台提供者(即平台開發者)制定API。z應用開發者主動調用API。z導致平台開發者龍困淺灘(或虎落平陽被犬欺),失去主導權。由於控制權掌握在AP開發者手中,所以在軟件架構上,平台開發者反而受制於AP開發者,這常常嚴重傷害平台軟件變動的自由度,進而導致整體系統失去彈性和活力,陷入困境。因而,最近20年來,IT產業逐漸放棄上