(華北電力大學控制與計算機工程學院 北京 102206)
Web服務是和一個平臺無關的,低耦合的,可編程的web應用程序,可以通過可擴展標記語言的標準來描述、發布和發現。其經常被用來開發分布式的應用程序。Web服務技術可以使得在不同環境下的應用無須借助第三方軟件和硬件,就能相互集成并執行具體的業務功能。目前,web服務技術在Internet上發揮著巨大的作用。Web服務被提出時預想其對于web上的應用的性能應該有一個重大的提升。但是,目前的提升還是沒有達到預期。一方面,web上服務的數量比期望的要少很多。另一方面,大量的關于web服務的研究集中在基于關鍵字或者基于語義的發現來提升服務匹配的數量和質量。此外,通過最近的文獻可知,大多數發布在web上的服務沒有被使用,只有一小部分被發現,組合,調用。本文提出一個方法將孤立的服務連接起來形成一個服務網絡,來支持服務的社交活動。
構建服務網絡時我們用到服務的功能屬性,服務的社交屬性。服務的功能屬性是一系列描述服務任務的屬性,包括服務名和輸入輸出。Web服務,語義web服務和web APIs都是服務的模型,但其僅僅考慮了服務的功能屬性和QoS而沒有考慮服務的社交活動。語義web服務給以前的服務發現方法帶來了很大的革新,但是現有的服務之間并沒有社交關系。在本文中,我們提出一個方法來將單獨的服務連接成為服務網絡。使用連接的質量來描述服務的社交關系并以此來支持服務的社交活動。
一個web服務的網絡是一個能夠反映服務社交活動的服務網絡。它的結構是一個有向圖G=
服務網絡通過社交鏈路將服務連接成為網絡。一方面,加強了服務的社交性,更加有利于服務的發現和組合。另一方面,服務網絡將服務的社交屬性形容為社交關系和社交狀態,能夠反應真實的社交情況來加強用戶分享,組合和推薦的意愿來提高服務發現的質量。
給出服務si和服務sj,參數相關性
表示了si的輸入和sj的輸出重合的可能性,即si和sj之間有鏈路的可能性。
傳統的服務發現方法,比如基于關鍵字的,基于語義的,服務都缺少和服務調用者的聯系。服務調用者不能參與到服務發現的過程中。此外,服務被發布為孤立的服務,所以服務與服務之間也沒有聯系。這使得目前的服務發現方法不能引導用戶從一個服務發現另一個可能和其組合的服務。考慮一個應用場景,一個病人感覺到不舒服。他首先得知道他得了什么病,然后得知道哪一家醫院可以治療這個病。他還得知道醫院附近酒店和飯店的信息,因為他得在醫院治療一段時間。最后,他還得知道從醫院去酒店和飯店的路線。沒有單個的服務可以滿足這個情景里的所有需要。為了滿足這些需求,多個服務需要被發現并組合。可以滿足上述需要的服務集合如下,首先,他需要“診斷服務”來根據他的癥狀給出診斷。然后,需要“獲得醫院信息服務”來得到能夠治療他健康問題的醫院的信息,需要“獲取位置信息服務”得到更多的地址信息。之后,需要“獲取酒店信息服務”與“獲取飯店信息服務”來獲取酒店與飯店的信息。最后,根據得到的地址,需要“導航服務”來獲得路線圖。為了發現可以滿足復雜請求的服務,我們提出一個新的服務發現方法。
就像我們使用鏈接數據來重用數據,從相關的數據集發現數據或者從大量的數據資源中集成數據一樣,鏈路可以用來做服務發現。本文的服務發現方法,允許用戶從一個服務出發沿著鏈路找到其他相關的服務,這樣用戶就可以更加深入的探索網絡。本方法允許用戶根據自己的需要沿著鏈路發現相關的服務,就像在互聯網上瀏覽web頁面一樣。服務網絡上的社交鏈路可以被定義為
SL={L1,L2,…,Ln},1≤n≤N
其中SL為鏈路的集合。所以,可以跟隨鏈路N次來探索整個服務網絡的服務。服務的數量被定義為:
s=∑(Sj(charAtrib)∪Sj(numAtrib))W(attribj)
結果表明所提出的基于服務網絡的web服務發現方法的效果優于基于語義的發現方法和基于語法的發現方法。
綜上所述,本文通過將孤立的服務連接成為一個服務網絡來加強服務的聯系。提出一個新的模型來構建web服務的服務網絡,利用服務之間的參數相關性來構建服務的服務網絡。然后,提出一個在服務的網絡上進行查找的方法。最后,對于提出的方法進行了對比實驗,證實了所提出的基于服務網絡的web服務發現方法的效果優于傳統的web服務發現方法,充分證明了該方案的可行性和有效性。