寫一篇文章、發現一次自覺得有意思的SOA架構方面的讨論,源于昨天AgileEAS.NET SOA 平台群(113723486)裡幾個群友的一次關于ESB的一次讨論。
大家的讨論觀點主要內建在:對于ESB的定義也有類觀點,一類觀點是把ESB定位于SOA架構之中的基礎服務設施(書上都這麼講),還有一類觀點就是ESB做為異構系統之間的內建和整合之間,其實ESB本身都能實作兩種觀點的功能,隻是覺得在時下,應該更偏重于那一方面,兩者的本質上最大的差別是,同一系統内部的功能是否需要經過ESB進行調用。
ESB是SOA架構的基礎服務設施的觀點,我們可以用買下圖來表示:
這個圖應該是最符合SOA架構和ESB的一些書籍之間的ESB架構圖,我們可以簡單的解釋一上,即史是A系統調用A系統的服務,也必須經過ESB系統,那麼有ESB系統的規劃和建設就是一個必須早期考慮的問題,即我們必須先建立SOA的基礎架構和ESB體系,并且在這個架構上面開發A系統、B系統、C系統,這是一種觀點,那麼在目前我們國内,政府、企業上司應答是很喜歡這樣的結構的,統一規劃、場面宏大,這裡面就出現一個問題,整體系統被規劃的非常完美,但是實際上這更好像一個用遠也不能完全的夢(永遠都沒有完美的東西),實作成本就不可估量。
ESB最好是做為異構系統之間的內建整合之用,我們可以用買下圖來表示:
這個觀點是我的觀點為,即我認識這是一種比較現實和比較經濟的觀點,ESB用被做于異構系統之間的整合,他是支援異構系統的整合的基礎設施,而不是基于統計規劃下的基礎服務設施,基于這個觀點的原因是,企業内部各種各樣的系統不可能全部推翻了,全部規劃和重來,很多企業的供應商在某一領域也做的很專業,博衆家之長并進行內建應該是一個比較現實和可取的做法,一個系統一個系統穩定有序的實作,應該是比全部重新規劃具體更小的風險。
金靓(123140395) 13:40:58
大家好
金靓(123140395) 13:41:34
想做服務的統一調用
也就是說所有的業務系統都走服務總線
通過總線來進行業務服務的調用
簡單的消息交換模式沒問題
請求/響應
但是雙向交換模式下如何實作呢
何戈州<[email protected]> 13:52:15
雙工嗎?
金靓(123140395) 13:52:23
對的
何戈州<[email protected]> 13:52:36
那也沒問題
金靓(123140395) 13:52:57
能否給點思路
何戈州<[email protected]> 13:53:05
socket 問老魏
金靓(123140395) 13:53:14
基于WCF
魏瓊東(47920381) 14:19:02
@納尼 雙工模式貌似ESB實作不了吧。
納尼(123140395) 14:19:27
BIZTALK裡也不能嗎
納尼(123140395) 14:19:48
@魏瓊東 貌似可以的
魏瓊東(47920381) 14:21:06
但是全雙工的通論,讓ESB通知應用這事難了點
納尼(123140395) 14:21:23
是以我有點郁悶
納尼(123140395) 14:21:41
其實本來沒去設計雙向通信
魏瓊東(47920381) 14:21:46
實作全雙方都是socket吧
魏瓊東(47920381) 14:22:10
除非用ESB回調某個系統的服務
納尼(123140395) 14:22:27
魏瓊東(47920381) 14:22:32
即應用掉用===》ESB===》應用的服務
魏瓊東(47920381) 14:22:40
那你說的是ESB的服務路由了
納尼(123140395) 15:35:20
雖然沒有什麼含量,而且是在H.O.T指導下才弄明白的,但還是應該分享一下給大家
納尼(123140395) 15:36:06
剛才我說的那個用戶端需要調用服務實作雙向通信,基于ESB
納尼(123140395) 15:36:52
ESB提供雙向接口服務
納尼(123140395) 15:37:54
其實我想做的ESB,要實作服務的統一調用
納尼(123140395) 15:38:09
所有的用戶端都通過ESB來調用業務服務
納尼(123140395) 15:38:39
這樣的話,勢必需要ESB對用戶端公開的接口都要相對穩定
納尼(123140395) 15:38:47
自己要做
納尼(123140395) 15:39:24
也就是說A->ESB->B->ESB->A
也就是說A->ESB->B->ESB->A
過錯 <[email protected]> 15:39:36
java 不怕麻煩用mule 哈哈
魏瓊東(47920381) 15:39:37
這個做法算是ESB的濫用吧
納尼(123140395) 15:39:51
基于WCF下實作,也就是ESB公開一個回到契約
魏瓊東(47920381) 15:40:21
WCF本身在TCP通信下本身就回回調
魏瓊東(47920381) 15:40:28
但是是要選擇TCP通信的前提
納尼(123140395) 15:40:28
@魏瓊東 您指的是統一調用嗎?
納尼(123140395) 15:43:12
ME TOO
魏瓊東(47920381) 15:43:18
這說明在找抽
納尼(123140395) 15:43:30
我也這麼覺得
魏瓊東(47920381) 15:43:34
是在搞為了ESB搞ESB
魏瓊東(47920381) 15:43:42
是沒有需求搞有ESB
魏瓊東(47920381) 15:43:47
真正企業有很多不同的系統
魏瓊東(47920381) 15:43:53
比如PB開發的,VB開發的
魏瓊東(47920381) 15:43:56
JAVA開發的的
魏瓊東(47920381) 15:44:00
.NET開發的
魏瓊東(47920381) 15:44:04
資料庫跑在ORACLE上的
魏瓊東(47920381) 15:44:08
SQLServer上的
馮永博(309805629) 15:44:10
sharepoint 搞麼
魏瓊東(47920381) 15:44:11
還有MYSQL的
納尼(123140395) 15:44:12
是的
魏瓊東(47920381) 15:44:28
那麼在這種情況下ESB就是解決問題的存在的先決條件之一
魏瓊東(47920381) 15:44:39
ESB是因為大家做接口做郁悶了,才上的。
魏瓊東(47920381) 15:44:42
不是一開始就上的。
納尼(123140395) 15:44:54
魏瓊東(47920381) 15:45:01
ESB的設計更多的是解決不修改各個系統而實作與系統的對接
納尼(123140395) 15:45:14
但是ESB更多的是更好的管理服務
魏瓊東(47920381) 15:45:18
不是了你把所有服務都通過ESB,所有系統都修改一通
納尼(123140395) 15:45:27
您說的是系統的內建
魏瓊東(47920381) 15:45:29
那不是沒事找抽嘛
納尼(123140395) 15:45:58
您說的正在做,隻不過是其他人
魏瓊東(47920381) 15:46:04
ESB的做用不就是做這事的嘛
魏瓊東(47920381) 15:46:21
當然,ESB也可以是SOA的基礎設施
魏瓊東(47920381) 15:46:26
所有的服務都經由
魏瓊東(47920381) 15:46:28
ESB
魏瓊東(47920381) 15:46:31
這個也沒錯
納尼(123140395) 15:46:38
納尼(123140395) 15:46:53
一個完整得SOA平台
魏瓊東(47920381) 15:47:06
是啊
納尼(123140395) 15:47:12
服務的管理需要禁得其考研
魏瓊東(47920381) 15:47:16
@納尼 把你的ESB Show一下
納尼(123140395) 15:47:32
如果不走ESB,那麼服務很難管好
魏瓊東(47920381) 15:47:35
“需要禁得其考研“,這個好
納尼(123140395) 15:47:38
對不起,我剛剛開始
納尼(123140395) 15:47:47
魏瓊東(47920381) 15:47:56
現實之中就沒有這樣的需要
納尼(123140395) 15:47:58
等我把這個做差不多了
魏瓊東(47920381) 15:48:06
為了輪子造輪子
納尼(123140395) 15:48:06
我會共享出來的
納尼(123140395) 15:48:17
SOA是騙人的
魏瓊東(47920381) 15:48:22
我定位做異構系統的內建之用
魏瓊東(47920381) 15:48:27
也不是騙人的
魏瓊東(47920381) 15:48:44
SOA架構是服務于合作夥伴的
納尼(123140395) 15:48:48
那畢竟隻是SOA的一部分
魏瓊東(47920381) 15:48:55
内部一系統搞的那麼複雜就有問題了
納尼(123140395) 15:49:29
但是對于龐大的企業,業務很大
納尼(123140395) 15:49:39
所有的業務都要是釋出成服務的
納尼(123140395) 15:50:07
如果随便的去調用服務,那麼是很雜亂的
納尼(123140395) 15:50:19
我也很贊同您說的
納尼(123140395) 15:50:36
就是系統内的服務不走ESB
納尼(123140395) 15:50:48
但是,什麼又是系統内的呢
納尼(123140395) 15:51:01
很多資料慢慢會被公有化
....(879621940) 15:51:13
請問一下,如果一套系統,包括HR,CMR,ERP,OA,BI等要實作資料共享,是不是也可以用SOA技術呢?
納尼(123140395) 15:51:41
至少中石油正在做
納尼(123140395) 15:51:53
@。。。 如上回答
納尼(123140395) 15:52:09
包括國内的擁有
納尼(123140395) 15:52:12
用友
....(879621940) 15:52:26
就是說都是使用SOA技術對吧?
納尼(123140395) 15:52:37
他們的平台也是基于SOA的(2010年前,現在不知)
納尼(123140395) 15:52:50
SOA更多是個理念
魏瓊東(47920381) 15:52:50
你有一個假設已經錯了
納尼(123140395) 15:52:55
“騙人的”
魏瓊東(47920381) 15:53:03
你假設企業内部系統是統一的
納尼(123140395) 15:53:06
@魏瓊東 您說
魏瓊東(47920381) 15:53:12
納尼(123140395) 15:49:29
魏瓊東(47920381) 15:53:30
你的假設就是要早一部非常完美的東西
魏瓊東(47920381) 15:53:39
比如說你的服務是完美的
納尼(123140395) 15:53:42
對
魏瓊東(47920381) 15:53:59
而事實是當系統龐大到這個份上就有一個問題
魏瓊東(47920381) 15:54:05
這個東西永遠都不成熟
魏瓊東(47920381) 15:54:07
OK
魏瓊東(47920381) 15:54:09
明白
納尼(123140395) 15:54:15
SOA的理念不僅僅是關注現在,還要展望未來(說出這種話,有點惡心)
魏瓊東(47920381) 15:54:19
那麼更實作做的做法是什麼
納尼(123140395) 15:54:43
@魏瓊東 BPM可能會解決您所說的
魏瓊東(47920381) 15:54:51
更現實的做法是企業内部的系統都是由不同的供應商來供應和開發
納尼(123140395) 15:54:54
快速應對需求的變化
納尼(123140395) 15:55:06
贊同
馮永博(309805629) 15:55:13
這個應該沒法避免,要資訊化建設有個規劃和統籌
魏瓊東(47920381) 15:55:15
因為比始做HR的對HR業務一定是擅長的
魏瓊東(47920381) 15:55:28
做PLM的也是擅長PLM的
魏瓊東(47920381) 15:55:41
并且這樣的成本也就會低很多
魏瓊東(47920381) 15:55:49
就如同軟體工程之中的靈活方法一樣
魏瓊東(47920381) 15:55:57
拆成小的,一個一個人搞
納尼(123140395) 15:55:58
非常贊同
....(879621940) 15:55:59
如果這些系統都是自己開發呢?
魏瓊東(47920381) 15:56:08
一個搞壞也隻是一個
魏瓊東(47920381) 15:56:16
不是一個搞壞全搞完完了
馮永博(309805629) 15:56:22
自己開發的也不一樣就用的好
魏瓊東(47920381) 15:56:26
我為什麼支援這些觀點呢
魏瓊東(47920381) 15:56:34
是因為我做10多年的醫療業務
魏瓊東(47920381) 15:56:38
大家都走過一個過程
魏瓊東(47920381) 15:56:48
前些年大家都追求一個醫院全是一家的
納尼(123140395) 15:56:57
嗯
魏瓊東(47920381) 15:56:59
但是企業做的累,醫院覺得都不專業
魏瓊東(47920381) 15:57:04
是以現在慢慢的都是開放式的
魏瓊東(47920381) 15:57:10
專業的各做各的
納尼(123140395) 15:57:51
我覺得BPM足夠用了
魏瓊東(47920381) 15:57:57
客戶也覺得這樣挺好
馮永博(309805629) 15:58:05
現在的趨勢是越做越大
納尼(123140395) 15:58:14
但是上司玩的都是趨勢
納尼(123140395) 15:58:24
政府上SOA
魏瓊東(47920381) 15:58:30
@刺客 哥們,你的腦袋在想什麼呢
納尼(123140395) 15:58:34
移動、聯通
魏瓊東(47920381) 15:58:44
上司的事咱不想了
納尼(123140395) 15:58:45
還有中石油
魏瓊東(47920381) 15:58:50
反正 你做出ESB那樣搞也行。
納尼(123140395) 15:59:13
上司從别人那抄點想法,害苦我們啊
馮永博(309805629) 15:59:19
比如 SAP的ERP 內建的子系統是越來越多
納尼(123140395) 15:59:22
我是這麼想的
過錯 <[email protected]> 15:59:31
soa通常解決是服務釋出的問題 esb通常解決的是異構通信的問題
納尼(123140395) 15:59:42
最好是适應特定的場景
過錯 <[email protected]> 16:00:53
有的時候目的不同 但是會用同一樣的東西
過錯 <[email protected]> 16:02:04
soa不過是esb的一部分罷了
納尼(123140395) 16:02:49
@過錯 呵呵
那麼在建設和使用ESB到底是偏向那一個重點呢,歡迎各位部落格園朋友讨論本話題。
本文轉自魏瓊東部落格園部落格,原文連結:http://www.cnblogs.com/eastjade/p/3375626.html,如需轉載請自行聯系原作者