概述:
在面向服務(wù)的體系結(jié)構(gòu)(SOA)中,語義互操作性可確保服務(wù)使用者和提供者可以通過一致、靈活的方式交換數(shù)據(jù),這種方式能滿足許多非功能性的要求(Non-FunctionalRequirement,NFR),如性能和伸縮性等,而不受所涉及的各種信息的限制。例如,帳單編制應(yīng)用服務(wù)請求者需要獲知
在面向服務(wù)的體系結(jié)構(gòu) (SOA) 中,語義互操作性可確保服務(wù)使用者和提供者可以通過一致、靈活的方式交換數(shù)據(jù),這種方式能滿足許多非功能性的要求 (Non-Functional Requirement,NFR),如性能和伸縮性等,而不受所涉及的各種信息的限制。例如,帳單編制應(yīng)用服務(wù)請求者需要獲知客戶余額“BALANCE”。同時,會計(jì)應(yīng)用服務(wù)提供者提供名為“REMAINDER”的客戶余額。實(shí)現(xiàn)語義互操作性的方法是,將帳單編制應(yīng)用中的“BALANCE”映射到會計(jì)應(yīng)用中的“REMAINDER”。
語義互操作性是 SOA 中的一個重要體系結(jié)構(gòu)特性,因?yàn)樗狗?wù)的使用者和提供者能夠交換有意義的信息,然后遵照這些信息進(jìn)行操作。它是 SOA 的基礎(chǔ)。沒有了語義,數(shù)據(jù)只是一串串沒有任何意義的二進(jìn)制字節(jié)。如果沒有語義互操作性,服務(wù)使用者和提供者可能誤解和破壞數(shù)據(jù),最終給 SOA 和業(yè)務(wù)帶來負(fù)面影響。
廣而言之,大多數(shù)信息集成都是對語義互操作性進(jìn)行處理。問題在于,人們認(rèn)為語義互操作性是理所當(dāng)然的,并且很少在語義互操作性方面進(jìn)行理性而明智的體系結(jié)構(gòu)決策,因?yàn)檎Z義解釋、映射和轉(zhuǎn)換通常與自主開發(fā)應(yīng)用程序、企業(yè)應(yīng)用程序集成 (Enterprise Application Integration,EAI) 和企業(yè)信息集成 (Enterprise Information Integration,EII) 聯(lián)系在一起。因此,語義互操作性通常會在 SOA 的開發(fā)過程中被忽略。
本文的目標(biāo)是使應(yīng)用程序架構(gòu)師和數(shù)據(jù)架構(gòu)師認(rèn)識到語義和語義互操作性的重要性,以便在構(gòu)建新的基于 SOA 的解決方案或者將現(xiàn)有系統(tǒng)遷移到 SOA 時能夠進(jìn)行合理的決策。要想理解語義互操作性,我們首先必須了解其背后的各種技術(shù)和方法,這些技術(shù)和方法統(tǒng)稱為語義譜。此外,反模式可提醒我們避免犯錯。模式和最佳實(shí)踐則為我們指明了正確的方向。.我們將首先討論語義譜,然后討論語義互操作性的模式、反模式和最佳實(shí)踐。
語義譜
語義譜 描述了用于創(chuàng)建越來越精確的數(shù)據(jù)定義的一系列技術(shù)和方法。需要在精確度與模糊度之間求得平衡——并非總是精確度越高越好——還需要考慮很多因素,如時間、成本和工作量等。
為了定義數(shù)據(jù)元素,我們不僅需要考慮事物本身(數(shù)據(jù)實(shí)例),還需要考慮事物的定義和描述(元數(shù)據(jù))。因此,語義譜同時覆蓋了數(shù)據(jù)和元數(shù)據(jù)。它包括詞匯表、控制詞匯、數(shù)據(jù)詞典、數(shù)據(jù)模型、分類法和維基百科中的本體。例如,“數(shù)據(jù)詞典”和“數(shù)據(jù)模型”與元數(shù)據(jù)相關(guān);而詞匯表、控制詞匯和分類法則與數(shù)據(jù)實(shí)例相關(guān)。本體描述則同時覆蓋了這兩方面。不過,有些人認(rèn)為詞匯表和分類法也屬于元數(shù)據(jù)的范疇。本文將不討論數(shù)據(jù)與元數(shù)據(jù)的具體區(qū)分。
詞匯表 是帶有定義的術(shù)語列表。許多文檔和書籍都在末尾列出了詞匯表,以方便讀者閱讀相關(guān)內(nèi)容。控制詞匯 是特定方面的組織和團(tuán)體人遵守的標(biāo)準(zhǔn)化術(shù)語列表。控制詞匯的遵守可能是自愿的,也可能是強(qiáng)制性的。地區(qū)代碼列表就是控制詞匯。詞匯表和控制詞匯從開始出現(xiàn)書面語言就有了,通常被用作大眾傳播和語言框架的組成部分。
20 世紀(jì)實(shí)現(xiàn)數(shù)據(jù)數(shù)字化后,關(guān)系數(shù)據(jù)庫被用作主要的數(shù)據(jù)持久性機(jī)制。數(shù)據(jù)詞典 用于捕獲不同數(shù)據(jù)元素的含義和表示形式,并就此進(jìn)行交流,最常用于關(guān)系數(shù)據(jù)庫。數(shù)據(jù)詞典是一個重要的構(gòu)件,它支持業(yè)務(wù)和 IT 社區(qū)之間進(jìn)行有意義的交流。數(shù)據(jù)模型 描述數(shù)據(jù)元素的結(jié)構(gòu)。從 20 世紀(jì) 70 年代開始,早在發(fā)明統(tǒng)一建模語言(Universal Modeling Language,UML)之前,關(guān)系數(shù)據(jù)庫社區(qū)就已經(jīng)使用實(shí)體關(guān)系(Entity-Relationship,ER)圖表來改進(jìn)交流和簡化開發(fā)工作。
為了應(yīng)對日益復(fù)雜的異類數(shù)據(jù)庫環(huán)境,人們意識到需要創(chuàng)建企業(yè)數(shù)據(jù)模型(Enterprise Data Model,EDM)。流行的觀點(diǎn)認(rèn)為 EDM 需要海量數(shù)據(jù)庫來存儲組織所處理的所有數(shù)據(jù),但是事實(shí)上并非如此,EDM 僅僅是一個公共邏輯數(shù)據(jù)模型。它通常位于第二或第三范式。其他邏輯或物理數(shù)據(jù)模型(如 ESB、應(yīng)用和數(shù)據(jù)倉庫)都可以映射到這個公共邏輯數(shù)據(jù)模型。EDM 通常用作信息集成的參考模型,或者用作持久性數(shù)據(jù)庫和數(shù)據(jù)倉庫的基礎(chǔ)。例如,IBM Insurance Information Warehouse (IIW) 中的企業(yè)模型就是一個 EDM 實(shí)現(xiàn)。EDM 允許支持?jǐn)?shù)據(jù)企業(yè)視圖,用以幫助降低數(shù)據(jù)冗余、提高數(shù)據(jù)質(zhì)量以及加速項(xiàng)目的集成和新項(xiàng)目的開發(fā)。它還可以簡化業(yè)務(wù)需求與數(shù)據(jù)模型之間的映射。
企業(yè)分類法 用于組織一套標(biāo)準(zhǔn)化的術(shù)語、概念、目錄和關(guān)鍵詞。它被組織成一個層次結(jié)構(gòu),以表示術(shù)語和概念的隸屬關(guān)系,通常與內(nèi)容管理、知識管理和搜索技術(shù)關(guān)聯(lián)。
最后,根據(jù) World Wide Web Consortium (W3C) 的說明,本體 定義用于描述和表示知識領(lǐng)域的術(shù)語。它指定有關(guān)領(lǐng)域的類(一般事物)的說明以及事物與屬性(或特性)之間的關(guān)系。IEEE 下屬的 Standard Upper Ontology Working Group 正在進(jìn)行制定上層本體方面的工作,以支持?jǐn)?shù)據(jù)互操作性、信息搜索和檢索、自動推理和自然語言處理等計(jì)算機(jī)應(yīng)用。

