2011-02-11 61 views
1

我們正在研究在SOA架構中實現跨多個系統的數據的通用信息模型的可能性。SOA系統的公共信息模型

其中許多這些服務將被複合用戶界面所使用,因此我們在使用常見數據類型時看到了一個好處。

我們想知道的是,如果這是一種可行的方法,或者我們應該只映射到客戶端的常見類型?

+0

我一直認爲SOA只是高效漫遊配置文件出現系統的同義詞。 。 – 2011-02-24 13:07:37

回答

1

擁有公共信息模型並不意味着通用數據類型或公共類。例如,簡單定義客戶,訂單,訂單項和產品之間的關係,就可以遠離公共業務邏輯以及讓不同服務和應用程序能夠在SOA環境中進行互操作的能力。

您可能會考慮在某種建模語言中使用實際的通用模型。由此可以爲特定情況生成具體的數據類型和類。有人可能會使用UML,但我個人更喜歡使用NORMA,一個Object-Role Modeling工具。它在概念層面工作,因此創建獨立於數據存儲技術的模型。

NORMA作爲Visual Studio標準版或更高版本的插件運行,但是現成可爲幾個數據庫以及LINQ to SQL類甚至PHP Web服務生成工件,全都來自同一模型。它是可擴展的,以便您可以從模型生成自己的工件。當然,這個模型被表示爲XML,所以你可以隨心所欲地做任何事情。

+0

約翰,你能否回答http://stackoverflow.com/questions/9555331/information-reuse-using-metadata-semantic-layer-in-soa? – Lijo 2012-03-04 13:44:36

2

這個問題的框架相當寬泛,所以我的答案也將保持相當廣泛。

這裏的關鍵考慮因素是位置獨立性 - 儘管您正在使用多個應用程序,但他們都將共享某些類型的數據(儘管不是,就我的問題而言,數據)。一個明顯的用例是認證和授權數據。

如果您已確定常用數據的真實烹飪程度足以按您所描述的方式進行隔離,那麼我認爲將其分層到服務中是非常合理的。我認爲這個完美的例子是Windows Identity Framework。這需要我們作爲架構師一直將其視爲數據並將其轉化爲服務的東西。

根據我的經驗,您在位置獨立性方面失去的效率是一點點的效率,否則在批量調用同一服務器時會有這種效率,儘管SOA應用程序在設計早期就失去了效率。但是,通過「模式化」應用程序的一部分,您獲得的效率通常遠遠超過這一點。

+0

你能否回答http://stackoverflow.com/questions/9555331/information-reuse-using-metadata-semantic-layer-in-soa? – Lijo 2012-03-04 13:47:24