當前位置:工程項目OA系統(tǒng) > 泛普各地 > 河北O(jiān)A系統(tǒng) > 石家莊OA系統(tǒng) > 石家莊OA信息化
SOAP與RDF--超越遠程過程調(diào)用
SOAP與RDF
--超越遠程過程調(diào)用
Uche Ogbuji(
首席顧問,F(xiàn)ourthought, Inc
2002 年 2 月
本文研究了 SOAP 可以用來傳遞 RDF 模型中的信息的方式。它討論了為了便于進行像 PC 這樣的交換,或者直接以
RDF/XML 序列化形式傳輸這個模型的部分數(shù)據(jù),將 RDF 模型中的基本數(shù)據(jù)轉(zhuǎn)換成 SOAP 編碼的方法。
SOAP
是用來在較低層的因特網(wǎng)協(xié)議之上運載 XML 有效負載的傳輸協(xié)議。早于 1.2 版本的傳輸規(guī)范內(nèi)建在所建議的 XML
編碼中,這是為了適應編程語言構造的序列化。這樣的編碼是被稱為遠程過程調(diào)用(RPC)系統(tǒng)的主要部分,它們有一個共同的目標,就是使對遠程計算機發(fā)出的請求看起來象是本地過程調(diào)用一樣。RPC
編碼的其它示例是源自“典型”RPC(在 RFC 1014 中定義)的“外部數(shù)據(jù)表示”(External Data
Representation(XDR))以及源自 CORBA 的“通用數(shù)據(jù)表示”(Common Data
Representation(CDR))。作為以這種關系捆綁編碼的結果,SOAP
表現(xiàn)出勿庸置疑的應用程序編程的能力,但是它的用途對于通用的數(shù)據(jù)交換似乎值得懷疑。
這些早期的對 SOAP 的偏愛引發(fā)了眾多的爭論。首先,混合傳輸和數(shù)據(jù)編碼規(guī)范似乎是非常雜亂的通信方法,并且似乎公然違背實行幾十年的網(wǎng)絡互聯(lián)的分層協(xié)議。畢竟,HTML 標記的規(guī)范沒有嵌入到 HTTP 規(guī)范中。其次,選擇將像 RPC 這樣的編碼放在突出的地位使 SOAP 處于比較尷尬的境地;它幾乎不比以前的 XML RPC 機制更有表現(xiàn)力,然而由于 XML 的冗長以及 HTTP、SMTP 等這樣的更一般的體系架構,它實際上只能保證更小的有效性。作為下一代 RPC,SOAP 帶來的唯一好處似乎只是統(tǒng)一了 Microsoft 和 CORBA 陣營;這是很重要的,但是這當然不是說 SOAP 看起來很有前途。
SOAP-as-RPC 的一個重要的負面后果是,這樣的系統(tǒng)一般來說完全不適合 Web 服務的下一代 EDI 的長遠目標。如果 Web 服務成為網(wǎng)絡上商業(yè)通信新的方法,那么它們似乎將需要在商業(yè)和合法請求級別上進行通信的傳輸機制,而不是在編程語言 API 級別上進行通信的傳輸機制??梢源_信的是,和其它幾個具有影響力的組織使用 SOAP 一樣,ebXML 倡議(其長遠目標是使用 XML 來打造用于國際電子商務通信的系統(tǒng))最初拒絕使用 SOAP。
從那以后事情有所平息。SOAP 1.2 一定程度上減少了對特殊編碼的依賴(將其歸入單獨的“附件”這部分),現(xiàn)在大多數(shù)開發(fā)者都在使用 SOAP,包括 ebXML。大多數(shù) SOAP 實現(xiàn)仍然專門使用特殊的 SOAP 編碼,但是有跡象表明事態(tài)將更開放,由于插件體系結構的緣故將有更廣泛的編碼選擇,能夠解決更多的通信問題。這樣的一個問題是元數(shù)據(jù)的交換,包括幫助確定在其它 XML 文檔(使用 SOAP 傳輸)中用到的語義的元數(shù)據(jù)。
“資源描述框架”(Resource Description Framework(RDF))是一個建模系統(tǒng),該系統(tǒng)具有解決這種元數(shù)據(jù)交換的一些功能。本文將看看怎樣一起使用 RDF 和 SOAP 來編碼這種元數(shù)據(jù),而且要看看在不需要轉(zhuǎn)換成 SOAP 編碼的情況下,怎樣直接傳輸以 RDF 編碼的數(shù)據(jù)實例。本文要求對 SOAP 和 RDF 比較熟悉。請參閱參考資料以獲取關于這些主題的更多信息。另請參閱 IBM developerWorks XML 專區(qū)的 Thinking XML 專欄,以了解正在進行的與知識管理相關的 RDF 和其它 XML 技術的討論。
好載體 RDF
首先,我將說明如果借助 SOAP 將 RDF
從一個系統(tǒng)傳到另一個系統(tǒng),您能做些什么。我將以 XML 專區(qū)(請參閱參考資料)上我的 Thinking XML
專欄中的一個正在討論的問題跟蹤器工程作為示例。假設我們希望交換添加到通往遠程主機的系統(tǒng)的問題的詳細信息。這可能是分散、分布式問題跟蹤器的基礎。RDF
序列化中,一個問題的示例如清單 1 所示。
清單 1:RDF/XML 序列化
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xml:base="http://rdfinference.org/versa/issues">
In particular the question of how to convert numeric
types to resources
and vice versa require much thought.
這是一個由 Web 資源引起的示例問題。問題本身由 URI http://rdfinference.org/versa/issues#0101 標識。這個 URI 通過取文檔的基本 URI,再在代表該問題的這個類型節(jié)點添加 rdf:ID 屬性所給的片斷來確定。使用 xml:base 屬性給出文檔的基本 URI(或者更精確地說,是文檔元素的基本 URI,因此是類型節(jié)點元素本身的基本 URI),為 http://rdfinference.org/versa/issues。然后,您要寫幾個關于問題本身的語句,最重要的是,使用 Dublin Core 的 dc:relation 元數(shù)據(jù)標記給出問題引用的資源。您還要提供一個標識符(該標識符是問題完整的 URI 的縮寫,只是為了友好顯示這個問題)、問題的創(chuàng)建者、提交日期、簡要標題以及詳細描述。
請記住這是 RDF,因此 XML 序列化不是最重要的事,最重要的事是這個示例問題怎樣轉(zhuǎn)換為抽象的 RDF 模型。例如,圖 1,由 Triclops(一個 RDF 可視化工具,隨 4Suite 0.12.0 alpha 1 或更近的版本提供)生成(警告:這個工具生成相當大的一張圖)。您還可以使用 Dan Brickley 的在線 RDF 可視化程序生成一個類似的圖。
圖 1:樣本 RDF 模型的圖解
現(xiàn)在我來看看在 SOAP 消息中傳輸這種模型的兩種方式:第一種是通過轉(zhuǎn)換為 SOAP 編碼來傳輸,另一種是直接以 RDF
編碼來傳輸。
使用 SOAP 編碼
首先,您必須計劃傳輸?shù)姆椒āDx的 RDF
是數(shù)據(jù)束,其思想是將這個數(shù)據(jù)束放在消息中傳輸,您按照我們期望接收方處理數(shù)據(jù)的方式來命名。在本例中,您通知遠程服務器:這里有一個新的問題要跟蹤。因此,我把這個方法叫做
newIssue。請注意,由于現(xiàn)在您正在使用 SOAP 編碼,所以您也可能使方法名適合于帶有用于 RPC 的 SOAP 綁定的編程語言。
然后,您不得不找到傳輸這個新問題對象的方法。您通過傳輸這個新對象的標識及它的屬性來完成。本質(zhì)上是,您將新問題對象的每個屬性去掉,并且將其轉(zhuǎn)換成消息參數(shù)。因為 SOAP 編碼很注重類型信息,所以您必須用一個類型修飾每個參數(shù)(請參閱清單 2)。
清單 2:newIssue SOAP 消息
xmlns:itsoap="http://rdfinference.org/schemata/issue-tracker/soap"
xmlns:it="http://rdfinference.org/schemata/issue-tracker/"
xmlns:dc="http://purl.org/dc/elements/1.1#"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
make sense. In particular the
question of how to convert numeric types to
resources and vice versa require much
thought.
SOAP 編碼規(guī)則要求,所有的值放在元素的內(nèi)容中,這包括 RDF 中標記作為資源的值,因此給定了數(shù)據(jù)類型 anyURI。請注意,這允許這些值可以是 URI 引用,也可以是完整的 URI(也就是說,相對 URI 和片斷都可以)。如果所有這樣的消息都是這種格式,那么通過給消息元素定義一個 XML 模式定義,您可以避免必須重復數(shù)據(jù)類型,之后,它可以放在“Web 服務描述語言”(WSDL)元素中,或者以一些其它的非常規(guī)方式進行通信。清單 3 和清單 4 是這種模式的片斷(省略了根元素和名稱空間聲明)(分別給出是因為它們占用不同的目標名稱空間)。
清單 3:newIssue SOAP 消息元素的模式片斷
清單 4:newIssue SOAP 消息參數(shù)元素的模式片斷
可以將這些片斷簡化為清單 5。
清單 5:沒有內(nèi)聯(lián)類型裝飾的 newIssue SOAP 消息
xmlns:itsoap="http://rdfinference.org/schemata/issue-tracker/soap"
xmlns:it="http://rdfinference.org/schemata/issue-tracker/"
xmlns:dc="http://purl.org/dc/elements/1.1#"
>
In particular the question of how to convert numeric
types to resources
and vice versa require much
thought.
發(fā)送原始 RDF
我在本文開始部分討論過,沒有理由為了使用 SOAP,而一定將
SOAP 消息轉(zhuǎn)換為 RPC 形式。如果您不是一定需要將 RPC
集成到其它系統(tǒng)中,那么在恰當?shù)臅r候,您可以采用更自然的措施,使用發(fā)送數(shù)據(jù)并且使遠程系統(tǒng)可以自由處理數(shù)據(jù)的聲明性方法。還沒有官方的面向 SOAP 的 RDF
編碼,而本文的討論基于 RDF 和 SOAP 的約定和規(guī)定。
最簡單的方法是僅僅使 rdf:RDF 元素作為 SOAP 體的單個頂層元素,說明見清單 6。
清單 6:
xmlns:dc="http://purl.org/dc/elements/1.1#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
>
In particular the question of how to convert numeric
types to resources
and vice versa require much thought.
所用的編碼標識,http://rdfinference.org/rdfws/soap-encoding 是非規(guī)范化的,其本質(zhì)是,直接將 RDF/XML 的嵌入部分編碼到 SOAP 消息體中。消息形式和一般形式的一個關鍵的區(qū)別是,rdf:about 用來識別問題資源,但是,它沒有內(nèi)聯(lián)地使用標識來聲明。這是序列化用于 SOAP 傳輸?shù)?RDF 模型的一個很重要的原則:避免內(nèi)聯(lián)聲明。假如我們可以使用 xml:base 修改標識的基本位置,那么這樣的原則看起來并不是必需的,但是很難想象出內(nèi)聯(lián)傳輸?shù)馁Y源的生命周期和所有權的清晰語義。請注意,內(nèi)聯(lián)聲明并非在所有的情況下都能避免。例如,匿名資源(也就是空節(jié)點)可能需要作為描述的一部分被傳輸,根據(jù)定義,它們沒有恰當?shù)臉俗R符。
結束語
當談到 SOAP 和 RDF
怎樣能夠進行互操作時,還有其它的方法和思想,事實上這是人們一直很感興趣的主題,RDF 用戶怎樣發(fā)現(xiàn) Web 服務以及 Web 服務怎樣找到 RDF
用戶。在參考資料這一部分提供了對于該討論所涉及的內(nèi)容。更通用的用于序列化基于 XML 數(shù)據(jù)的系統(tǒng)當然會使全世界的 Web 服務更豐富。
參考資料
請單擊文章頂部和底部的討論按鈕參加關于這篇文章的討論論壇。
Uche Ogbuji 寫的 Introduction to RDF,提供了對 RDF 的基本介紹,并且包括到其它有用參考資料的鏈接。
Dublin Core metadata initiative 保存有描述 Web 上類似庫的元數(shù)據(jù)的詞匯表。
Graham Glass 所著的 The Web services (r)evolution, Part 3: How SOAP Works,對 SOAP(更老的變體)有深入的見解。
SOAP Version 1.2 Part 0: Primer,W3C 的一個關于 SOAP 的工作草案。這是對 SOAP 1.2 的優(yōu)秀介紹。
Uche Ogbuji 的 Thinking XML 專欄。
RDF 和 Web
服務之間相互影響的討論
Henrik Frystyk Nielsen 所著的怎樣可以用 SOAP 序列化 RDF 模型的示例。
工具等內(nèi)容
4Suite,Uche Ogbuji 參與開發(fā)的一組 XML 和 RDF 工具。
如果在 Web 上已經(jīng)可以序列化 XML,Dan Brickley 的 RDF
可視化程序是生成 RDF 圖的很方便的工具。
關于作者
- 1Microsoft.Net 與 Web Services
- 2OA網(wǎng)絡辦公系統(tǒng)信息傳遞的安全解決方案
- 3Web Service Case Study: 事務性Web服務
- 4對于石家莊OA信息化的幾種不同理解(BY AMT 夏敬華)
- 5專家稱XML Web服務時代正接近尾聲
- 6知識地圖在項目型組織中的應用
- 7[原創(chuàng)]K運營
- 8SOAP技術與B2B應用集成--SOAP消息中的類型/值的編序方法和示例
- 9BEA實現(xiàn)安全的在線交易的web服務
- 10企業(yè)核心能力的經(jīng)濟學含義
- 11“低價狂人”欒潤峰:有理想的冒險才值得
- 12OA辦公系統(tǒng)支持表單手寫簽名、審批意見
- 13端到端的挑戰(zhàn)者
- 14出版社行業(yè)如何做好信息化建設的思考
- 15[原創(chuàng)]母子公司間的知識管控模式探討
- 16換個角度切蘋果
- 17協(xié)同辦公OA軟件的常用資料和規(guī)章制度
- 18微軟將于10月采取訂閱銷售模式
- 192001年度“世界最受贊賞的知識型企業(yè)”排名揭曉
- 20絕對妙語:重塑企業(yè)流程、組織和文化
- 21MSDN Online Voices - Extreme XML:已啟用XML Web服務的Office文檔
- 22[原創(chuàng)]OA選擇首先要清晰概念
- 23[編譯] 石家莊OA信息化測度:目標、過程及方法(夏敬華譯)
- 24微軟、PwC和納斯達克聯(lián)合推出財報Web服務
- 25OA辦公系統(tǒng)的信息發(fā)布與管理門戶介紹
- 26Web服務內(nèi)幕,第4部分:介紹Web服務流語言
- 27石家莊泛普OA辦公軟件的用戶界面定制
- 28IBM推新工具包助用戶跨平臺開發(fā)Web服務
- 29泛普軟件如何實現(xiàn)知識庫雙機熱備
- 30石家莊OA信息化的基本XML和RDF技術(一):使用XSLT生成RDF
成都公司:成都市成華區(qū)建設南路160號1層9號
重慶公司:重慶市江北區(qū)紅旗河溝華創(chuàng)商務大廈18樓