工程師講古時間 — — 何謂分散式元件
在同一個JVM中,我們可以輕易地從模組A呼叫模組B,那如果是在同一個機器裡的多個JVM間呢?我們要怎麼呼叫不同的模組?
工程師講古時間 — — 何謂分散式元件
在同一個JVM中,我們可以輕易地從模組A呼叫模組B,那如果是在同一個機器裡的多個JVM間呢?我們要怎麼呼叫不同的模組?
其實這樣的概念早在微軟誕生初期,就有類似的概念,稱為【分散式元件】,早期Windows的作法稱OLE(Object Linking And Embed),這是微軟針對Office word、powerpoint、excel 所做的分散式元件框架,透過Linking的方式可以在word裡面指定excel檔案,並連結過去執行excel,Embed是指可以在word裡面把excel檔案放進來,OLE 搭起了word和excel 間的溝通橋樑,也就是word和excel彼此間可以互相呼叫,在Windows中有個Registry的小型資料庫,任何需要彼此做連結的應用程式,必須登錄在其中,後來微軟把Registry改為COM元件,COM屬於單機版,DCOM是多人多機版(Windows Server系列),其實作方式是將每個應用程式編碼成UUID做儲存,並登錄在COM中,至於在Linux中使用CORBA技術來實現分散式元件,因為不同作業系統使用不同技術,因此Windows的應用程式無法在Linux中執行
在Java中如何實作分散式元件: 使用EJB(Enterprise JavaBean)作為分散式元件的框架,其實作方式為將JVM裡的物件轉換成字串,透過網路傳輸等機制,傳送到同一台機器或不同台機器上的JVM,再將字串轉換為JVM裡的物件,進而達到互相通訊的目的。
EJB 分為以下幾種:
- Session Bean: 分為以下兩種連線狀態stateful 與 stateless,建立連線是EJB與EJB之間的連線,原則上採用stateless為主
- Entity Bean: 代表一個table的一筆record,就是一個物件的概念,一旦被建立後EJB就會長期與database建立連線,會長期占用資源,為stateful 的連線狀態,故不適合給大量user使用
- Message Driven Bean: 非同步元件,不用彼此進行等待,故速度較快
網頁的同步與非同步方式:
- 非同步方式: Ajax 方式,request 送出後網頁持續運作,不會被卡住
- 同步方式: Form-Submit 方式,request 送出後網頁卡住,等待response做回傳
메타데이터
- post_id
- 8702a1383cd4
- slug
- 工程師講古時間-何謂分散式元件-8702a1383cd4
- url
- https://medium.com/%E5%B7%A5%E7%A8%8B%E5%B8%AB%E8%AC%9B%E5%8F%A4%E6%99%82%E9%96%93/%E5%B7%A5%E7%A8%8B%E5%B8%AB%E8%AC%9B%E5%8F%A4%E6%99%82%E9%96%93-%E4%BD%95%E8%AC%82%E5%88%86%E6%95%A3%E5%BC%8F%E5%85%83%E4%BB%B6-8702a1383cd4
- canonical_url
- https://medium.com/%E5%B7%A5%E7%A8%8B%E5%B8%AB%E8%AC%9B%E5%8F%A4%E6%99%82%E9%96%93/%E5%B7%A5%E7%A8%8B%E5%B8%AB%E8%AC%9B%E5%8F%A4%E6%99%82%E9%96%93-%E4%BD%95%E8%AC%82%E5%88%86%E6%95%A3%E5%BC%8F%E5%85%83%E4%BB%B6-8702a1383cd4
- author_url
- https://medium.com/@lin19921127
- status
- ok
- fetched_at
- 2026-07-28 04:21:46