王 衛(wèi) 列
(南瑞集團公司(國網(wǎng)電力科學研究院) 江蘇 南京 211106)
Restful+OData:企業(yè)信息系統(tǒng)集成的簡明之道
王 衛(wèi) 列
(南瑞集團公司(國網(wǎng)電力科學研究院) 江蘇 南京 211106)
企業(yè)都希望能復用已有的IT子系統(tǒng),但在規(guī)劃子系統(tǒng)服務的接口標準時普遍感到困難,針對這一問題,提出Restful+OData的技術方案。闡述了為什么這一方案能夠簡化接口標準設計,為企業(yè)信息系統(tǒng)集成提供了一個新的思路。實踐結(jié)果表明,該方案對簡化企業(yè)信息系統(tǒng)集成過程有一定的參考價值。
系統(tǒng)集成 服務接口 Restful OData 面向服務
現(xiàn)在一個企業(yè)內(nèi)常包含多個信息化系統(tǒng),且這些系統(tǒng)常常不是由一個開發(fā)商做的,各開發(fā)商使用的開發(fā)平臺常不相同(如:J2EE、WCF等)。如果要基于這些系統(tǒng)進行集成,如形成高層決策系統(tǒng),首先需要制定各子系統(tǒng)的服務接口標準。另外為了不同類型系統(tǒng)能互聯(lián),需要各子系統(tǒng)能提供具有開放性標準的接口,其中制定服務接口標準看似很簡單,但具體實施時會發(fā)現(xiàn)非常困難。本文分析了其實施困難的原因,并提出了用Restful+OData方案來解決這個難題。
明確了構什么,有必要思考怎么構,點是線線相交所得,需要思考作怎樣的兩條線,就是思考點具有怎樣的特征,假設點存在,追問與此點會有哪些相關定的量或定的關系.以本題為例,如圖3,需要確定點B,分析點B特征,由AB=AC,即點B的軌跡就是以A為圓心,AC為半徑的弧,即定長軌跡;∠ABD=30°,點A、D是兩個定點,即點B的軌跡就是即定角軌跡.同時滿足兩個條件,即為兩軌跡的交點.
隨著IT技術的應用普及,現(xiàn)在一個企業(yè)里已經(jīng)有不少信息子系統(tǒng)了,為了綜合決策時更多地復用子系統(tǒng)、快速構建高層決策系統(tǒng),對系統(tǒng)集成有如下一些要求。
1.充分認識制度控制的局限性,及時修訂整改,重在腐敗預防。內(nèi)部控制理論的建立和實踐是一個不斷完善的過程。廉政建設中對其的借鑒和利用應突破其局限性,應當將眼光關注到制度未涵蓋的例外事項??陀^而言,有些黨風廉政建設和反腐敗的制度操作性更不強,原因是制度的制訂者對廉政的虛與應付,陽奉陰違。因此,在實施中對制度中存在的問題做到及時發(fā)現(xiàn)及時修訂整改十分必要。
(1) 子系統(tǒng)及接口的標準化 企業(yè)IT系統(tǒng)標準化可以避免受制于某些軟件開發(fā)商,可以提高企業(yè)IT構建效率,利于系統(tǒng)持續(xù)改進。
而在Restful中,動詞是和資源分離的,在Restful的請求行中,首先是動詞(如:GET),然后是指向要訪問的資源(數(shù)據(jù))的url。
若能形成這方面的標準,將為提高行業(yè)內(nèi)IT系統(tǒng)構建的敏捷性打下基礎。
例:GET http://server1/WdsData/X1
(3) 易于向互聯(lián)網(wǎng)移植 隨著業(yè)務的發(fā)展,企業(yè)的IT應用邊界已不能再局限在局域網(wǎng)內(nèi)了,而是需要越來越多地被部署在互聯(lián)網(wǎng)上,為了避免重復投資,創(chuàng)建新應用時企業(yè)需要考慮其向互聯(lián)網(wǎng)移植的便利性。
(1) 制定子系統(tǒng)接口標準 相對于子系統(tǒng)劃分標準的制定,子系統(tǒng)接口標準的制定難度較大。究其原因,是因為我們常常使用動名詞結(jié)構來制定API接口(如:GetX1Data(參數(shù)1,參數(shù)2,…)),但實際開發(fā)經(jīng)驗告訴我們,這樣設計出的接口很難穩(wěn)定下來。修改參數(shù)、增加接口都需要客戶端改動代碼后重新編譯,而我們不可能一次性將接口標準制定得很完美,接口的頻繁改動造成系統(tǒng)極不穩(wěn)定,這給我們實現(xiàn)子系統(tǒng)接口標準化帶來很大麻煩。
(2) 多種類型的應用和設備連接服務 企業(yè)內(nèi)部的IT服務很多是前些年開發(fā)的,而現(xiàn)在的應用和終端設備類型大幅增長,所使用的開發(fā)語言也越來越豐富。除了傳統(tǒng)的Java、.NET外,javascript、python、Ruby、Go等語言都需要能編寫訪問服務的代碼,這時會發(fā)現(xiàn)以前的技術開發(fā)出的服務已不能為這些豐富的客戶端提供連接了。
針對上述問題,Restful+OData的解決方案存在著一些天然的優(yōu)勢。
3.1 服務標準的挑選
針對上述所提的企業(yè)需求和所要克服的困難,我們把主要分布式服務構建技術和他們對各種需求的適應性列表如表1所示。
建筑企業(yè)要想在復雜殘酷的市場競爭中生存發(fā)展,首先要提高企業(yè)自身的綜合素質(zhì)。綜合素質(zhì)的提高對建筑企業(yè)能否在市場中立足至關重要。綜合素質(zhì)的高低是一個企業(yè)的面貌體現(xiàn),是能否在市場競爭中占據(jù)主導地位的體現(xiàn)。如建筑企業(yè)綜合素質(zhì)較低,就無法對市場需求與走向進行理性分析與研究,導致逐漸被市場所淘汰或者摒棄。所以,建筑企業(yè)應該加強工程施工管理模式的創(chuàng)新,只有創(chuàng)新的理念才是提升企業(yè)綜合素質(zhì)的基礎與保障。
表1 服務類型及其適應性
從表1可以看出,Restful技術僅對分布式事務不支持,其他方面都比較優(yōu)秀,而我們的系統(tǒng)集成大多數(shù)是信息集成,如果沒有對分布式事務要求,那么選擇Restful是比較合適的。
3.2 化解動名詞接口形式的缺點
Restful的技術是基于http的請求響應機制的(注:后面所講的http報文就是指Restful使用的報文),在http的請求行中也有動詞。GET、POST、PUT、DELETE是http中最常用動詞,那么為什么說Restful支持非動名詞接口形式呢?
首先讓我們來分析采用動名詞形式接口的特點。假設我們要訪問標志為X1資源的數(shù)據(jù),我們?yōu)樗O計了接口GetX1Data(參數(shù)1,參數(shù)2),構成了動詞+名詞的函數(shù)名,這就是動名詞形式接口。動名詞形式接口發(fā)生變化時,需要服務端和客戶端都重新編譯、部署后才能使用,假設需求的不斷增加,我又需要增添對X2,X3,…,Xn的數(shù)據(jù)訪問,那么我們就需要分別為他們設計出GetX2Data,…,GetXnData。由于設計了新的接口后,需要重新編譯、部署服務,客戶端也需要重新編碼來適應這些新的接口,兩側(cè)的頻繁改動會使系統(tǒng)很不穩(wěn)定。或許我們可以設計一個萬能接口GetData(參數(shù)),其中的參數(shù)使用一個非常易于伸縮的數(shù)據(jù)結(jié)構,看似問題解決了,但這個又會帶來參數(shù)的標準化問題,而制定這個標準是很困難的。
要實現(xiàn)企業(yè)內(nèi)IT服務的復用和組合,首先必須實現(xiàn)系統(tǒng)劃分和接口的標準化。其標準化過程可分為兩個部分,子系統(tǒng)劃分標準化和子系統(tǒng)接口標準化。其中子系統(tǒng)劃分標準是子系統(tǒng)接口標準的前提條件。
(2) 符合開放標準的服務 隨著互聯(lián)網(wǎng)和移動設備的技術發(fā)展,現(xiàn)在構建的IT服務,不能只考慮PC的連接,要考慮多類型應用和設備的連接,這對IT服務的開放性提出了越來越高的要求。
如此,盡管今后要訪問的數(shù)據(jù)資源會不斷增加,我們只需通過url指向不同的資源即可。
例:GET http://server1/WdsData /X2
從上面的例子可以看出,無論要訪問的數(shù)據(jù)資源增加多少,從形式上看,只是與動詞組合的url發(fā)生變化,訪問命令只是動詞和url的字符串組態(tài)形式而已,而軟件通過組態(tài)設計可以很輕松地處理這種變化。
2.通過對折現(xiàn)率R取9%~11%的值,g取2%~6%,計算永續(xù)增長(第二種情況)和零增長(第三種情況)模型下的不同的投資因子,見表1和表2:
上面的例子中給出的是http請求報文的簡單形式,讓我們再分析一下http完整報文是否具有可組態(tài)性。
先看一下http報文的結(jié)構(注:要詳細了解http的報文可閱讀相關的RFC文檔,這里只是簡述),報文分為請求報文和響應報文,其結(jié)構見表2。
表2 http報文結(jié)構
報文中的字符串是由ASCII字符組成,每部分的格式是有一定規(guī)則的。下面是一個具體請求報文的例子(見圖1)。
圖1 http報文舉例
}
3.3 OData進一步標準化Restful服務
解析:從實物圖中可以看出燈泡與滑動變阻器和電流表串聯(lián)連接,根據(jù)實物圖用各元件符號表示即可。從電源正極出發(fā),依次經(jīng)過開關、小燈泡、電流表、滑動變阻器,然后回到電源負極,最后把電壓表并聯(lián)在小燈泡的兩端即可。
上面談到Restful命令報文可組態(tài)化提供了巨大的靈活性,但是大家還是要認識到Restful只是一種思想,不是一種標準。雖然報文的結(jié)構是基于http標準,但報文結(jié)構的每一部分都保留了一定自由度,這種自由度對Web瀏覽應用沒有什么負作用,但對于需要在應用間共享的服務,則顯然會帶來很大的麻煩。
例如:假設軟件開發(fā)商A和B都實現(xiàn)了一個Restful 接口通過工號查詢?nèi)藛T信息,因為沒有統(tǒng)一的標準,那么其請求命令的報文可能各不相同,其中url是可能產(chǎn)生差異最大的一部分。
A的請求行中的url 可能是這樣:http://Server/api/person/001。
B的請求行中的url 可能是這樣:http://Server/api/person?id=001。
如果我們使用的Restful服務命令格式不能標準化,則會阻礙Restful服務在各應用之間的分享。
為了規(guī)范Restful,提高Restful在各應用之間的兼容性,微軟提出了OData協(xié)議(OData v4已于2014年3月17日在OASIS投票通過成為開放工業(yè)標準)。它實現(xiàn)了在Restful中通過標準化的資源標識來訪問任何數(shù)據(jù)。
圖3展示了L=100個地面移動IoT設備的初始分布以及應用本文方法所確定的最優(yōu)UAV布署效果.此次實驗采用8個UAV,如圖3(a)所示,100個IoT設備初始分布位置隨機,基于通信節(jié)能策略,首先形成了8個最優(yōu)分簇,其次在各簇聚類中心的影響下,UAV的布署位置實現(xiàn)最優(yōu),如圖3(b)所示.
符合開放數(shù)據(jù)協(xié)議OData的Restful服務在各方面都得到了標準化,但由于篇幅所限,這里只能重點介紹一下對url結(jié)構的標準化(也是最重要的一部分),讓我們用一個例子來說明。
首先介紹一點基礎知識,OData服務是可以自描述的,通過Restful的請求與響應可以獲得該服務兩個元數(shù)據(jù)文檔:service document和metadata document。其中service document描述服務中提供那些數(shù)據(jù),metadata document則描述服務中的數(shù)據(jù)結(jié)構。有了這兩個元數(shù)據(jù)文檔,我們就可以組態(tài)出各種標準化的url。
下面舉一個OData的例子來說明這個問題。這里需要在數(shù)據(jù)集People中找出他的FirstName等于Vincent的某些人,其url如下:
http:/abc.com/svc/People?$filter=FirstNameeq′Vincent′
上面的url可被劃分成Service root、Resource path和Query option三個部分,各部分的內(nèi)容如表3所示。
表3 示例url各部分對應的內(nèi)容
前兩個部分的格式標準由service document就可以限定,后面的Query option格式則可由相應的語法規(guī)則和metadata document限定。
″name″:″People″,
讓我們先來看看服務的元數(shù)據(jù)之一service document是如何限定Service root和Resourece path的。
首先我們肯定知道該服務的http地址,例如:
http://abc.com/svc/
在實際授課過程中,我們以海軍部隊實際衛(wèi)生學問題為出發(fā)點,通過上述教學內(nèi)容、教學方法、教學手段以及考核方式改進,有效提高了學生海軍衛(wèi)生學學習熱情和學習效果,也在一定程度上提高了學生發(fā)現(xiàn)、解決衛(wèi)生學問題的能力。
其中abc.com是服務所在的服務器域名,然后我們就可以發(fā)出如下請求報文來獲取service document,如:
GET /svc/ HTTP/1.1
Host: abc.com
Cache-Control: no-cache
(19)一些西方國家的環(huán)保主義者則成立了“綠黨”或“綠色和平運動”,其宗旨是保護環(huán)境和恢復生態(tài)平衡。(1990·《人民日報》)
只要是OData數(shù)據(jù)服務,它就會返回相應的service document,類似如下的數(shù)據(jù)。
{
″@odata.context″:″http:/abc.com/svc/$metadata″,
″value″:[
{
″name″:″Photos″,
″kind″:″EntitySet″,
″url″:″Photos″
},
{
在互聯(lián)網(wǎng)快速發(fā)展的背景下,網(wǎng)絡學習資源日益增多,隨之產(chǎn)生的是資源的質(zhì)量和共享的問題。為了避免資源浪費,更高效快捷地建設學習資源,有效擴展溝通平臺課程,在制作課程時應遵守相關標準。2017 年,在中共中央組織部的領導下,中國干部網(wǎng)絡學院開展了中國干部網(wǎng)絡教育標準的研制工作,截止到2018 年10 月,第一批10 項標準,已經(jīng)通過國家標準立項,這10 項標準的主要內(nèi)容如表2 所示。
″kind″:″EntitySet″,
″url″:″People″
用掃描電子顯微鏡測試4種噴墨打印紙的表面微觀結(jié)構,并以紙張的掃描電鏡(SEM)圖和青色油墨網(wǎng)點的平均直徑為質(zhì)量標準,檢驗紙張質(zhì)量的優(yōu)劣性,并與模型評價結(jié)果進行對比,以檢驗模型的合理性。
}
該服務會返回相應的metadata document,如下:
上面的例子是一個修改某product實體的一個請求包??梢钥闯觯蛣用~形式的接口不同,在于這個請求命令完全可以通過字符串按規(guī)則組態(tài)而成。據(jù)此客戶端軟件完全可以通過組態(tài)來實現(xiàn)對服務的訪問,這相比那些需要事先編譯好的軟件,其靈活性大大增強了,這大大提高了客戶端軟件對服務接口變化的適應性。
從上面的元數(shù)據(jù)描述可以得知,從這個服務中可以獲得兩種數(shù)據(jù)集(EntitySet)Photos和People,其Resourece path分別為Photos和People。
假設你要訪問People這個數(shù)據(jù)集,那么url前面兩個部分的組合是:
http://abc.com/svc/ People
至此,url中的Service root和Resources path已經(jīng)成為確定格式了。
針對后面的Query option,OData制定了極為豐富的標準化參數(shù)來控制數(shù)據(jù)的輸出,很多Sql查詢的功能都具有。如:$select、$filter、$orderby、$expand、$count、$skip、$top、$search、$format等,它具有嚴格的語法規(guī)則,嚴格控制了Query option的格式。另外在寫Query option中的查詢參數(shù)(如:$filter=FirstName eq ′Vincent′)時會涉及到數(shù)據(jù)集中的數(shù)據(jù)結(jié)構,其中FirstName就是數(shù)據(jù)集People中對應實體的數(shù)據(jù)結(jié)構成員。至于數(shù)據(jù)集Photos和People的數(shù)據(jù)結(jié)構則可以通過訪問metadata document獲得。訪問metadata document的url已經(jīng)在service document中的第一條數(shù)據(jù)中告訴你了。
使用該url向該OData服務發(fā)送報文來獲取相應的metadata document:
GET /svc/$metadata HTTP/1.1
Host: abc.com
Cache-Control: no-cache
]
與單純的句酷批改網(wǎng)反饋方式相比,學生對三稿式人機結(jié)合的寫作教學模式的態(tài)度更加積極,他們認為后者反饋的準確性和清晰度顯著高于前者(P=0.000),學生能更好地理解反饋信息并進行修改。此外,學生認為三稿式人機結(jié)合的寫作教學模式能更全面關注到他們作文中的問題,包括篇章結(jié)構、寫作內(nèi)容的一致性與連貫性、詞匯、語法、長句等,兩種模式有顯著差異(P=0.000)。由這兩點可以看出,學生很認可三稿式人機結(jié)合的寫作教學模式,因為它具體、全面,彌補了句酷批改網(wǎng)單一反饋模式的不足。至此,第三個假設得到驗證。上文五篇作文的三稿成績呈遞增狀與這一結(jié)論相一致。
2.1 兩組患者的臨床治療效果對比 實驗組患者41耳的臨床治療有效率為87.80%,其中,22耳為治愈,14耳為好轉(zhuǎn),5耳無效;對照組患者37耳的臨床治療有效率為64.86%,其中,11耳治愈,13耳好轉(zhuǎn),13耳無效。治療后實驗組患者的臨床治療有效率顯著高于對照組,差異有統(tǒng)計學意義(χ2=5.766,P=0.016)。
第二,輸入搜索內(nèi)容為:隨機抽取一整段文字。如果在百度和谷哥的瀏覽器上顯示有80%以上的紅色字,則可判定該文章有一稿多投的嫌疑。
我們從上面的元數(shù)據(jù)文檔中可以看到實體集People對應的實體數(shù)據(jù)類型是Person,而Person中有個屬性就是FirstName,這樣的屬性就可以用在Query option中了。
如此,再按OData規(guī)定的語法,Query option部分也被標準化了,這樣整個url都被標準化了。
OData不僅僅是對url進行了標準化,其標準化是全方位的,它包括OData協(xié)議規(guī)范、OData URL約定、OData通用架構定義、OData json格式、OData ABNF、OData數(shù)據(jù)聚合。OData協(xié)議是集數(shù)據(jù)技術的大全,從數(shù)據(jù)描述到操作都有非常周到的設計,您所需要的功能特性一定能在OData中找到。
3.4 方案優(yōu)點
下面讓我們來分析一下,采用Restful+OData服務相對于其他服務有那些優(yōu)點。
1) 直觀易用,非軟件人員可以參加接口設計 使用Restful+OData做出的服務是DaaS模式,它好似將一張張數(shù)據(jù)表呈現(xiàn)給客戶端,非常直觀。過去在設計動名詞形式的接口時,似乎只有軟件開發(fā)人員才可以參加設計。現(xiàn)在由于所提供數(shù)據(jù)的直觀性,非軟件開發(fā)人員也可參與到接口的設計中,這樣能使得接口標準能在更廣泛的范圍內(nèi)得到研究,利于早日形成接口標準。
2) 客戶端易于調(diào)整,利于接口的調(diào)整 制定子系統(tǒng)接口標準的整個過程,不可能一蹴而就,期間不可避免地需要調(diào)整。由于基于Restful+OData的客戶端命令的可組態(tài)性,較之其他形式的接口調(diào)整就方便得多。服務端接口調(diào)整后,軟件開發(fā)商只要獲得該服務的Service Document和Metadata Document,很快就可以通過組態(tài)將軟件功能調(diào)整好,這減少了接口調(diào)整的負擔,有利于最終接口標準的形成。
3) 利于子系統(tǒng)劃分的標準化 雖然企業(yè)內(nèi)的子系統(tǒng)類型進行了標準化劃分,但與企業(yè)內(nèi)的實際子系統(tǒng)不一定是一一對應的。例如企業(yè)子系統(tǒng)規(guī)劃為A、B、C標準系統(tǒng),實際上的子系統(tǒng)為甲、乙、丙、丁,需要我們通過面向服務將甲、乙、丙、丁系統(tǒng)映射成標準化的A、B、C系統(tǒng)(見圖2)。
圖2 實際系統(tǒng)到標準子系統(tǒng)的映射
因為Restful+OData實現(xiàn)的是數(shù)據(jù)服務,對外公布的是一個個實體集,如同設計數(shù)據(jù)庫的一張張表,技術概念非常形象、直觀,可非常方便地實現(xiàn)所需的數(shù)據(jù)映射,所以非常利于子系統(tǒng)劃分的標準化。
4) 與其他系統(tǒng)更好的對接 由于Restful就是在互聯(lián)網(wǎng)中產(chǎn)生的,這個天然的優(yōu)勢使得將系統(tǒng)移植到互聯(lián)網(wǎng)非常方便。而現(xiàn)在云計算大多部署在互聯(lián)網(wǎng)上,這種標準化的數(shù)據(jù)服務也使得它可以非常容易地成為云計算的數(shù)據(jù)源,為企業(yè)未來的應用前景打好了基礎。
由于互聯(lián)網(wǎng)技術的普及,眾多設備和開發(fā)語言都支持與Restful服務的連接,較之以前技術所提供的服務,提供的數(shù)據(jù)服務可以在更多應用之間共享,使得以后企業(yè)的IT應用更加豐富。
3.5 案例分析
下面我們用一個簡單的案例來說明Restful+OData方案的優(yōu)勢。
假設某水電廠有三個業(yè)務子系統(tǒng):發(fā)電監(jiān)控系統(tǒng)、水情測報系統(tǒng)、閘門監(jiān)控系統(tǒng)。我們要在此基礎上進行系統(tǒng)集成,形成綜合決策系統(tǒng)(注:篇幅所限,本文以簡單的數(shù)據(jù)綜合輸出為例),例如我們要輸出如下的綜合數(shù)據(jù)表(見表4)。
表4 水電廠某輸出表格
其中的數(shù)據(jù)需要分別從三個子系統(tǒng)(發(fā)電、水情、閘門)中抽取,具體見表5。
表5 從各子系統(tǒng)抽取的數(shù)據(jù)
如果用OData服務來提供數(shù)據(jù),那么我們需要在各子系統(tǒng)中發(fā)布相應的EntitySet,這些Entity就相當于子系統(tǒng)的API接口,假設各子系統(tǒng)公布的EntitySet如表6所示。
表6 各子系統(tǒng)公布的EntitySet
圍繞這些EntitySet,我們可以進行非常豐富的數(shù)據(jù)操作。
下面我們以其中的發(fā)電監(jiān)控子系統(tǒng)為例,來介紹如何使用OData服務。
假設發(fā)電監(jiān)控子系統(tǒng)OData服務的http地址為:
http:/abc.com/powerdata
首先我們需要知道服務中發(fā)布了哪些內(nèi)容,這些信息可以通過訪問OData服務的Service document獲得,需要向OData服務發(fā)出如下的http請求:
GET/powerdata/HTTP/1.1
Host:abc.com
Cache-Control:no-cache
服務響應此請求時會在包體中返回相應的service document,它告知該系統(tǒng)發(fā)布了哪些EntitySet。
例如:
{
″@odata.context″:″http://abc.com/powerdata/$metadata″,
″value″:[
{
″name″:″PowerOut″,
″kind″:″EntitySet″,
″url″:″PowerOut″
}
]
}
從中我們可以看到該系統(tǒng)發(fā)布了一個名稱為PowerOut的EntitySet。要進一步了解該EntitySet的數(shù)據(jù)結(jié)構,可以通過訪問OData服務的metadata document獲得,需要發(fā)出如下的http請求:
GET/powerdata/$metadataHTTP/1.1
Host:abc.com
Cache-Control:no-cache
服務響應此請求時,會返回所有實體集的數(shù)據(jù)結(jié)構定義。
例如:
從中我們可以看出實體集PowerOut的數(shù)據(jù)結(jié)構被定義在POType中,其中的Property非常類似數(shù)據(jù)庫中的表字段定義。
至此,客戶端已經(jīng)明白了該服務的發(fā)布內(nèi)容以及相應的數(shù)據(jù)結(jié)構,后面就可以根據(jù)OData標準中的語法標準來組態(tài)各種數(shù)據(jù)訪問命令了。
例如:我們要訪問1號站點和2號站點2010年11月10日9點的數(shù)據(jù),可以發(fā)出如下http請求:
GET/powerdata/PowerOut?$filter=dteqdatetimeoffset′2010-11-10T09:00:00Z′∧(stationId=1∨stationId=2)HTTP/1.1
Host:abc.com
Cache-Control:no-cache
服務端在接收到該請求后,會將返回數(shù)據(jù)放在返回包的包體部分,例如:
{
“value”:[
{
“dataId”:1026
“dt”:”2010-11-10T09:00:00Z”
“stationId”:1
“powerOutput”:63.5
“waterUsed”:4.24
},
{
“dataId”:2038
“dt”:”2010-11-10T09:00:00Z”
“stationId”:2
“powerOutput”:0.0
“waterUsed”:0.0
}
]
}
客戶端接收到上述的JSON數(shù)據(jù),可以很容易地進行解析并處理。
注意上面例子中的數(shù)據(jù)請求命令中所含的Query option(Filter)只是一個簡單的數(shù)據(jù)過濾。實際上OData的標準中含有類型非常豐富的Query option,提供類似SQL語句的功能,因此圍繞發(fā)布的PowerOut實體集,可以有非常豐富的數(shù)據(jù)輸出。這個特點使得在數(shù)據(jù)需求發(fā)生變化,我們的接口形式可以保持穩(wěn)定。
另外當需求發(fā)生變化時,OData標準還保證了很強的適應性。無論是實體集的數(shù)據(jù)結(jié)構增加Property(類似數(shù)據(jù)庫中的表增加字段),還是數(shù)據(jù)需要分組統(tǒng)計,OData都提供了相應的設計??傊跀?shù)據(jù)集相對穩(wěn)定的情況下,圍繞這些數(shù)據(jù)集,我們能產(chǎn)生千變?nèi)f化的操作。
OData不但能輸出獨立的數(shù)據(jù),還可輸出關系數(shù)據(jù)。有些自動生成工具可以將關系數(shù)據(jù)庫發(fā)布為OData服務,可想而知OData的功能是多么的強大和靈活,它能充分滿足你對信息發(fā)布的需求。
信息系統(tǒng)集成很多時候就是客戶端和服務端的相互磨合,而采用Restful+OData技術,提高了兩端的相互適應性,減少因需求變化而付出的代價,因而簡化了信息系統(tǒng)集成的過程。
Restful+OData的技術價值相當于PC時代的ODBC,它為我們打通了系統(tǒng)數(shù)據(jù)互聯(lián)的通道。OData的技術內(nèi)涵相當豐富,它是IT界長期以來數(shù)據(jù)技術的結(jié)晶,各種數(shù)據(jù)查詢和操作功能應有盡有,不僅提供了極強的數(shù)據(jù)服務功能,甚至連動名詞形式的接口都能提供,絕大部分應用的需求都能滿足。
當您需要標準化企業(yè)內(nèi)的子系統(tǒng),同時想為各種應用和設備提供最廣泛連接時,它應該是一個不錯選擇。
[1] Thomas Erl,Benjamin Carlyle,Cesare Pautasso . SOA與REST:用REST構建企業(yè)級SOA解決方案[M]. 北京:人民郵電出版社,2014.
[2] 謝鵬壽.基于SOA的制造業(yè)集成服務平臺構建方法[M].國防工業(yè)出版社,2013.
[3] 全國信息技術標準化技術委員會SOA標準工作組.中國SOA最佳應用及云計算融合實踐[M].電子工業(yè)出版社,2012.
[4] 中國電子技術標準化研究所. SOA用戶指南[M].電子工業(yè)出版社,2008.
[5] 汪芳琴, 謝強, 丁秋林. 基于REST的Web服務研究[J]. 機械設計與制造工程,2009, 38(23):44-47,52.
[6] 許卓明, 栗明, 董逸生. 基于RPC和基于REST的Web服務交互模型比較分析[J].計算機工程, 2003,29(20):6-8.
[7] 馮新?lián)P, 沈建京. REST和RPC:兩種Web服務架構風格比較分析[J].小型微型計算機系統(tǒng), 2010, 31(7):1393-1395.
[8] 張少敏, 張帆, 王保義. 基于REST和IEC61970的智能電網(wǎng)數(shù)據(jù)集成方法[J].電力自動化設備, 2012, 32(8):124-129.
[9] 程冬梅, 王瑞聰, 劉燕,等. 基于REST架構風格的物聯(lián)網(wǎng)服務平臺研發(fā)[J].計算機工程與應用, 2012, 48(14):74-78,157.
[10] 戴亞娥, 俞成海, 堯飄海,等. 基于REST架構風格的Web 2.0實現(xiàn)[J]. 計算機系統(tǒng)應用, 2009, 18(7):165-168.
[11] 鐘約夫. 基于RESTWeb服務的資源定位方法研究[J]. 自動化與儀器儀表, 2010(5):8-10.
[12] 李久剛, 唐新明, 汪匯兵,等. REST架構的WebGIS技術研究與實現(xiàn)[J]. 測繪科學, 2011, 36(3):85-87.
RESTFUL&ODATA:ASIMPLIFIEDWAYFORENTERPRISEINFORMATIONSYSTEMINTEGRATION
Wang Weilie
(NARIGroupCorporation(StateGridElectricityPowerResearchInstitute),Nanjing211106,Jiangsu,China)
All companies hope that the existing IT system can be reused, but it is difficult to program the interface standards of subsystem service, thus Restful+OData technical solution is provided. The reason of why this solution can simplify interface standards design to provide a new approach of enterprise information system integration. Experiments results indicate that the proposed solution can be referred in simplifying enterprise information system integration.
System-integration Service-interface Restful OData SOA
2017-06-05。王衛(wèi)列,教授級高工,主研領域:電力系統(tǒng)軟件開發(fā)。
TP3
A
10.3969/j.issn.1000-386x.2017.12.028