Camel中的幾個重要概念之 Endpoint

前段時間和一些朋友聊過Apache Camel , 他們都反映一個問題就是有關Camel構架的介紹文檔很少。其實在Camel發行包中所帶的文檔Camel Manual 就有一段對Camel內部設計有一個比較好的介紹。我在這裏把其中大部分的內容 翻譯成了中文,希望能對大家瞭解Camel有所幫助。

Endpoint
Endpoint這個詞以前經常被用來描述進程間通信。例如,在客戶端與服務器之間的通訊,客戶端是一個Endpoint和服務器是另外一個Endpoint。根據不同的情況下,一個Endpoint可能指的地址,如一個TCP通信的(主機:端口)對,也可能是指與這個地址相對應的一個軟件實體。例如,如果大家使用“ www.example.com:80 ”來描述一個Endpoint。這些Endpoint可能是指實際的端口上的主機名稱(即地址) ,也可能是指與地址相關的的網頁服務器(即在這個地址之上運行的軟件地址) 。通常情況下,這種地址和在這個地址之上運行的軟件之前的區別並不是一個重要問題。

一些中間件技術可以使一些軟件實體的綁定在相同的物理地址上。例如, CORBA是一種面向對象的遠程過程調用( RPC )的中間件標準。如果一個CORBA的服務器進程包含幾個對象,客戶端可以與這些在同一物理地址(主機:端口)之上的任意對象進行通訊 ,但當客戶端想與特定對象進行通訊是, 需要指定這個對象的邏輯地址(在CORBA中稱爲IOR)。 IOR是由物理地址(主機:端口) ,以及一個唯一識別的對象在其服務器進程標識所組成。 (IOR還包含了與此本次討論無關其他一些額外的信息。)當談論CORBA的時候,有些人可能會使用“endpoint”來描述CORBA的服務器的物理地址,而其他人可能使用Endpoint來描述一個CORBA對象的邏輯地址,和其他人可能會使用這個詞來描述下面這些:

    * CORBA的服務器進程的物理地址(主機:端口)
    * CORBA對象的邏輯地址(主機:端口加上編號)
    * CORBA的服務器進程(相對重量級的軟件實體)
    * 一個基於CORBA對象(一個輕量級的軟件實體)


正因爲如此,你可以看到Endpoint這個詞至少在兩方面是模糊的。首先,它可能是指一個地址或聯絡軟件實體在該地址。其次,粒度上可能是模糊的:一個重量級與輕量級的軟件實體,或物理地址與邏輯地址。瞭解了Endpoint這個名詞在不同場景下的不同描述可以幫助我們更好地理解爲什麼Camel中的Endpoint。

Camel中的Endpoint支持許多不同的通信技術。以下是Camel所支持Endpoint。

    * 一個JMS隊列。
    * 一個Web服務。
    * 一個文件。文件可能聽起來不是一個典型的Endoint端點。但是你可以這麼想,一些應用系統會把信息寫到一個文件中,然後另一個應用程序可能讀取該文件獲得這一信息。
    * 一個FTP服務器。
    * 一個電子郵件地址。客戶可以發送郵件到電子郵件地址,和一臺服務器可以讀取的這個從郵件服務器傳入的郵件。
    * 一個POJO (普通舊Java對象)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章