<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="/stylesheets/rss.css"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>Extreme Pattern: Bundle-to-bundle OSGi Network</title>
    <link>http://blog.extremepattern.com/articles/2006/11/30/bundle-to-bundle-osgi-network</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description>enjoy</description>
    <item>
      <title>Bundle-to-bundle OSGi Network</title>
      <description>&lt;h3&gt;源起&lt;/h3&gt;


	&lt;p&gt;日前進行了一陣子的 hello spring-osgi 系列練習，學著如何將原先緊密結合的軟體分散為較為鬆散的網絡結合方式，對 OSGi 的觀察集中在這裡寫。&lt;/p&gt;


	&lt;p&gt;因為是一種包包(Bundle)之間的網路，下簡稱為 &lt;span class="caps"&gt;B2B&lt;/span&gt;，並非企業對企業的意思，反而比較像是 &lt;span class="caps"&gt;P2P&lt;/span&gt; 這類網路。&lt;/p&gt;


	&lt;h3&gt;Anemic Bundle Model ?&lt;/h3&gt;


	&lt;p&gt;做這類網絡需要平台支援，這裡用的是 OSGi，練習做著做著想到似乎越做越像某種貧血模式。之前大量採用空轉包 remix bundle 的方式來當這類網路的節點，這樣是否會形成某種 Anemic Bundle Model 現象，花費成本在這類不穩定關係網路平台(OSGi)上，卻只建構不需要這類不穩定關係平台的包(Bundle)。&lt;/p&gt;


	&lt;p&gt;在整合 spring 上，需要跟很多的既有 lib 連結，來使用這些既有 &lt;span class="caps"&gt;API&lt;/span&gt; 提供的服務，一開始為求方便與習慣，會反覆地作之前提到的 remix 轉包動作，慢慢地感覺到包包之間這種去中心化的連結方式和之前 jar 連結方式的不同，這樣做是否適合。&lt;/p&gt;


	&lt;p&gt;觀察增加的工作量有不少是調整包與包之間的輸出的服務(API)規格，之前的 Jar-to-jar(J2J) 是綁進來就可以用，屬於比較一種堅固的既有關係，類似人類的血緣關係，B2B 則是一種鬆散的關係，類似朋友之間的關係。&lt;/p&gt;


	&lt;p&gt;這種關係的不確定性會帶來彈性跟成本，就像交朋友一樣，可選擇，可拒絕，可接受但是也代表維護這種複雜不穩定關係的成本比較高。&lt;/p&gt;


	&lt;p&gt;朋友關係可不可以像親人關係一樣對待永遠沒有答案，只是採用某種連結特徵意味著某種特徵成本，舉 &lt;a href="http://www.martinfowler.com/bliki/AnemicDomainModel.html"&gt;Anemic Domain Model&lt;/a&gt; 為例，採用 Domain Model 這類關係網路需要花費錢在 &lt;span class="caps"&gt;ORM&lt;/span&gt; 上面，但是卻在網路節點上大量採用不需要 &lt;span class="caps"&gt;ORM&lt;/span&gt; 的簡單物件，有點本末倒置。&lt;/p&gt;


	&lt;p&gt;http://en.wikipedia.org/wiki/Decentralization&lt;/p&gt;


	&lt;p&gt;http://en.wikipedia.org/wiki/Peer-to-peer&lt;/p&gt;


	&lt;h3&gt;Spring-OSGi = &lt;span class="caps"&gt;BB2BB&lt;/span&gt; Network&lt;/h3&gt;


	&lt;p&gt;Spring 提供另一種 &lt;span class="caps"&gt;B2B&lt;/span&gt; 網路是 Bean-to-bean，這類網路也是類似 &lt;span class="caps"&gt;J2J&lt;/span&gt; 網路，屬於既有堅硬關係的網路。利用 Spring-OSGi 將這個 &lt;span class="caps"&gt;B2B&lt;/span&gt; 包在另一個 &lt;span class="caps"&gt;B2B&lt;/span&gt; 之中形成簡稱的 &lt;span class="caps"&gt;BB2BB&lt;/span&gt; Network 如下，於是 beanHehe 可以連結到 beanHaha，通過堅固穩定關聯的 BeanNetwork 與鬆散不穩定關聯的 BundleNetwork。&lt;/p&gt;


	&lt;p&gt;BeanHaha-BeanNetwork-Bundle-BundelNetwork-Bundle-BeanNetwork-BeanHehe&lt;/p&gt;


	&lt;p&gt;&lt;img src="/files/bb2bb.png" alt="" /&gt;&lt;/p&gt;


	&lt;p&gt;這類網路有緊有密的網路關係類似人際網路，也代表人際網路的不特定性也會展現在這類網路，
物件導向利用抽象化映射現實環境以解決問題，這類關係是否可以用服務導向來映射，還要再觀察。&lt;/p&gt;


	&lt;h3&gt;&lt;span class="caps"&gt;SOA&lt;/span&gt; (TODO)&lt;/h3&gt;


	&lt;p&gt;Service-oriented architecture (SOA)
http://en.wikipedia.org/wiki/Service-oriented_architecture&lt;/p&gt;</description>
      <pubDate>Thu, 30 Nov 2006 17:57:00 -0800</pubDate>
      <guid isPermaLink="false">urn:uuid:02f379e2-e8e8-44e2-a832-f88aeccb2df1</guid>
      <author>LIN</author>
      <link>http://blog.extremepattern.com/articles/2006/11/30/bundle-to-bundle-osgi-network</link>
      <category>java</category>
    </item>
  </channel>
</rss>

