服務(wù)交換系統(tǒng)的制作方法
【專利摘要】服務(wù)交換系統(tǒng)即ServiceExchangeSystem,簡(jiǎn)稱SES。SES是一個(gè)基于互聯(lián)網(wǎng)的、統(tǒng)一的、與服務(wù)內(nèi)容無關(guān)的服務(wù)發(fā)布和消費(fèi)平臺(tái),主要特性如下:1. 基于互聯(lián)網(wǎng)的開放平臺(tái);2. SES的三大功能是:統(tǒng)一的服務(wù)管理、統(tǒng)一的用戶管理、統(tǒng)一的通信管理;3.SES本身不提供服務(wù)內(nèi)容;4. 基于SES,服務(wù)者可將其服務(wù)發(fā)布到互聯(lián)網(wǎng),而無需自建運(yùn)營(yíng)系統(tǒng);5. 基于SES的服務(wù)共享用戶群,消費(fèi)者可通過SES系統(tǒng),精確獲取所需要的服務(wù)。摘要【專利附圖】
【附圖說明】(其中文字為必要的):摘要附圖左邊展示了目前互聯(lián)網(wǎng)服務(wù)的現(xiàn)狀,右邊展示了SES的主要目的,包括:1.共用同一運(yùn)營(yíng)系統(tǒng);2.統(tǒng)一服務(wù)管理;3.統(tǒng)一的用戶群;4.根據(jù)服務(wù)類型統(tǒng)一人機(jī)界面。
【專利說明】服務(wù)交換系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明全稱為服務(wù)交換系統(tǒng),即Service Exchange System,縮寫為SES,下文用SES表示。
[0002]SES涉及一個(gè)基于互聯(lián)網(wǎng)的服務(wù)發(fā)布和消費(fèi)系統(tǒng),服務(wù)提供者可通過各種軟件或設(shè)備將服務(wù)內(nèi)容發(fā)布到SES系統(tǒng)中;服務(wù)消費(fèi)者亦可通過SES系統(tǒng)精確搜索并訪問到所需要的服務(wù)。
【背景技術(shù)】
[0003]首先闡述將SES作為一個(gè)整體來看的技術(shù)背景。
[0004]各種軟件或者智能設(shè)備若想將自己的服務(wù)發(fā)布到互聯(lián)網(wǎng)上,以便消費(fèi)者遠(yuǎn)程訪問,必須有運(yùn)營(yíng)系統(tǒng)的支持,并提供相應(yīng)的人機(jī)界面。目前,這些開發(fā)服務(wù)軟件和設(shè)備的企業(yè)幾乎都是自己搭建運(yùn)營(yíng)系統(tǒng)和開發(fā)人機(jī)界面。但實(shí)際上,這些運(yùn)營(yíng)系統(tǒng)和人機(jī)界面存在著大量的共同特性,尤其對(duì)于那些不同企業(yè)生產(chǎn)的同類產(chǎn)品。一般來說,運(yùn)營(yíng)系統(tǒng)都提供以下功能:服務(wù)管理,用戶管理,通信管理,以及其他增值服務(wù)和客服支持;若是同類產(chǎn)品,由于產(chǎn)品的共性以及用戶使用習(xí)慣的趨同性,其人機(jī)界面絕的功能和外觀也是基本相似的。因此,提供一個(gè)統(tǒng)一的和服務(wù)無關(guān)的運(yùn)營(yíng)系統(tǒng),并對(duì)同類型的服務(wù)提供統(tǒng)一的人機(jī)界面,既可減少企業(yè)對(duì)于產(chǎn)品的開發(fā)維護(hù)成本,也可提高消費(fèi)者的消費(fèi)體驗(yàn);并可在此基礎(chǔ)上,對(duì)服務(wù)質(zhì)量和消費(fèi)者身份進(jìn)行統(tǒng)一有效的監(jiān)管。圖1 (SES目的)的左邊展示了目前互聯(lián)網(wǎng)服務(wù)的現(xiàn)狀以及不足,右邊則展示了 SES的目的和優(yōu)點(diǎn)。
[0005]下面分三個(gè)方面來闡釋SES所包含的三大功能的技術(shù)背景,即:服務(wù)管理,用戶管理,通信管理。
[0006]服備管理
服務(wù)管理負(fù)責(zé)的主要功能是服務(wù)發(fā)布和服務(wù)搜索。
[0007]目前有關(guān)服務(wù)管理的主要技術(shù)是Web服務(wù)。Web服務(wù)是一種自包含、自解釋、模塊化的應(yīng)用,能夠被發(fā)布、定位,并且可以從Web上的任何位置進(jìn)行調(diào)用。Web服務(wù)技術(shù)是完全基于標(biāo)準(zhǔn)協(xié)議的技術(shù),其核心是服務(wù)發(fā)布、服務(wù)發(fā)現(xiàn)和服務(wù)綁定。W3C定義的Web服務(wù)協(xié)議主要包括SOAP、WSDL和UDDI。更多關(guān)于Web服務(wù)的內(nèi)容請(qǐng)參考【I】【2】。
[0008]在使用Web服務(wù)架構(gòu)時(shí),一般會(huì)遇到以下幾個(gè)問題:首先,其協(xié)議標(biāo)準(zhǔn)比較復(fù)雜,掌握困難;其次,Web服務(wù)定義的是一組函數(shù)接口,雖然靈活性大,但開發(fā)人員基于它構(gòu)建產(chǎn)品時(shí)仍需要做大量工作,甚至超出原有工作量;最重要的是,雖然定義了眾多標(biāo)準(zhǔn),但并不能解決或者是有利于解決服務(wù)被“智能”理解并被“智能”調(diào)用的問題,服務(wù)調(diào)用者仍然需要事先了解服務(wù)所能完成的功能(當(dāng)然,從根本上來說,沒有智能,只有約定)。雖然后來又提出了語義理解的改進(jìn)方法(即WSDL-S,參考【3】),但WSDL+S0AP本質(zhì)上是一個(gè)對(duì)接口精確描述的協(xié)議,語義的加入與WSDL的設(shè)計(jì)初衷并不一致。
[0009]用戶管理用戶管理是指對(duì)系統(tǒng)中所有的用戶進(jìn)行身份信息的管理,用戶信息主要包括用戶名,用戶密碼,以及其他與服務(wù)無關(guān)的用戶信息。
[0010]目前,大多數(shù)網(wǎng)站都有自己的用戶管理系統(tǒng),使得消費(fèi)者訪問這些網(wǎng)站時(shí),都不得不分別注冊(cè)賬戶,導(dǎo)致賬戶數(shù)量繁多,使用極其不便。也有一些互聯(lián)網(wǎng)企業(yè)提供公共的賬戶管理,但只限于人類用戶管理,并且由于和企業(yè)所提供的服務(wù)緊密相關(guān),無法適應(yīng)其他類型的服務(wù)。
[0011]另外,目前的用戶管理系統(tǒng)在進(jìn)行用戶身份認(rèn)證時(shí),一般需要用戶提供用戶名和密碼,而這些私有信息在網(wǎng)絡(luò)上傳輸時(shí),有可能被竊取,造成安全隱患。
[0012]通信服備
SES的通信服務(wù)主要為了解決處于私有TCP/IP網(wǎng)絡(luò)中的主機(jī)之間建立UDP和TCP連接的問題。
[0013]兩種常用的NAT穿越技術(shù)是:STUN (參考【4】)和TURN (參考【5】和【6】)。STUN協(xié)議通過預(yù)測(cè)公網(wǎng)地址的方式進(jìn)行點(diǎn)到點(diǎn)連接,但最大的問題是無法穿透對(duì)稱型NAT。另外有一個(gè)草案(參考【7】),但是其提出的方法中端口預(yù)測(cè)算法存在不足,會(huì)大大的降低穿透成功率。TURN協(xié)議則采用服務(wù)器中轉(zhuǎn)的方式連接兩個(gè)端點(diǎn)。但存在的主要問題是不夠完善:對(duì)于UDP協(xié)議,TURN協(xié)議不支持端點(diǎn)一對(duì)一映射,因此需要進(jìn)行消息解析,降低了消息中轉(zhuǎn)的效率;對(duì)于TCP協(xié)議,則不支持端點(diǎn)多對(duì)多映射,因此服務(wù)器容量有限;同時(shí),獨(dú)立的中轉(zhuǎn)服務(wù)器無法提供一個(gè)高效的通信服務(wù),大大降低了端點(diǎn)之間的通信效率,例如即使是相隔很近的兩個(gè)端點(diǎn),也需要通過遠(yuǎn)處的TURN服務(wù)器進(jìn)行消息中轉(zhuǎn)。
[0014]
【發(fā)明內(nèi)容】
[0015]SES是一個(gè)在現(xiàn)有各種技術(shù)的基礎(chǔ)之上進(jìn)行改進(jìn)、完善和創(chuàng)新,設(shè)計(jì)的一個(gè)統(tǒng)一的、與服務(wù)無關(guān)的、互聯(lián)網(wǎng)服務(wù)發(fā)布和消費(fèi)平臺(tái)。SES包括三大功能:服務(wù)管理、用戶管理、
通信管理。
[0016]SES的引入有利于互聯(lián)網(wǎng)產(chǎn)業(yè)的縱向分工,使得各種提供終端產(chǎn)品和服務(wù)的企業(yè)能夠集中精力在其本職工作之上。基于SES平臺(tái),用戶可以方便地開發(fā)出各種網(wǎng)絡(luò)產(chǎn)品,而無需關(guān)心運(yùn)營(yíng)系統(tǒng)的開發(fā)和搭建,節(jié)約了研發(fā)、運(yùn)營(yíng)成本,降低了產(chǎn)品開發(fā)難度,加快了產(chǎn)品上市速度。
[0017]從技術(shù)上來說,SES的解決的問題包括:
1.提供一個(gè)通用的,易于使用的服務(wù)管理系統(tǒng),包括服務(wù)發(fā)布、服務(wù)定位、服務(wù)消費(fèi);并針對(duì)智能服務(wù)提供支持;
2.提供統(tǒng)一的用戶注冊(cè)、注銷、查詢和身份認(rèn)證機(jī)制;
3.提供完整、安全、可擴(kuò)展的通信服務(wù),解決內(nèi)網(wǎng)設(shè)備互聯(lián)的問題。
[0018]下面就三個(gè)方面分別說明采用的技術(shù)方案以及解決的問題。
[0019]服備管理
為了實(shí)現(xiàn)一套易于使用和靈活的服務(wù)管理系統(tǒng),SES對(duì)服務(wù)的定義進(jìn)行了層次上的提升。SES中使用一個(gè)服務(wù)接口 ID (interface)代表一個(gè)完整的產(chǎn)品所擁有的全部功能,而無需定義一系列具體的函數(shù)。例如SES直接使用“冰箱”代表冰箱所能提供的全部功能,而不是像Web服務(wù)一樣,定義一組函數(shù)去描述冰箱所能完成的具體功能。本質(zhì)上,這仍然是一種約定,只不過這種約定包含了更多的內(nèi)容,或者說包含了對(duì)人類語言的理解。服務(wù)接口 ID的引入大大簡(jiǎn)化了協(xié)議棧(參見圖2 SES協(xié)議棧),以及其他服務(wù)管理工作,包括服務(wù)發(fā)布消息的定義,數(shù)據(jù)庫的設(shè)計(jì)等。另外,SES可通過擴(kuò)充服務(wù)接口 ID,并允許開發(fā)人員自定義新的服務(wù)接口 ID,不斷增強(qiáng)系統(tǒng)的基礎(chǔ)服務(wù)能力,形成一個(gè)大數(shù)據(jù)服務(wù)平臺(tái)。
[0020]除了引入服務(wù)接口 ID外,SES的另一個(gè)特點(diǎn)是,設(shè)計(jì)了一種模糊消費(fèi)的模式,對(duì)于服務(wù)所能提供的數(shù)據(jù)類型進(jìn)行了統(tǒng)一的定義,可以讓消費(fèi)者無需了解服務(wù)者的調(diào)用方式的前提下也能獲取自己所需要的服務(wù)。例如,消費(fèi)者需要一張關(guān)于“衣服”的圖片,那么系統(tǒng)將自動(dòng)進(jìn)行服務(wù)搜索,并自動(dòng)的調(diào)用服務(wù),找出一張最為匹配的圖片返回給消費(fèi)者;與此相對(duì)應(yīng)的是,通過各種搜索網(wǎng)站得到的是一系列的圖片網(wǎng)站,仍然需要用戶做大量的選擇工作,才能找到所需的圖片。
[0021]SES的服務(wù)管理和Web服務(wù)相比,SES協(xié)議棧相對(duì)簡(jiǎn)單,開發(fā)人員更容易理解和使用;而將服務(wù)定義為產(chǎn)品,實(shí)現(xiàn)和管理都更加簡(jiǎn)單;最后,通過標(biāo)準(zhǔn)化數(shù)據(jù)類型,SES引入了模糊消費(fèi)模式,為“智能”調(diào)用提供了一種可行方案。
[0022]用戶管理
SES系統(tǒng)提出了一套獨(dú)立的用戶管理系統(tǒng)。和其他用戶管理系統(tǒng)不同的是:SES的用戶管理是和服務(wù)無關(guān)的;SES中的用戶是邏輯節(jié)點(diǎn),代表一個(gè)數(shù)據(jù)的終結(jié)點(diǎn)或者發(fā)起點(diǎn),可能是一個(gè)人類用戶,也可能是一個(gè)設(shè)備;一個(gè)用戶在實(shí)際活動(dòng)過程中,可能是消費(fèi)者,也可能是服務(wù)者。由于和服務(wù)無關(guān),SES的用戶管理僅僅保存了用戶的固有信息,其中最重要的是用戶名、密碼和地址;若表現(xiàn)為服務(wù)者,則還包括若干服務(wù)信息。
[0023]同時(shí),SES設(shè)計(jì)了一套Key-Token身份認(rèn)證機(jī)制,Key-Token的最大特點(diǎn)是所有通信過程中,用戶最為敏感的password從不出現(xiàn),這樣就絕對(duì)避免了密碼在通信過程中被竊取的可能性。另外,在接收到錯(cuò)誤密碼時(shí),Key-Token機(jī)制非常容易識(shí)別是合法用戶忘記密碼,還是黑客在進(jìn)行暴力破密,從而采取相應(yīng)的措施。同時(shí)Key-Token認(rèn)證支持公共認(rèn)證、友好認(rèn)證、私有認(rèn)證三種模式,可以靈活適應(yīng)于各種情況。
[0024]SES的用戶管理的特點(diǎn)是服務(wù)無關(guān)性,以及所提供的安全及靈活的Key-Token認(rèn)證機(jī)制。
[0025]通信服備
SES中的通信服務(wù)器綜合了 SUTN協(xié)議TURN協(xié)議的優(yōu)點(diǎn),并對(duì)其進(jìn)行了改進(jìn),實(shí)現(xiàn)了一個(gè)新型的、完整的通信服務(wù)機(jī)制。對(duì)于P2P通信,SES的通信服務(wù)支持對(duì)稱型NAT的穿透;對(duì)于中轉(zhuǎn)服務(wù),無論是Μ)Ρ還是TCP協(xié)議,均支持一對(duì)一映射和多對(duì)多映射方式。在多對(duì)多的映射模式下,多個(gè)服務(wù)者可以共享一個(gè)IP地址和端口,大大的節(jié)約了公網(wǎng)IP資源(參考圖3通信中轉(zhuǎn)服務(wù)的多對(duì)多映射模式)。
[0026]另外,在SES中,通信服務(wù)器可以看做一個(gè)提供了通信服務(wù)的服務(wù)者,其具體實(shí)現(xiàn)完全符合SES用戶管理和服務(wù)發(fā)布的規(guī)范要求。因此,SES的通信服務(wù)器既可作為一個(gè)完全獨(dú)立的設(shè)備提供服務(wù),也可以地接入到SES系統(tǒng)中協(xié)同工作。接入到SES系統(tǒng)中時(shí),系統(tǒng)可以根據(jù)服務(wù)者所處的地域分布和網(wǎng)絡(luò)類型,靈活的分配通信服務(wù)器(一般采用地域上距離最近,網(wǎng)絡(luò)類型相同的分配原則),大大降低了消息中轉(zhuǎn)所帶來的通信延遲和抖動(dòng)等負(fù)面影響。
[0027]SES的通信服務(wù)提供了一套完整的端點(diǎn)之間的通信機(jī)制,既支持P2P連接,也支持消息中轉(zhuǎn),并且考慮了網(wǎng)絡(luò)的地理分布情況,大大提高了通信效率。
【專利附圖】
【附圖說明】
以下為【專利附圖】
【附圖說明】,其中的文字均為必要的:
圖1是SES目的;
圖2是SES協(xié)議棧;
圖3是通信中轉(zhuǎn)服務(wù)的多對(duì)多映射模式;
圖4展示了 SES集群環(huán)境,圖中的箭頭顯示的是服務(wù)信令和數(shù)據(jù)的方向;
圖5是SES工作流程圖,為了描述方便,本圖所描述的是主要的工作流程;
圖6是MFMP消息示例;
圖7是服務(wù)發(fā)布時(shí)序圖;
圖8是獲取服務(wù)列表時(shí)序圖;
圖9是獲取中轉(zhuǎn)通信服務(wù)時(shí)序圖;
圖10是獲取點(diǎn)對(duì)點(diǎn)通彳目服務(wù)時(shí)序圖;
圖11是Key-Token認(rèn)證時(shí)序圖;
圖 12 是 SES Framework 架構(gòu)。
[0028]
【具體實(shí)施方式】
[0029](一)SES系統(tǒng)架構(gòu)
SES系統(tǒng)的集群環(huán)境如圖4 SES集群環(huán)境所示,圖中的箭頭顯示的是服務(wù)信令和數(shù)據(jù)的方向。SES系統(tǒng)主要包括以下網(wǎng)元:
1.服務(wù)注冊(cè)者(Register):運(yùn)行于公網(wǎng)服務(wù)器上,負(fù)責(zé)服務(wù)注冊(cè)(即服務(wù)發(fā)布),服務(wù)定位(即服務(wù)搜索),以及用戶管理,包括用戶注冊(cè),身份認(rèn)證等;
2.服務(wù)提供者(Servicer):包括各種服務(wù)軟件或者設(shè)備,負(fù)責(zé)提供具體的服務(wù)內(nèi)容,例如監(jiān)控服務(wù)、打印服務(wù)、存儲(chǔ)服務(wù)等;
3.服務(wù)消費(fèi)者(Consumer):消費(fèi)者使用瀏覽器或者App,搜索并訪問服務(wù)提供者;
4.Web服務(wù)器(Webserver):運(yùn)行于公網(wǎng)服務(wù)器上,為使用瀏覽器的消費(fèi)者提供服務(wù)搜索界面,協(xié)助消費(fèi)者搜索并跳轉(zhuǎn)到自己所需要的服務(wù);
5.通信交換機(jī)(Switcher):運(yùn)行于公網(wǎng)服務(wù)器上,協(xié)助提供服務(wù)者和消費(fèi)者之間的通信連接;
6.數(shù)據(jù)庫(Database):記錄用戶信息和服務(wù)狀態(tài)的數(shù)據(jù)庫。
[0030]SES系統(tǒng)的基本工作原理如圖5 SES工作流程圖所示。為了描述方便,本圖所描述的是主要的工作流程。在實(shí)際工作過程中、以及不同配置下,工作流程會(huì)略有不同,例如Switcher可以向Register注冊(cè)服務(wù),同時(shí),Servicer在獲取通信服務(wù)之前必須先向Register注冊(cè),以獲取最合適的Switcher服務(wù)器地址。SES工作流程的主要包括:
1.申請(qǐng)通信服務(wù):若Servicer處于內(nèi)網(wǎng)之中,并希望將服務(wù)發(fā)布到外網(wǎng),則Servicer在注冊(cè)服務(wù)之前,可以向Switcher申請(qǐng)通信中轉(zhuǎn)服務(wù),通信中轉(zhuǎn)服務(wù)負(fù)責(zé)透明傳輸Consumer 和 Servicer 的消息: a)向Switcher提交通信中轉(zhuǎn)服務(wù)申請(qǐng);申請(qǐng)時(shí)需提交服務(wù)者的信息(包括服務(wù)ID,密碼等),申請(qǐng)的通信類型(例如TCP或UDP),以及其他信息(如申請(qǐng)的端口數(shù)量等);
b)若Servicer提交的申請(qǐng)合格,則返回一對(duì)服務(wù)端口給Servicer,這對(duì)服務(wù)端口中的一個(gè)對(duì)應(yīng)于Servicer,另一個(gè)對(duì)應(yīng)于Consumer ;
2.服務(wù)發(fā)布:Servicer將服務(wù)發(fā)布到Register,Register將發(fā)布的服務(wù)記錄到數(shù)據(jù)庫中:
a)Servicer將服務(wù)信息發(fā)送給Register ;
b)Register檢查服務(wù)信息,若通過檢查,則將信息保存至數(shù)據(jù)庫中;
c)Register將結(jié)果返回給Servicer,結(jié)果有兩種:成功或失敗。若成功,可返回一個(gè)消費(fèi)者認(rèn)證秘鑰,此秘鑰在今后確認(rèn)Consumer身份時(shí)將被使用;
3.獲取服務(wù)列表:若Consumer使用瀏覽器,貝U通過Webserver獲取服務(wù)列表(如圖中3.a所示);若Consumer使用App訪問服務(wù),貝U通過Register獲取服務(wù)列表(如圖中3.b所示):
a)Consumer向Webserver或Register請(qǐng)求服務(wù)列表,請(qǐng)求中可以包括若干關(guān)鍵字,以便定位自己所需要的服務(wù);
b)Webserver或Register在數(shù)據(jù)庫中搜索到匹配的服務(wù);
c)Webserver或Register將服務(wù)列表結(jié)果返回給Consumer;服務(wù)列表包括了每項(xiàng)服務(wù)必要的信息,包括服務(wù)ID,服務(wù)描述,服務(wù)地址等;
4.服務(wù)消費(fèi):Consumer通過服務(wù)列表中提供的服務(wù)地址等信息,連接到Servicer,進(jìn)行服務(wù)消費(fèi);根據(jù)不同的網(wǎng)絡(luò)情況,Consumer可能是和Servicer進(jìn)行P2P直接連接,也可能是通過Switcher進(jìn)行消息中轉(zhuǎn):
a) Consumer和Servicer進(jìn)行服務(wù)消費(fèi);
5.用戶認(rèn)證:服務(wù)消費(fèi)過程中,Servicer可以要求Consumer提供身份證書。此時(shí)Consumer必須向認(rèn)證機(jī)構(gòu)(可能是Register,如圖中5.a所示;也可能是Servicer,如圖中
5.b所示)請(qǐng)求用戶認(rèn)證:
a)Consumer向認(rèn)證機(jī)構(gòu)提供用戶ID,密碼等信息;
b)認(rèn)證機(jī)構(gòu)對(duì)用戶信息進(jìn)行認(rèn)證,若通過認(rèn)證,則返回身份證書(token)。
[0031](二)協(xié)議棧
如圖2 SES協(xié)議棧所示,SES中各網(wǎng)元之間的通信均采用統(tǒng)一的協(xié)議:MessageFunct1n Mapping Protocol (MFMP)0
[0032]MFMP協(xié)議分為三層:
1.通信層:負(fù)責(zé)消息的可靠傳輸,保證消息從發(fā)送端可靠并有序的到達(dá)接收端,目前采用的是標(biāo)準(zhǔn)的TCPIP協(xié)議;當(dāng)采用TCP協(xié)議時(shí),能保證數(shù)據(jù)能有序并可靠到達(dá)接收端,但由于是流式傳輸,無法區(qū)分?jǐn)?shù)據(jù)包的起始;當(dāng)采用UDP協(xié)議時(shí),可保證數(shù)據(jù)包的起始,但無法保證數(shù)據(jù)包的有序、可靠到達(dá);
2.系統(tǒng)層:即SES中所有網(wǎng)元通信需遵循的協(xié)議頭,用來規(guī)范以及統(tǒng)一地址信息、消息參數(shù),數(shù)據(jù)長(zhǎng)度等;SES系統(tǒng)層兼容HTTP協(xié)議;
3.應(yīng)用層:與各個(gè)網(wǎng)元功能相關(guān)的內(nèi)容,不同類型的服務(wù)者在此層中的定義各不相同,對(duì)于Servicer而言,其應(yīng)用層的詳細(xì)定義需參考其所提供的服務(wù)類型描述文檔。
[0033]SES采用HTTP協(xié)議作為系統(tǒng)層協(xié)議,一個(gè)主要原因是考慮使用瀏覽器作為消費(fèi)者客戶端的情形。一般的HTTP協(xié)議主要以文本形式定義,人工可直接閱讀,擴(kuò)展性好;但由于數(shù)據(jù)較長(zhǎng),傳輸效率低;對(duì)于效率要求高的情形,則建議采用HTML5規(guī)范提出的WebSocket長(zhǎng)連接特性。
[0034]完整的HTTP命令包括:HTTP協(xié)議頭+消息實(shí)體。
[0035]例如,一條服務(wù)注冊(cè)的形式如圖6 MFMP消息示例。
[0036]HTTP協(xié)議頭由四部分組成,即命令+ URI + HTTP版本信息+ Tag。具體說明如下:
1.SES支持以下幾種命令:
a)GET (獲取目標(biāo)的屬性);
b)POST (增加或修改目標(biāo)的屬性);
c)DELETE (刪除目標(biāo));
2.完整的URI包括三部分:系統(tǒng)標(biāo)識(shí)(ses)+接口名(interface) +目標(biāo)名(target)+ 參數(shù)(params):
a)系統(tǒng)標(biāo)識(shí)固定為ses;
b)接口名(interface)定義了網(wǎng)元所提供的服務(wù)。對(duì)于switcher和register而言,其提供的服務(wù)是固定的,因此其接口名分別固定為switcher和register。不同servicer可以支持不同的接口,不同接口中可以定義相同的目標(biāo)(target)而并不會(huì)引起沖突。接口名也可以看做是產(chǎn)品名稱,一個(gè)產(chǎn)品所擁有的能力即可看做服務(wù)。因此,接口名一般來說是一個(gè)名詞;
c)目標(biāo)(target)表示此命令的操作對(duì)象。在SES中,一條消息均被視作一個(gè)服務(wù)請(qǐng)求,而一個(gè)服務(wù)均被視作包含若干可提供服務(wù)的對(duì)象的集合;每個(gè)服務(wù)請(qǐng)求均對(duì)應(yīng)于某個(gè)服務(wù)對(duì)象;
d)參數(shù)(params)是為了更加明確定義此操作的行為,參數(shù)有以下形式:……;
3.版本信息目前定為HTTP/1.1 ;
4.Tag指的是HTTP消息頭中的各種標(biāo)簽,提供了一系列附加的信息,常用的如:Content-Length:表示消息實(shí)體的數(shù)據(jù)字節(jié)數(shù);Content_Type:表示消息實(shí)體的數(shù)據(jù)類型。詳細(xì)的Tag信息請(qǐng)參考HTTP協(xié)議標(biāo)準(zhǔn)。
[0037]消息實(shí)體一般XML格式或二進(jìn)制格式或其他自定義格式,具體格式是由應(yīng)用層自行定義的。若為xml格式,則由三部分組成:
1.根標(biāo)簽:SES定義三種根標(biāo)簽,分別對(duì)應(yīng)三種uri的網(wǎng)元類別,即register,switcher, servicer ;
2.根屬性:根屬性定義了根標(biāo)簽的附加信息,目前沒有用到;
3.內(nèi)容:內(nèi)容即消息具體數(shù)據(jù)部分,不同命令所包含的內(nèi)容各不相同。
[0038]消息實(shí)體的具體定義屬于MFMP協(xié)議應(yīng)用層范疇,不同服務(wù)對(duì)應(yīng)的消息實(shí)體各不相同。
[0039]對(duì)于如何選擇參數(shù)還是消息實(shí)體,SES系統(tǒng)有如下約定:
1.若參數(shù)長(zhǎng)度較小(〈128字節(jié)),且屬于標(biāo)識(shí)性質(zhì),則優(yōu)先使用參數(shù)形式;
2.若參數(shù)較長(zhǎng)(>=128字節(jié)),則使用消息實(shí)體; 3.列表參數(shù)使用消息實(shí)體;
4.參數(shù)不同對(duì)應(yīng)不同的函數(shù),消息實(shí)體和函數(shù)無關(guān)。
[0040](三)服務(wù)發(fā)布過程
服務(wù)發(fā)布是指Servicer將服務(wù)信息通過Register注冊(cè)到SES系統(tǒng)中上,以便消費(fèi)者能夠通過SES運(yùn)營(yíng)系統(tǒng)搜索并消費(fèi)此服務(wù)。所謂Servicer發(fā)布服務(wù)到Register,實(shí)際上就是將服務(wù)信息,包括服務(wù)ID、密碼、服務(wù)描述、服務(wù)地址等信息提交給Register。服務(wù)發(fā)布之前,若服務(wù)者擁有公網(wǎng)IP地址,可選擇其公網(wǎng)地址直接作為服務(wù)地址,而無需申請(qǐng)通信服務(wù);若無公網(wǎng)IP地址,則可向Switcher申請(qǐng)通信服務(wù),申請(qǐng)成功后,將獲得一個(gè)公網(wǎng)的IP地址和端口,此地址即可作為服務(wù)地址;消費(fèi)者連接服務(wù)時(shí),也可先嘗試P2P連接,當(dāng)P2P連接失敗時(shí),才通過Switcher中轉(zhuǎn)。
[0041]服務(wù)發(fā)布過程主要涉及Servicer和Register之間的消息交互。服務(wù)發(fā)布相關(guān)的主要過程如圖7服務(wù)發(fā)布時(shí)序圖所示。具體說明如下:
1.身份認(rèn)證:驗(yàn)證Servicer的身份合法性,采用SESKey-Token認(rèn)證方式,關(guān)于Key-Token認(rèn)證的詳細(xì)信息請(qǐng)參考用戶認(rèn)證流程。進(jìn)行身份認(rèn)證后,Servicer將獲得一個(gè)表不自己身份的通信令牌servicer_token,此后Servicer向Register以及Switcher發(fā)送的所有消息均需要攜帶此servicer_token,并且可對(duì)消息實(shí)體進(jìn)行加密。采用身份認(rèn)證的Servicer可以有效防止身份冒充,同時(shí)有利于保護(hù)Consumer的身份合法性檢查;
2.發(fā)送服務(wù)發(fā)布消息(publish):Servicer將服務(wù)信息發(fā)送給Register ;
3.服務(wù)發(fā)布應(yīng)答:Register檢查發(fā)布消息的合法性,包括消息中的token以及密碼是否匹配等,同一服務(wù)不允許重復(fù)發(fā)布等。最后將檢查結(jié)果返回給Servicer,若成功,則將此服務(wù)信息記錄到SES數(shù)據(jù)庫中,并根據(jù)需要返回一個(gè)consumer_token_food, consumer_token_food的作用請(qǐng)參考用戶認(rèn)證流程;否則返回失敗消息給Servicer ;
4.發(fā)送服務(wù)握手消息(fresh):服務(wù)發(fā)布成功后,Servicer需要定時(shí)向Register發(fā)送握手消息,目前的握手間隔是30s ;若一定時(shí)間內(nèi)沒有收到握手消息,Register將取消此服務(wù);
5.服務(wù)握手應(yīng)答=Register檢查握手消息的合法性,若正確,則更新計(jì)數(shù);同時(shí)返回應(yīng)答;
6.發(fā)送服務(wù)更新消息(update):若Servicer的服務(wù)信息變化,則可發(fā)送服務(wù)更新消息給Register ;最常見的是服務(wù)地址發(fā)生變化;(注意:服務(wù)ID變化不適應(yīng)于此消息;)
7.服務(wù)更新應(yīng)答=Register處理服務(wù)更新消息,此過程類似于服務(wù)發(fā)布消息的處理,唯一不同的是,服務(wù)更新消息允許多次發(fā)送,而服務(wù)發(fā)布消息只允許發(fā)送一次;
8.發(fā)送服務(wù)取消消息(unpublish):希望撤銷服務(wù)時(shí),Servicer可向Register發(fā)送此消息;
9.服務(wù)取消應(yīng)答:Register檢查服務(wù)取消消息的合法性,若正確,則刪除SES數(shù)據(jù)庫中此服務(wù)的記錄,并返回結(jié)果。
[0042](四)獲取服務(wù)列表過程
獲取服務(wù)列表過程即服務(wù)定位過程。根據(jù)Consumer使用的客戶端是瀏覽器還是App,Consumer可通過Webserver或者Register獲取服務(wù)列表;收到服務(wù)列表后,若是App則可以“智能”地選擇服務(wù)列表中的某一項(xiàng)服務(wù)進(jìn)行消費(fèi),若是瀏覽器則可以讓人類消費(fèi)者自主選擇服務(wù)進(jìn)行消費(fèi)。
[0043]通過App方式向Register獲取服務(wù)列表的過程如圖8獲取服務(wù)列表時(shí)序圖。具體說明如下:
1.請(qǐng)求服務(wù)列表:請(qǐng)求服務(wù)列表由App發(fā)出,消息中可以攜帶skip參數(shù)表示忽略前面多少條記錄,以及num參數(shù)表示獲取的條數(shù),Register檢測(cè)到此參數(shù)后,將從第skip+Ι條服務(wù)記錄開始統(tǒng)計(jì)。這適合處理服務(wù)列表數(shù)據(jù)量較大的情形;
2.返回服務(wù)列表=Register在系統(tǒng)中搜索到匹配的服務(wù)后,生成一個(gè)服務(wù)列表返回給Consumer。Register需要優(yōu)化搜索算法,盡快響應(yīng)Consumer。因此,某些重要的數(shù)據(jù)需要保存在內(nèi)存中,避免頻繁訪問數(shù)據(jù)庫。
[0044]通過瀏覽器方式向Webserver獲取服務(wù)列表過程類似,所不同的是,瀏覽器發(fā)出的不是請(qǐng)求服務(wù)列表消息,而是請(qǐng)求一個(gè)頁面,Webserver搜索到服務(wù)列表后,生成頁面并返回給瀏覽器。
[0045](五)獲取通信服務(wù)過程
通信交換機(jī)可以協(xié)助兩個(gè)端點(diǎn)進(jìn)行消息通信,目前通信交換機(jī)可以支持TCP、UDP的消息交互。
[0046]通信交換機(jī)提供兩種通信方式,一是中轉(zhuǎn)方式,另一種是點(diǎn)對(duì)點(diǎn)方式(P2P)。中轉(zhuǎn)方式適合所有類型的NAT機(jī)制;而點(diǎn)對(duì)點(diǎn)方式適合所有錐型的NAT以及可預(yù)測(cè)端口對(duì)稱型NAT (換句話說,點(diǎn)對(duì)點(diǎn)方式不適合于隨機(jī)端口映射對(duì)稱型NAT)。
[0047]當(dāng)Servicer處于內(nèi)網(wǎng),但仍然希望能夠被外網(wǎng)的用戶訪問,那么則可以借助于通信交換機(jī)達(dá)到目的。Consumer可以選擇哪種方式連接Servicer,若客戶端為瀏覽器,由于瀏覽器無法控制端口,只能適應(yīng)于中轉(zhuǎn)方式,而對(duì)于客戶端為App方式,則建議優(yōu)先使用P2P連接,當(dāng)P2P連接失敗時(shí)才使用中轉(zhuǎn)方式。無論是請(qǐng)求中轉(zhuǎn)通信,還是請(qǐng)求P2P連接時(shí),首先 Servicer 需要和 Switcher 建立一個(gè)持久連接 s2s 連接(Servicer to Switcher), s2s連接的作用可以看做Servicer和Switcher之間的服務(wù)請(qǐng)求通道(或稱為信令通道)。在Servicer整個(gè)活動(dòng)過程中,s2s通道必須保持連接。
[0048]請(qǐng)求中轉(zhuǎn)通信服務(wù)的工作流程如圖9獲取中轉(zhuǎn)通信服務(wù)時(shí)序圖。具體說明如下:
1.通信服務(wù)請(qǐng)求消息=Servicer向Switcher請(qǐng)求通信服務(wù),提交必要的參數(shù),包括服務(wù)名稱,服務(wù)者令牌,申請(qǐng)的端口數(shù)量和通信類型等;
2.服務(wù)地址:Switcher檢查通信服務(wù)請(qǐng)求,檢查通過后申請(qǐng)一對(duì)端口分別作為Servicer和Consumer的監(jiān)聽端口 ;此檢查過程需要通過Register協(xié)助,包括servicer_token的合法性、申請(qǐng)的端口數(shù)量、帶寬限制等等;
3.消費(fèi)者連接事件:當(dāng)Consumer連接Switcher上的監(jiān)聽端口時(shí),Switcher通知Servicer ;此處對(duì)于TCP和UDP協(xié)議的處理有所不同,對(duì)于TCP,系統(tǒng)將自動(dòng)創(chuàng)建一個(gè)新的TCP連接,并可收到明確的連接事件;對(duì)于UDP,連接事件實(shí)際上由Consumer發(fā)送消息而觸發(fā),這種情況下,Servicer發(fā)送的消息必須攜帶Consumer的IP地址和端口,而Consumer發(fā)送的消息必須攜帶Servicer的名稱;
4.綁定端口消息:同樣,此處對(duì)于TCP和UDP協(xié)議的處理有所不同;對(duì)于TCP,Servicer將連接Switcher對(duì)應(yīng)的監(jiān)聽端口,創(chuàng)建一個(gè)新的連接,并通過此連接發(fā)送綁定消息,表示此連接與某個(gè)Consumer綁定;對(duì)于TOP,則無需綁定端口,但是在發(fā)送消息的參數(shù)中必須攜帶Consumer的IP地址和端口 ;
5.應(yīng)答綁定端口消息:對(duì)于TCP才有此應(yīng)答,對(duì)于UDP無此過程;
6.此后,Switcher將Servicer和Consumer之間的消息互相透?jìng)鳌?br>
[0049]請(qǐng)求P2P連接的主要流程如圖10獲取點(diǎn)對(duì)點(diǎn)通信服務(wù)時(shí)序圖。具體說明如下:
1.端口測(cè)試請(qǐng)求及應(yīng)答1:在Servicer初始化階段,向Switcher發(fā)起三次連續(xù)的TCP連接(或UDP消息),Switcher探測(cè)遠(yuǎn)端的地址(包括IP地址和端口)并將其返回給Servicer ;Servicer利用三個(gè)地址值判斷自己是否處于內(nèi)網(wǎng),以及NAT (網(wǎng)絡(luò)地址轉(zhuǎn)換)的端口映射步長(zhǎng)(step);最佳測(cè)試方法是Servicer使用同一端口,對(duì)三個(gè)不同的Switcher發(fā)起測(cè)試請(qǐng)求,若返回的端口相同,則可認(rèn)為step為O (對(duì)應(yīng)錐形路由器);若返回的端口為等差序列,也可計(jì)算出相應(yīng)的step (對(duì)應(yīng)于步長(zhǎng)固定的對(duì)稱型路由器);否則無法計(jì)算出step(對(duì)應(yīng)于隨機(jī)映射型路由器),這種類型的NAT無法穿透;
2.端口測(cè)試請(qǐng)求及應(yīng)答2:當(dāng)Consumer請(qǐng)求P2P連接Servicer時(shí),同樣需要先測(cè)試自己所對(duì)應(yīng)的NAT類型,測(cè)試方法和上述類似;由于需要進(jìn)行一系列處理,此過程只適合于客戶端為App的情形;
3.請(qǐng)求連接通知(預(yù)測(cè)端口X):Consumer向相應(yīng)的Switcher (即與Servicer建立s2s連接的Swicher)發(fā)送P2P請(qǐng)求,Switcher通過s2s連接將此請(qǐng)求轉(zhuǎn)發(fā)給Servicer ;此步驟的一個(gè)關(guān)鍵是,Consumer需要預(yù)測(cè)一個(gè)端口 X,這個(gè)端口將是此后P2P連接時(shí)Consumer端對(duì)應(yīng)的NAT端口 ;預(yù)測(cè)方法是,將當(dāng)前NAT端口(上一以步驟獲取)加上n*st印
(n=l, 2, 3......);另外,Consumer連接至Switcher后,需保持這個(gè)連接,以便隨后Switcher
發(fā)送邀請(qǐng)連接通知給Consumer ;
4.端口測(cè)試請(qǐng)求及應(yīng)答3:當(dāng)Servicer收到請(qǐng)求連接通知后,需盡快向Switcher發(fā)起一個(gè)端口測(cè)試請(qǐng)求,獲得當(dāng)前NAT映射端口 t0 ;(假設(shè)本地端口為PO ;)
5.邀請(qǐng)連接(目標(biāo)端口X):獲得t0端口后,需盡快向Consumer發(fā)起一個(gè)邀請(qǐng)連接,目標(biāo)端口為X ;本地端口使用PO端口;
6.端口測(cè)試請(qǐng)求及應(yīng)答4:隨后盡快再次向Switcher測(cè)試NAT映射端口(最好使用不同的Switcher),本地端口繼續(xù)使用p0端口 ;
7.邀請(qǐng)連接通知(預(yù)測(cè)端口I):上述的三個(gè)步驟是不可分離的連續(xù)步驟,目的是獲得Servicer端的預(yù)測(cè)端口 y,端口 y將是此后P2P連接時(shí)Servicer端對(duì)應(yīng)的NAT端口 ;端口
y的測(cè)試方式是,將當(dāng)前t0端口加上n*step (n=l, 2, 3......);獲得預(yù)測(cè)端口 y后,Servicer
向Switcher發(fā)起邀請(qǐng)連接通知,Switcher將此通知轉(zhuǎn)發(fā)給Consumer ;Consumer收到此消息后,可斷開與Switcher的連接;
8.搶占連接(目標(biāo)端口y):Consumer使用向Servicer對(duì)應(yīng)的NAT端口 y發(fā)起連續(xù)多次嘗試連接,當(dāng)本Consumer端的NAT端口剛好等于此前的預(yù)測(cè)端口 x時(shí),P2P連接將成功,
(不難獲知:此時(shí)Servicer端的消息是端口 y---->端口 x,而Consumer端的消息是端口
X----> 端口 y);
9.正常通信:P2P連接后,Consumer和Servicer即可正常通信。
[0050](六)用戶認(rèn)證過程用戶認(rèn)證是指用戶向認(rèn)證機(jī)構(gòu)進(jìn)行資格認(rèn)證,并獲得一個(gè)身份證明(token)。SES中的用戶認(rèn)證主要涉及以下幾個(gè)場(chǎng)面:Consumer向Register或Servicer認(rèn)證;Servicer向Register 認(rèn)證;Switcher 向 Register 認(rèn)證。
[0051]SES中,所有認(rèn)證過程的原理是一樣的,均采用一種稱為Key-Token的認(rèn)證方式。Key-Token的最大特點(diǎn)是所有通信過程中,用戶最為敏感的password從不出現(xiàn),這樣就絕對(duì)避免了密碼在通信過程中被竊取的可能性。另外,Key-Token機(jī)制非常容易識(shí)別和防止暴力破密。
[0052]Key-Token認(rèn)證過程有兩個(gè)角色:認(rèn)證機(jī)構(gòu)和認(rèn)證者。在SES系統(tǒng)中,認(rèn)證機(jī)構(gòu)可倉(cāng)泛是 Register 或者 Servicer:
1.向Register 請(qǐng)求認(rèn)證包括 Servicer, Switcher 和 Consumer ;
2.向Servicer 認(rèn)證的只有 Consumer。
[0053]Key-Token認(rèn)證流程如圖11 Key-Token認(rèn)證時(shí)序圖。具體說明如下:
1.請(qǐng)求baby_key:認(rèn)證者向認(rèn)證機(jī)構(gòu)請(qǐng)求一個(gè)隨機(jī)的字符串;請(qǐng)求中需包含自己的名稱,例如Servicer名稱或者Consumer名稱;
2.返回baby_key:認(rèn)證機(jī)構(gòu)隨機(jī)生成一個(gè)字符串,返回給認(rèn)證者;
3.發(fā)送adult_key并請(qǐng)求token:認(rèn)證者使用自己的password作為key_food對(duì)baby_key進(jìn)行有損加密,生成adult_key,即baby_key + password?adult_key。由于丟失部分信息,此adult_key是無法還原成baby_key的;然后將此adult_key以及請(qǐng)求token的其他信息,包括認(rèn)證者的通信秘鑰comkey,請(qǐng)求token的有效期expire,有效次數(shù)count等發(fā)送給認(rèn)證機(jī)構(gòu),所有這些信息都使用password進(jìn)行加密;
4.返回token:認(rèn)證機(jī)構(gòu)驗(yàn)證adult_key是否正確,認(rèn)證機(jī)構(gòu)將adult_key與自己計(jì)算的結(jié)果進(jìn)行比較,驗(yàn)證認(rèn)證者的合法性,若合法,則將若干信息(包括comkey、expire、count、認(rèn)證者的地址信息等)按一定格式編排,并使用一個(gè)秘鑰token_food生成token,返回給認(rèn)證者;此后認(rèn)證者可使用此token與認(rèn)證機(jī)構(gòu)或者第三方進(jìn)行秘密通信;若希望與第二方通{目,則第二方需提如獲取token_food。
[0054]Key-Token認(rèn)證的基本思想是:
1.在算式(A+ B)% C = D中,假設(shè)B、C、D已知,無法精確計(jì)算出A,只能得到一個(gè)A可能的取值序列;
2.假設(shè)認(rèn)證者使用A可能的取值序列中的值進(jìn)行認(rèn)證,試圖猜測(cè)密碼,基本可認(rèn)為此認(rèn)證者為蓄意入侵。
[0055](七)服務(wù)消費(fèi)過程
SES需要解決的一個(gè)重要問題就是:如何讓這些服務(wù)高效、精確的傳遞到所需要的消費(fèi)者手中。由于關(guān)系緊密,這里不得不介紹獲取單個(gè)服務(wù)者的過程;注意這里是指獲取單個(gè)服務(wù)者,而不是獲取一個(gè)服務(wù)者列表。
[0056]根據(jù)服務(wù)消費(fèi)的一般情況,SES提供了三種服務(wù)消費(fèi)模式:
1.完全指定消費(fèi):即向特定的服務(wù)者請(qǐng)求特定的服務(wù),比如去某個(gè)熟悉的商店買衣月艮。這種情況下,消費(fèi)者對(duì)服務(wù)者很了解,且自己的需要完全明確;即使不知道服務(wù)者的地址,也可通過服務(wù)注冊(cè)者獲得;
2.部分指定消費(fèi):即在不指定服務(wù)者情況下請(qǐng)求特定服務(wù),好比在眾多商店中買衣月艮。這種情況下,消費(fèi)者不在乎服務(wù)者是誰,但對(duì)自己的需要是明確的。服務(wù)注冊(cè)者在這里的作用是,找出最為匹配的服務(wù)者,提供給消費(fèi)者使用; 3.模糊消費(fèi):即不指定服務(wù)者也沒有明確自己所需要的服務(wù),好比在無目的地逛商店。這種情況下,消費(fèi)者不在乎服務(wù)者是誰,也不確定自己需要什么。但一般來說,消費(fèi)者的個(gè)人喜好是相對(duì)固定的,因此,可以設(shè)想,服務(wù)注冊(cè)者可以根據(jù)消費(fèi)者的喜好,找出最匹配的服務(wù)者;然后此服務(wù)者也需要根據(jù)消費(fèi)者喜好,找出最匹配的服務(wù),提供給消費(fèi)者。
[0057]三種服務(wù)消費(fèi)模式的區(qū)別主要是在服務(wù)注冊(cè)者和服務(wù)者的具體行為上,其服務(wù)消費(fèi)的基本流程是相似的:都是從服務(wù)注冊(cè)者或者Webserver獲取到服務(wù)者地址,然后直接和服務(wù)者進(jìn)行消費(fèi)。服務(wù)消費(fèi)過程的差異主要體現(xiàn)在不同服務(wù)具體實(shí)現(xiàn)上。
[0058]在實(shí)際消費(fèi)過程中,一次消費(fèi)可能會(huì)涉及到三種消費(fèi)模式。比如一開始是模糊消費(fèi),此時(shí)消費(fèi)者尚不確定自己需要什么;當(dāng)想到自己需要什么時(shí),則進(jìn)入部分指定消費(fèi)模式;最后很可能選擇某個(gè)服務(wù)者提供服務(wù),即進(jìn)入完全指定消費(fèi)模式。
[0059]雖然基本流程相似,但是在實(shí)現(xiàn)過程中,三種模式有著明顯的區(qū)別。
[0060]1.完全指定消費(fèi):完全指定消費(fèi)情況最簡(jiǎn)單,Consumer向Register或WebServer獲取明確的服務(wù)者的服務(wù)地址后,直接訪問此服務(wù)者的某個(gè)指定服務(wù)。這種模式下,請(qǐng)求和返回的數(shù)據(jù)類型都是明確的,無需任何“智能”計(jì)算;
2.部分指定消費(fèi):部分指定消費(fèi)情況下,Consumer提供需要的服務(wù)數(shù)據(jù)類型,以及自己感興趣的一系列關(guān)鍵字,通過Register (Webserver方式不支持此消費(fèi)模式)自動(dòng)計(jì)算最匹配的服務(wù)地址,然后向此服務(wù)者請(qǐng)求服務(wù);由于指定了服務(wù)數(shù)據(jù)類型,服務(wù)者需要根據(jù)數(shù)據(jù)類型以及關(guān)鍵字計(jì)算最匹配的服務(wù),并返回服務(wù)數(shù)據(jù)。此模式涉及到兩種“智能”計(jì)算;
3.模糊消費(fèi):模糊消費(fèi)情況下,Consumer只提供自己感興趣的一系列關(guān)鍵字,通過Register (Webserver方式不支持此消費(fèi)模式)計(jì)算最匹配的服務(wù)者,然后向此服務(wù)者請(qǐng)求服務(wù);由于沒有指定服務(wù)數(shù)據(jù)類型,服務(wù)者需要根據(jù)關(guān)鍵字計(jì)算到最匹配的服務(wù),并返回服務(wù)數(shù)據(jù)。同樣,Consumer端由于實(shí)現(xiàn)不知道將返回何種數(shù)據(jù)類型,需要根據(jù)返回類型自動(dòng)呈現(xiàn)服務(wù)數(shù)據(jù)。此模式涉及到三種“智能”計(jì)算。
[0061](八)服務(wù)監(jiān)管過程服務(wù)監(jiān)管包括兩個(gè)方面:
1.功能完備:發(fā)布某一標(biāo)準(zhǔn)接口的服務(wù)者,必須通過接口的功能完備性測(cè)試;接口測(cè)試由測(cè)試模塊自動(dòng)完成;
2.服務(wù)質(zhì)量:由消費(fèi)者評(píng)分Register提供接口接受消費(fèi)者的評(píng)分。
[0062]功能完備性測(cè)試由一個(gè)稱為Robot Consumer的App自動(dòng)完成。對(duì)于每一個(gè)標(biāo)準(zhǔn)接口,SES均提供一個(gè)Robot Consumer軟件,由于標(biāo)準(zhǔn)接口是實(shí)現(xiàn)統(tǒng)一定義的,因此RobotConsumer軟件完全可以對(duì)接口進(jìn)行遍歷訪問。若某一操作的輸出數(shù)據(jù)是另一操作的輸入數(shù)據(jù),并且輸出數(shù)據(jù)類型為列表,則一般只獲取列表中的一項(xiàng)作為輸入數(shù)據(jù)進(jìn)行測(cè)試。
[0063]功能完備性測(cè)試的大致過程如下:
1.設(shè)置待測(cè)試的Servicer訪問地址;(一個(gè)Servicer—般只支持一個(gè)interface;)
2.選取一個(gè)可確定參數(shù)的target作為當(dāng)前target;
3.使用當(dāng)前target以及必要的參數(shù),發(fā)起一個(gè)服務(wù)請(qǐng)求;(注意:若服務(wù)應(yīng)答是列表,則只需請(qǐng)求一項(xiàng));
4.獲得服務(wù)應(yīng)答,判斷應(yīng)答正確性,給出提示;
5.若服務(wù)應(yīng)答是其他target所需參數(shù),遍歷測(cè)試這些target; 6.選取下一個(gè)可確定參數(shù)的target作為當(dāng)前target,若存在則轉(zhuǎn)至3;
7.結(jié)束。
[0064]服務(wù)質(zhì)量的監(jiān)管是通過Register提供的評(píng)分接口進(jìn)行的,只有通過用戶認(rèn)證的消費(fèi)者才能對(duì)服務(wù)者進(jìn)行評(píng)分。評(píng)分過程是一個(gè)完全獨(dú)立的過程(因此沒有出現(xiàn)在圖5SES工作流程圖中),即與服務(wù)管理、用戶管理、通信管理均沒有直接的交互關(guān)系,但是評(píng)分的結(jié)果將會(huì)影響到Register的“智能”計(jì)算結(jié)果。
[0065](九)數(shù)據(jù)庫
數(shù)據(jù)庫最重要的表是SESUser,記錄了所有用戶信息。這里的用戶是對(duì)服務(wù)者和消費(fèi)者的統(tǒng)稱,一個(gè)用戶在實(shí)際中既可以成為服務(wù)者,也可以成為消費(fèi)者,還可以同時(shí)作為服務(wù)者和消費(fèi)者出現(xiàn)。
[0066]SESUser表字段定義如下:
1.服務(wù)提供者(organizer):類型nvarchar;最大128位;可作為服務(wù)提供者的描述信息;單值;
2.服務(wù)名稱(name):類型nvarchar;最大128位;單值;
3.服務(wù)密碼(password):類型varchar;最大128位;為” #”,或者為空。若為,,#,,,則表示需要用戶提供密碼才能連接服務(wù);
4.服務(wù)地址(address):類型varchar;最大128位;目前有三種地址local:1p-port;switch:1p-port; global:1p-port ;多值;
5.服務(wù)接口(interface):類型nvarchar;最大128位;對(duì)應(yīng)的服務(wù)類型,可為任意字符串,例如:immecom (即時(shí)通信);mediaserver (媒體中心);remotemon (遠(yuǎn)程監(jiān)控);remotedesk (遠(yuǎn)程桌面);l0Cati0n (位置服務(wù));服務(wù)類型分為系統(tǒng)服務(wù)和用戶自定義服務(wù),凡是用戶自定義服務(wù),其interface需要以c_開頭;多值;
6.服務(wù)描述(descript1n):類型nvarchar;最大1024位;可提供服務(wù)描述信息或者關(guān)鍵字信息;
7.月艮務(wù)固有屬性(properties):類型varchar;最大1024位;由WEBServer負(fù)責(zé)寫;目前包括regist,regdate, email ;注冊(cè)標(biāo)記(regist)表示是否注冊(cè)用戶,注冊(cè)用戶可永久占用服務(wù)名稱,下次登陸時(shí)服務(wù)名稱和服務(wù)密碼必須和用戶名稱和用戶密碼完全一致方可登陸成功;regdate指用戶通過網(wǎng)站注冊(cè)的時(shí)間日期;多值;
8.服務(wù)狀態(tài)(status):類型varchar;最大1024位;由Register負(fù)責(zé)寫;目前包括visuable, logintime, needlogin。可見標(biāo)記(visuable):標(biāo)記為可見的服務(wù)才能被用戶搜索并顯示出來;例如visuable:yes ;登陸時(shí)間(1gintime):年月日時(shí)分秒;為空表示沒有登陸;例如 logintime: 2012/8/25 12:00:00。needlogin 表示是否需要 Register 支持友好認(rèn)證;多值;
9.服務(wù)數(shù)據(jù)類型(datatype):類型nvarchar;最大128位;對(duì)應(yīng)的服務(wù)數(shù)據(jù)類型,目前包括 string (字符串),image (圖片);video (視頻);text (文本);aud1 (音樂);medialist(媒體列表)等等;服務(wù)數(shù)據(jù)類型為SES系統(tǒng)統(tǒng)一定義,消費(fèi)者客戶端軟件根據(jù)此類型展示服務(wù)返回的數(shù)據(jù);多值。
[0067](十)SESSDK
為了簡(jiǎn)化Servicer的開發(fā)工作,SES系統(tǒng)提供了服務(wù)軟件開發(fā)包SES Software06乂610卿6111: 1(11: (828801()0 323301(包含了兩個(gè)主要模塊:323 ?1~肅6恥1^,以及八卯。
[0068]828 [以郵恥4實(shí)現(xiàn)了服務(wù)中間層,完成大量和323系統(tǒng)相關(guān)的工作,包括請(qǐng)求通信服務(wù)、服務(wù)發(fā)布、用戶認(rèn)證、協(xié)議層消息解析、消息分發(fā)等等;并提供一系列常用函數(shù),例如字符串處理,數(shù)據(jù)處理等,供開發(fā)人員實(shí)用?;?23361^1。61'的軟件開發(fā)者只需要完成其核心業(yè)務(wù)功能,極大的簡(jiǎn)化了其開發(fā)任務(wù)。另一方面,828辦孤16恥4也可用來編寫消費(fèi)端八卯。
[0069]828 ?1~肅6恥4的架構(gòu)如圖12 828 ?1~肅6恥4架構(gòu)。
[0070]861~^1061~八卯提供了一個(gè)基于323編寫的服務(wù)軟件。這個(gè)八卯既是一個(gè)編寫服務(wù)軟件的示例程序,也是一個(gè)工具。
[0071]作為一個(gè)示例程序,86^1061-八卯展示了編寫一個(gè)服務(wù)軟件的步驟:
1.初始化323引擎;
2.向323引擎注冊(cè)服務(wù)接口;
3.啟動(dòng)本地服務(wù);
4.請(qǐng)求通信服務(wù);
5.發(fā)布服務(wù)至互聯(lián)網(wǎng)。
[0072]另外,361^1(361八卯也展示了如何監(jiān)聽323 口以郵恥4的事件,以及如何進(jìn)行用戶管理,參數(shù)設(shè)置等功能。
[0073]作為工具,861-^1061-八卯可以提供以下功能:
1.自動(dòng)生成服務(wù)接口的代碼或0代碼;
2.支持系統(tǒng)資源監(jiān)控功能,協(xié)助開發(fā)者調(diào)試代碼;
3.提供108管理功能,協(xié)助開發(fā)者進(jìn)行功能測(cè)試。
[0074]( ^^一 )結(jié)束
上述章節(jié)完整描述了 323系統(tǒng)的核心架構(gòu)和主要流程實(shí)現(xiàn)。
[0075]總之,828的宗旨是提供一個(gè)與服務(wù)無關(guān)的互聯(lián)網(wǎng)服務(wù)發(fā)布和消費(fèi)平臺(tái),一方面,828不希望干預(yù)服務(wù)的具體內(nèi)容和形式;另一方面,828希望最大限度的簡(jiǎn)化互聯(lián)網(wǎng)服務(wù)發(fā)布的難度,包括開發(fā),維護(hù),安全等方面。
[0076]
【1】1613信息系統(tǒng)導(dǎo)論,李廣建,高等教育出版社,2008年9月第一版 【2】胃613 861-^1068 紅,130 胃01^1叩化0即 ^01:6, 11 ?6131~1181~7 2004 【3】胃613 861-^106 861118111:108 -130 161111361~ 811)31111881011 7 ?0乂61111361~ 2005
【4】36881011 11-^61-881 111:1111:168 ^01-嫩!', 1-^05389
【5】了1~狀61~831 1)8111? ^61^78 81^01111(1 嫩!'1~?05766
【6】丁1~8乂61~881 1)8111? 尺61&78 81*01111(1 X八丁 (111^) 2x1:611810118 ?01~ 10? ^110081:10118,忖。6062
【7】371111116七 X八丁 XI'&^6^881 118111?(11
1—00.1^x1:。
【權(quán)利要求】
1.SES是一個(gè)服務(wù)發(fā)布平臺(tái),其特征在于統(tǒng)一、與服務(wù)無關(guān)、基于互聯(lián)網(wǎng)。
2.SES包含三大功能:服務(wù)管理、用戶管理、通信管理。
3.SES的服務(wù)管理包括服務(wù)發(fā)布、服務(wù)定位、服務(wù)消費(fèi);并針對(duì)智能服務(wù)提供支持;SES的用戶管理包括用戶注冊(cè)、注銷、查詢和身份認(rèn)證機(jī)制;SES的通信管理包括完整、安全、可擴(kuò)展的通信服務(wù),解決內(nèi)網(wǎng)設(shè)備互聯(lián)的問題。
4.SES的服務(wù)管理中對(duì)服務(wù)重新進(jìn)行了定義,其特征是使用一個(gè)服務(wù)接口 ID(interface)代表一個(gè)完整的產(chǎn)品所擁有的全部功能,而不是定義一系列具體的函數(shù)。
5.SES 設(shè)計(jì)了一個(gè)協(xié)議棧 Message Funct1n Mapping Protocol (MFMP), SES 中各網(wǎng)元之間的通信均采用此協(xié)議;MFMP協(xié)議分為三層:通信層,系統(tǒng)層和應(yīng)用層;SES采用HTTP協(xié)議作為系統(tǒng)層協(xié)議,兼容瀏覽器客戶端和應(yīng)用程序客戶端。
6.SES實(shí)現(xiàn)了一種模糊消費(fèi)模式,其特點(diǎn)是對(duì)服務(wù)所能提供的數(shù)據(jù)類型進(jìn)行了統(tǒng)一的定義,系統(tǒng)可以根據(jù)數(shù)據(jù)類型自動(dòng)調(diào)用服務(wù),從而實(shí)現(xiàn)“智能”調(diào)用。
7.SES包括一個(gè)用戶管理模塊,其特征是完全和服務(wù)無關(guān)的,以及采用了 Key-Token認(rèn)證機(jī)制。
8.SES設(shè)計(jì)了 Key-Token認(rèn)證機(jī)制,其特征是所有通信過程中,用戶最為敏感的password從不出現(xiàn),絕對(duì)避免了密碼在通信過程中被竊取的可能性,并可以有效辨別暴力破密;另一特征是Key-Token認(rèn)證支持公共認(rèn)證、友好認(rèn)證、私有認(rèn)證三種模式。
9.SES提供了通信管理模塊,其特征包括其完整性,支持對(duì)稱型NAT的穿透,中轉(zhuǎn)服務(wù)的一對(duì)一、多對(duì)多模式。
10.SES系統(tǒng)可以根據(jù)服務(wù)者所處的地域分布和網(wǎng)絡(luò)類型,靈活的分配通信服務(wù)器,其主要特征是大大降低了消息中轉(zhuǎn)所帶來的通信延遲和抖動(dòng)等負(fù)面影響。
【文檔編號(hào)】H04L29/08GK104378411SQ201410529809
【公開日】2015年2月25日 申請(qǐng)日期:2014年10月10日 優(yōu)先權(quán)日:2014年10月10日
【發(fā)明者】易穎 申請(qǐng)人:易穎