Bundle-to-bundle OSGi Network
Nov
源起
日前進行了一陣子的 hello spring-osgi 系列練習,學著如何將原先緊密結合的軟體分散為較為鬆散的網絡結合方式,對 OSGi 的觀察集中在這裡寫。
因為是一種包包(Bundle)之間的網路,下簡稱為 B2B,並非企業對企業的意思,反而比較像是 P2P 這類網路。
Anemic Bundle Model ?
做這類網絡需要平台支援,這裡用的是 OSGi,練習做著做著想到似乎越做越像某種貧血模式。之前大量採用空轉包 remix bundle 的方式來當這類網路的節點,這樣是否會形成某種 Anemic Bundle Model 現象,花費成本在這類不穩定關係網路平台(OSGi)上,卻只建構不需要這類不穩定關係平台的包(Bundle)。
在整合 spring 上,需要跟很多的既有 lib 連結,來使用這些既有 API 提供的服務,一開始為求方便與習慣,會反覆地作之前提到的 remix 轉包動作,慢慢地感覺到包包之間這種去中心化的連結方式和之前 jar 連結方式的不同,這樣做是否適合。
觀察增加的工作量有不少是調整包與包之間的輸出的服務(API)規格,之前的 Jar-to-jar(J2J) 是綁進來就可以用,屬於比較一種堅固的既有關係,類似人類的血緣關係,B2B 則是一種鬆散的關係,類似朋友之間的關係。
這種關係的不確定性會帶來彈性跟成本,就像交朋友一樣,可選擇,可拒絕,可接受但是也代表維護這種複雜不穩定關係的成本比較高。
朋友關係可不可以像親人關係一樣對待永遠沒有答案,只是採用某種連結特徵意味著某種特徵成本,舉 Anemic Domain Model 為例,採用 Domain Model 這類關係網路需要花費錢在 ORM 上面,但是卻在網路節點上大量採用不需要 ORM 的簡單物件,有點本末倒置。
http://en.wikipedia.org/wiki/Decentralization
http://en.wikipedia.org/wiki/Peer-to-peer
Spring-OSGi = BB2BB Network
Spring 提供另一種 B2B 網路是 Bean-to-bean,這類網路也是類似 J2J 網路,屬於既有堅硬關係的網路。利用 Spring-OSGi 將這個 B2B 包在另一個 B2B 之中形成簡稱的 BB2BB Network 如下,於是 beanHehe 可以連結到 beanHaha,通過堅固穩定關聯的 BeanNetwork 與鬆散不穩定關聯的 BundleNetwork。
BeanHaha-BeanNetwork-Bundle-BundelNetwork-Bundle-BeanNetwork-BeanHehe

這類網路有緊有密的網路關係類似人際網路,也代表人際網路的不特定性也會展現在這類網路, 物件導向利用抽象化映射現實環境以解決問題,這類關係是否可以用服務導向來映射,還要再觀察。
SOA (TODO)
Service-oriented architecture (SOA) http://en.wikipedia.org/wiki/Service-oriented_architecture