part a06 a段架構師-跨自己平台的策略_twok
TRANSCRIPT
![Page 1: Part a06 a段架構師-跨自己平台的策略_twok](https://reader033.vdocuments.net/reader033/viewer/2022052621/55853d52d8b42ae70f8b52ac/html5/thumbnails/1.jpg)
基於軟硬整合觀點
By By 高煥堂高煥堂 [email protected] [email protected]
海峽兩岸海峽兩岸智慧電視智慧電視&&家庭商業策略與技術論壇家庭商業策略與技術論壇http://home-cloud.blogspot.tw/http://home-cloud.blogspot.tw/
跨跨自己平自己平台台策略策略
![Page 2: Part a06 a段架構師-跨自己平台的策略_twok](https://reader033.vdocuments.net/reader033/viewer/2022052621/55853d52d8b42ae70f8b52ac/html5/thumbnails/2.jpg)
內容內容
1. 策略-3:建立中介軟體(middleware) 2. 這個<策略-3>從哪裡來?3. 中介軟體跨平台的效益4. 中介軟體跨客戶端的效益5. 中介軟體的設計
![Page 3: Part a06 a段架構師-跨自己平台的策略_twok](https://reader033.vdocuments.net/reader033/viewer/2022052621/55853d52d8b42ae70f8b52ac/html5/thumbnails/3.jpg)
基於軟硬整合觀點11、、策略-3:
建立中介軟體(middleware)
![Page 4: Part a06 a段架構師-跨自己平台的策略_twok](https://reader033.vdocuments.net/reader033/viewer/2022052621/55853d52d8b42ae70f8b52ac/html5/thumbnails/4.jpg)
前言
![Page 5: Part a06 a段架構師-跨自己平台的策略_twok](https://reader033.vdocuments.net/reader033/viewer/2022052621/55853d52d8b42ae70f8b52ac/html5/thumbnails/5.jpg)
EIT
![Page 6: Part a06 a段架構師-跨自己平台的策略_twok](https://reader033.vdocuments.net/reader033/viewer/2022052621/55853d52d8b42ae70f8b52ac/html5/thumbnails/6.jpg)
EIT
跨Android大平台
![Page 7: Part a06 a段架構師-跨自己平台的策略_twok](https://reader033.vdocuments.net/reader033/viewer/2022052621/55853d52d8b42ae70f8b52ac/html5/thumbnails/7.jpg)
EIT
跨Android大平台策略:挾天子以令諸侯
![Page 8: Part a06 a段架構師-跨自己平台的策略_twok](https://reader033.vdocuments.net/reader033/viewer/2022052621/55853d52d8b42ae70f8b52ac/html5/thumbnails/8.jpg)
EIT
跨Android大平台策略:挾天子以令諸侯
跨晶片小平台
![Page 9: Part a06 a段架構師-跨自己平台的策略_twok](https://reader033.vdocuments.net/reader033/viewer/2022052621/55853d52d8b42ae70f8b52ac/html5/thumbnails/9.jpg)
EIT
跨Android大平台策略:挾天子以令諸侯
跨晶片小平台策略:把它<EIT>了
![Page 10: Part a06 a段架構師-跨自己平台的策略_twok](https://reader033.vdocuments.net/reader033/viewer/2022052621/55853d52d8b42ae70f8b52ac/html5/thumbnails/10.jpg)
EIT
跨Android大平台策略:挾天子以令諸侯
跨晶片小平台策略:把它<EIT>了
跨自己的平台
![Page 11: Part a06 a段架構師-跨自己平台的策略_twok](https://reader033.vdocuments.net/reader033/viewer/2022052621/55853d52d8b42ae70f8b52ac/html5/thumbnails/11.jpg)
EIT
跨Android大平台策略:挾天子以令諸侯
跨晶片小平台策略:把它<EIT>了
跨自己的平台策略:建立中介軟體
![Page 12: Part a06 a段架構師-跨自己平台的策略_twok](https://reader033.vdocuments.net/reader033/viewer/2022052621/55853d52d8b42ae70f8b52ac/html5/thumbnails/12.jpg)
建立中介軟體(middleware)
– 策略-1:把它”EIT(設計)”了– 策略-2:挾天子以令諸侯– 策略-3:建立中介軟體(middleware)
![Page 13: Part a06 a段架構師-跨自己平台的策略_twok](https://reader033.vdocuments.net/reader033/viewer/2022052621/55853d52d8b42ae70f8b52ac/html5/thumbnails/13.jpg)
基於軟硬整合觀點22、、這個這個<<策略策略-3>-3>從哪裡來從哪裡來??
![Page 14: Part a06 a段架構師-跨自己平台的策略_twok](https://reader033.vdocuments.net/reader033/viewer/2022052621/55853d52d8b42ae70f8b52ac/html5/thumbnails/14.jpg)
反思心中”不自覺的假設”
![Page 15: Part a06 a段架構師-跨自己平台的策略_twok](https://reader033.vdocuments.net/reader033/viewer/2022052621/55853d52d8b42ae70f8b52ac/html5/thumbnails/15.jpg)
商業模式
創新產品 架構設計
獨特性(軟硬整合)
普遍性 可靠性(跨平台) (測試)
產
品
策
略VISION
![Page 16: Part a06 a段架構師-跨自己平台的策略_twok](https://reader033.vdocuments.net/reader033/viewer/2022052621/55853d52d8b42ae70f8b52ac/html5/thumbnails/16.jpg)
獨特性(軟硬整合)
普遍性 可靠性 (跨平台) (測試)
產品策略
![Page 17: Part a06 a段架構師-跨自己平台的策略_twok](https://reader033.vdocuments.net/reader033/viewer/2022052621/55853d52d8b42ae70f8b52ac/html5/thumbnails/17.jpg)
• Assumption:只要能跨別人平台,又能跨自己的平台;就能擺脫平台的束縛,而獲得產品的普遍性。
![Page 18: Part a06 a段架構師-跨自己平台的策略_twok](https://reader033.vdocuments.net/reader033/viewer/2022052621/55853d52d8b42ae70f8b52ac/html5/thumbnails/18.jpg)
• 若<能跨別人平台,又能跨自己的平台>,則<能擺脫平台的束縛>。
• 若<能擺脫平台的束縛>,則<能獲得產品的普遍性>。
![Page 19: Part a06 a段架構師-跨自己平台的策略_twok](https://reader033.vdocuments.net/reader033/viewer/2022052621/55853d52d8b42ae70f8b52ac/html5/thumbnails/19.jpg)
P
Q基於EIT造形的策略,可實現跨平台
H
基於EIT造形的跨平台策略
跨晶片(小)平台跨Android(大)平台
![Page 20: Part a06 a段架構師-跨自己平台的策略_twok](https://reader033.vdocuments.net/reader033/viewer/2022052621/55853d52d8b42ae70f8b52ac/html5/thumbnails/20.jpg)
P
Q基於EIT造形的策略,可實現跨平台
H
基於EIT造形的跨平台策略
獲得產品的普遍性
![Page 21: Part a06 a段架構師-跨自己平台的策略_twok](https://reader033.vdocuments.net/reader033/viewer/2022052621/55853d52d8b42ae70f8b52ac/html5/thumbnails/21.jpg)
假定:若擁有跨平台性,而且能 跨客戶端;就能擁有普遍性。
H(假定)
![Page 22: Part a06 a段架構師-跨自己平台的策略_twok](https://reader033.vdocuments.net/reader033/viewer/2022052621/55853d52d8b42ae70f8b52ac/html5/thumbnails/22.jpg)
P
Q若有跨平台性,且跨客戶端;就能擁有普遍性。
H
取得接口制定權,且提供通用性接口。
獲得產品的普遍性
![Page 23: Part a06 a段架構師-跨自己平台的策略_twok](https://reader033.vdocuments.net/reader033/viewer/2022052621/55853d52d8b42ae70f8b52ac/html5/thumbnails/23.jpg)
• 引導我們去探索、 發現新事實。
擁有跨平台性,且跨客戶端。
基於EIT造形
提供通用性接口
![Page 24: Part a06 a段架構師-跨自己平台的策略_twok](https://reader033.vdocuments.net/reader033/viewer/2022052621/55853d52d8b42ae70f8b52ac/html5/thumbnails/24.jpg)
探索&學習未知事物
通用性接口的基本結構
![Page 25: Part a06 a段架構師-跨自己平台的策略_twok](https://reader033.vdocuments.net/reader033/viewer/2022052621/55853d52d8b42ae70f8b52ac/html5/thumbnails/25.jpg)
• 茲看看一個大家已經很熟悉的EIT造形:
![Page 26: Part a06 a段架構師-跨自己平台的策略_twok](https://reader033.vdocuments.net/reader033/viewer/2022052621/55853d52d8b42ae70f8b52ac/html5/thumbnails/26.jpg)
<I>
• 這個<E>可以提供一個接口,如下圖的IE:
![Page 27: Part a06 a段架構師-跨自己平台的策略_twok](https://reader033.vdocuments.net/reader033/viewer/2022052621/55853d52d8b42ae70f8b52ac/html5/thumbnails/27.jpg)
• <E>提供了IE接口給Client使用;於是Client透過IE接口而調用<E>的operation()函數,由於它是一個抽象函數,所以就直接執行了<T>的operation()函數的程式碼。這裡的IE接口與<I>接口是一致的。
• 它有一個更常見的變形:
![Page 28: Part a06 a段架構師-跨自己平台的策略_twok](https://reader033.vdocuments.net/reader033/viewer/2022052621/55853d52d8b42ae70f8b52ac/html5/thumbnails/28.jpg)
<I>
![Page 29: Part a06 a段架構師-跨自己平台的策略_twok](https://reader033.vdocuments.net/reader033/viewer/2022052621/55853d52d8b42ae70f8b52ac/html5/thumbnails/29.jpg)
• 其中的operation()函數將IE接口轉換成為<I>接口;於是Client透過IE接口而呼叫<E>的operation()具象函數,然後呼叫onOperation()抽象函數,就執行了<T>的onOperation()函數的實現程式碼。這裡的IE接口與<I>接口是不一樣的。
![Page 30: Part a06 a段架構師-跨自己平台的策略_twok](https://reader033.vdocuments.net/reader033/viewer/2022052621/55853d52d8b42ae70f8b52ac/html5/thumbnails/30.jpg)
• 其實,上述這是接口設計模式,是由兩個EIT造形所組成的,所以我們稱之為”樣式”(Pattern),而不稱為”造形”(Form)。
![Page 31: Part a06 a段架構師-跨自己平台的策略_twok](https://reader033.vdocuments.net/reader033/viewer/2022052621/55853d52d8b42ae70f8b52ac/html5/thumbnails/31.jpg)
EIT
EIT
![Page 32: Part a06 a段架構師-跨自己平台的策略_twok](https://reader033.vdocuments.net/reader033/viewer/2022052621/55853d52d8b42ae70f8b52ac/html5/thumbnails/32.jpg)
• 上面的EIT造形,是一個退化的EIT造形,沒有限定它的<E>;也可以說,所有的Client都能扮演它的<E>角色,而是這個IE接口就成為”通用性接口”了。
![Page 33: Part a06 a段架構師-跨自己平台的策略_twok](https://reader033.vdocuments.net/reader033/viewer/2022052621/55853d52d8b42ae70f8b52ac/html5/thumbnails/33.jpg)
![Page 34: Part a06 a段架構師-跨自己平台的策略_twok](https://reader033.vdocuments.net/reader033/viewer/2022052621/55853d52d8b42ae70f8b52ac/html5/thumbnails/34.jpg)
• 其實,通用性接口常常示成雙成對的,例如下圖裡的<IMS>是對 Client端的通用性接口;此外,還常常設計一個對 Server端的通用性接口,它就是大家熟悉的EIT造形裡的<I>了。
![Page 35: Part a06 a段架構師-跨自己平台的策略_twok](https://reader033.vdocuments.net/reader033/viewer/2022052621/55853d52d8b42ae70f8b52ac/html5/thumbnails/35.jpg)
框架I
![Page 36: Part a06 a段架構師-跨自己平台的策略_twok](https://reader033.vdocuments.net/reader033/viewer/2022052621/55853d52d8b42ae70f8b52ac/html5/thumbnails/36.jpg)
• 隨著系統的成長,會設計出更多的通用性接口,就成為一個框架,或俗稱的”中介軟體”。
![Page 37: Part a06 a段架構師-跨自己平台的策略_twok](https://reader033.vdocuments.net/reader033/viewer/2022052621/55853d52d8b42ae70f8b52ac/html5/thumbnails/37.jpg)
框架
![Page 38: Part a06 a段架構師-跨自己平台的策略_twok](https://reader033.vdocuments.net/reader033/viewer/2022052621/55853d52d8b42ae70f8b52ac/html5/thumbnails/38.jpg)
中間件
![Page 39: Part a06 a段架構師-跨自己平台的策略_twok](https://reader033.vdocuments.net/reader033/viewer/2022052621/55853d52d8b42ae70f8b52ac/html5/thumbnails/39.jpg)
中介軟體
![Page 40: Part a06 a段架構師-跨自己平台的策略_twok](https://reader033.vdocuments.net/reader033/viewer/2022052621/55853d52d8b42ae70f8b52ac/html5/thumbnails/40.jpg)
• 其實,通用性接口常常示成雙成對的,其中一個是對 Client端的通用性接口,讓我們的產品能跨客戶端。另一個是對 Server端的通用性接口,它就是大家熟悉的EIT造形裡的<I>了,讓我們的產品能跨平台。
![Page 41: Part a06 a段架構師-跨自己平台的策略_twok](https://reader033.vdocuments.net/reader033/viewer/2022052621/55853d52d8b42ae70f8b52ac/html5/thumbnails/41.jpg)
隨著對未知事物的探索和學習,
新事實顯示支援我們的假定(H) 。
![Page 42: Part a06 a段架構師-跨自己平台的策略_twok](https://reader033.vdocuments.net/reader033/viewer/2022052621/55853d52d8b42ae70f8b52ac/html5/thumbnails/42.jpg)
P
Q若有跨平台性,且跨客戶端;就能擁有普遍性。
H
取得接口制定權,且提供通用性接口。
獲得產品的普遍性
![Page 43: Part a06 a段架構師-跨自己平台的策略_twok](https://reader033.vdocuments.net/reader033/viewer/2022052621/55853d52d8b42ae70f8b52ac/html5/thumbnails/43.jpg)
• 於是,我們繼續探索這個<實踐策略-3>。
![Page 44: Part a06 a段架構師-跨自己平台的策略_twok](https://reader033.vdocuments.net/reader033/viewer/2022052621/55853d52d8b42ae70f8b52ac/html5/thumbnails/44.jpg)
基於軟硬整合觀點33、、中介軟體跨平中介軟體跨平台台的效益的效益
沒錢就改版,改版就有錢
![Page 45: Part a06 a段架構師-跨自己平台的策略_twok](https://reader033.vdocuments.net/reader033/viewer/2022052621/55853d52d8b42ae70f8b52ac/html5/thumbnails/45.jpg)
確保自己平台的變動自由度
• 美好狀態:讓自己的產品版本不斷升級之中, 繼續維持自己產品的高度變動自由度,積極鼓勵自家人的創新精神,持續展現自己產品的獨創性。
• 目的:沒錢就改版,改版就有錢。
![Page 46: Part a06 a段架構師-跨自己平台的策略_twok](https://reader033.vdocuments.net/reader033/viewer/2022052621/55853d52d8b42ae70f8b52ac/html5/thumbnails/46.jpg)
• 方法:把自己的平台”EIT(設計)”了。• 說明:設計一個新平台(即新<E&I>) ,然
後規劃外掛程式<T>來包容自己(原有)平台的版本變動。
• 比喻:設計一個萬里長城(即新<E&I>) 來保護關內居民的變動自由度(即安居樂業)。記得,萬里長城不是為了北方民族的利益,而是為了關內居民的自由度和安居樂業。
![Page 47: Part a06 a段架構師-跨自己平台的策略_twok](https://reader033.vdocuments.net/reader033/viewer/2022052621/55853d52d8b42ae70f8b52ac/html5/thumbnails/47.jpg)
• 無論是: 1) 跨別人的晶片平台; 2) 跨Android大平台(版本升級&碎片化) ; 3) 跨自己平台(保護自己版本更新自由度)。
• 都是要確保自己變動的自由度,這自由度就意味著穩定性(不因別人平台的變而變)。
![Page 48: Part a06 a段架構師-跨自己平台的策略_twok](https://reader033.vdocuments.net/reader033/viewer/2022052621/55853d52d8b42ae70f8b52ac/html5/thumbnails/48.jpg)
• 平台框架(Framework)是四合院的圍牆,API就是大門口。
• 四合院圍牆的主要用途是:牽制外人的入侵,保護院裡人們的安全。因之,<開發框架、制定API>是主事者(一家之主)的責任。
四合院的比喻
![Page 49: Part a06 a段架構師-跨自己平台的策略_twok](https://reader033.vdocuments.net/reader033/viewer/2022052621/55853d52d8b42ae70f8b52ac/html5/thumbnails/49.jpg)
• 框架(Framework)是萬里長城,API就是關口(如山海關)。萬里長城有兩項用途:1. 王者可以框住塞外人民,號令關內居民,成為強勢王者。2. 牽制塞外的軍隊入侵,保護關內居民,成為仁之王者。<開發框架、制定API>是主事者的責任。
長城的比喻
![Page 50: Part a06 a段架構師-跨自己平台的策略_twok](https://reader033.vdocuments.net/reader033/viewer/2022052621/55853d52d8b42ae70f8b52ac/html5/thumbnails/50.jpg)
• 許多人都以為只有強者才能制定API,這是一個迷思。
• 其實,框架(Framework)是萬里長城,API就是關口(如山海關)。在秦國、漢時代,就是為了<抵抗>北方強敵,所以<不得不>舉全國之力築城防禦。因之,弱者而不做API,只做App,只好披髮左衽(當強敵的奴工)矣。
![Page 51: Part a06 a段架構師-跨自己平台的策略_twok](https://reader033.vdocuments.net/reader033/viewer/2022052621/55853d52d8b42ae70f8b52ac/html5/thumbnails/51.jpg)
基於軟硬整合觀點44、、中介軟體跨客戶端的效益中介軟體跨客戶端的效益
擴大應用範圍、增加用戶量
![Page 52: Part a06 a段架構師-跨自己平台的策略_twok](https://reader033.vdocuments.net/reader033/viewer/2022052621/55853d52d8b42ae70f8b52ac/html5/thumbnails/52.jpg)
• 在產業裡並不是每一個廠商都有足夠的主導權來制定API,所以中介軟體妥善提供通用性介面,能擴大應用範圍、擁有普遍性;能跨客戶端、增加客戶量。
![Page 53: Part a06 a段架構師-跨自己平台的策略_twok](https://reader033.vdocuments.net/reader033/viewer/2022052621/55853d52d8b42ae70f8b52ac/html5/thumbnails/53.jpg)
通用性接口
擴大
應用範圍
![Page 54: Part a06 a段架構師-跨自己平台的策略_twok](https://reader033.vdocuments.net/reader033/viewer/2022052621/55853d52d8b42ae70f8b52ac/html5/thumbnails/54.jpg)
◎擁有通用性,兼顧獨特性• 自己平台愈多差異化(獨特性),在商場上,
可能擁有更多優勢。• 在規劃中介軟體時,除了提供穩定的共同
API之外,往往也需要凸顯自己平台的獨特性,如下圖:
![Page 55: Part a06 a段架構師-跨自己平台的策略_twok](https://reader033.vdocuments.net/reader033/viewer/2022052621/55853d52d8b42ae70f8b52ac/html5/thumbnails/55.jpg)
![Page 56: Part a06 a段架構師-跨自己平台的策略_twok](https://reader033.vdocuments.net/reader033/viewer/2022052621/55853d52d8b42ae70f8b52ac/html5/thumbnails/56.jpg)
• 跨自己平台的中介軟體,能夠兼具有<通用性服務>和<獨特性服務>,才是完美的架構設計。
![Page 57: Part a06 a段架構師-跨自己平台的策略_twok](https://reader033.vdocuments.net/reader033/viewer/2022052621/55853d52d8b42ae70f8b52ac/html5/thumbnails/57.jpg)
基於軟硬整合觀點
55、、中介軟體的設計中介軟體的設計
![Page 58: Part a06 a段架構師-跨自己平台的策略_twok](https://reader033.vdocuments.net/reader033/viewer/2022052621/55853d52d8b42ae70f8b52ac/html5/thumbnails/58.jpg)
曹操框架能夠保護大員外<我的module>的變動自由度和穩定性。
Stub就是
曹操類
![Page 59: Part a06 a段架構師-跨自己平台的策略_twok](https://reader033.vdocuments.net/reader033/viewer/2022052621/55853d52d8b42ae70f8b52ac/html5/thumbnails/59.jpg)
擺脫掉App
的束縛(即
跨App了)
曹操框架擴大成為一個平台框架
![Page 60: Part a06 a段架構師-跨自己平台的策略_twok](https://reader033.vdocuments.net/reader033/viewer/2022052621/55853d52d8b42ae70f8b52ac/html5/thumbnails/60.jpg)
中介軟體
![Page 61: Part a06 a段架構師-跨自己平台的策略_twok](https://reader033.vdocuments.net/reader033/viewer/2022052621/55853d52d8b42ae70f8b52ac/html5/thumbnails/61.jpg)
• 類似於建立萬里長城,來保護所有關內居民(我的各種版本的模組)的安全與自由。
![Page 62: Part a06 a段架構師-跨自己平台的策略_twok](https://reader033.vdocuments.net/reader033/viewer/2022052621/55853d52d8b42ae70f8b52ac/html5/thumbnails/62.jpg)
最著名的中介軟體:微軟的 .NET框架
![Page 63: Part a06 a段架構師-跨自己平台的策略_twok](https://reader033.vdocuments.net/reader033/viewer/2022052621/55853d52d8b42ae70f8b52ac/html5/thumbnails/63.jpg)
中介軟體(平台框架)
我的平台App#1
App#2
別人的平台
E&I
TT
T
P
中介軟體在整體架構中的角色
![Page 64: Part a06 a段架構師-跨自己平台的策略_twok](https://reader033.vdocuments.net/reader033/viewer/2022052621/55853d52d8b42ae70f8b52ac/html5/thumbnails/64.jpg)
• 擁有自己的中介軟體是最理想的,因為擁有API制定權,就有足夠的話語權。
• 自己擁有中介軟體,就等於擁有一座四合院,包括自己的圍牆(框架<E>) 、內部自己的房間(平台<P>) 、自己的門口(介面<I>)來服務及框住外部別人的App(即外掛程式<T>) ;這是最理想的,如下圖:
![Page 65: Part a06 a段架構師-跨自己平台的策略_twok](https://reader033.vdocuments.net/reader033/viewer/2022052621/55853d52d8b42ae70f8b52ac/html5/thumbnails/65.jpg)
我的平台App#1
App#2
別人的平台
中介軟體(平台框架)E&I
P
自己的<E&I>
充分保護
<P>
![Page 66: Part a06 a段架構師-跨自己平台的策略_twok](https://reader033.vdocuments.net/reader033/viewer/2022052621/55853d52d8b42ae70f8b52ac/html5/thumbnails/66.jpg)
• 建立自己的中介軟體(即<E&I>,可凸顯自己的獨特性;並且能制定自己的API(即<I>),來框住App和別人的平台(即<T>) 。
• 掌握 API、制定API,牽制App;然後反過來號令底層,就是贏家。
• 既能主導API,就能號令上下,成為上下爭相抬轎的教主(轎主)。
![Page 67: Part a06 a段架構師-跨自己平台的策略_twok](https://reader033.vdocuments.net/reader033/viewer/2022052621/55853d52d8b42ae70f8b52ac/html5/thumbnails/67.jpg)
◎擁有通用性,兼顧獨特性• 自己平台愈多差異化(獨特性),在商場上,
可能擁有更多優勢。• 在規劃中介軟體時,除了提供穩定的共同
API之外,往往也需要凸顯自己平台的獨特性,如下圖:
![Page 68: Part a06 a段架構師-跨自己平台的策略_twok](https://reader033.vdocuments.net/reader033/viewer/2022052621/55853d52d8b42ae70f8b52ac/html5/thumbnails/68.jpg)
![Page 69: Part a06 a段架構師-跨自己平台的策略_twok](https://reader033.vdocuments.net/reader033/viewer/2022052621/55853d52d8b42ae70f8b52ac/html5/thumbnails/69.jpg)
• 跨自己平台的中介軟體,能夠兼具有<通用性服務>和<獨特性服務>,才是完美的架構設計。