← Back to list

工程師講古時間 — — 何謂分散式元件

在同一個JVM中,我們可以輕易地從模組A呼叫模組B,那如果是在同一個機器裡的多個JVM間呢?我們要怎麼呼叫不同的模組?

阿寬 in 工程師講古時間 · 2021-07-04 13:45 · 0 claps · 2.0 min read
#分散式元件 #ejb #ole #corba
Open on Medium ↗

工程師講古時間 — — 何謂分散式元件

在同一個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 分為以下幾種:

  1. Session Bean: 分為以下兩種連線狀態stateful 與 stateless,建立連線是EJB與EJB之間的連線,原則上採用stateless為主
  2. Entity Bean: 代表一個table的一筆record,就是一個物件的概念,一旦被建立後EJB就會長期與database建立連線,會長期占用資源,為stateful 的連線狀態,故不適合給大量user使用
  3. Message Driven Bean: 非同步元件,不用彼此進行等待,故速度較快

網頁的同步與非同步方式:

  1. 非同步方式: Ajax 方式,request 送出後網頁持續運作,不會被卡住
  2. 同步方式: 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