




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、SAMPSimple Application Message Protocol Apr.21/2009, V1.11樊東衛(wèi)China-VO項目組中國科學院國家天文臺利用SAMP實現(xiàn)桌面應用程序的協(xié)同工作協(xié)同工作各個軟件各有所長,想要讓一個軟件完成所有別的軟件,在開發(fā)上難度很大。(團隊、資金)一種可行的替代性方法就是,大家還是可以繼續(xù)專注于做某些針對性的工作,而不是一個大而全的東西。然后,通過某種機制讓這些軟件工作起來像同一個軟件一樣。比如在處理一個文件時(如星表)我們可能需要好幾個軟件,這個時候,我們會希望在一個軟件中處理數(shù)據(jù)的時候,另外一些軟件也能知道這邊在處理的是哪條數(shù)據(jù),并做出適當響應。
2、2021年11月11日2協(xié)同工作(續(xù))演示:幾個軟件通過通過SAMP進行協(xié)同工作。TopCat + Aladin + My C# SAMP Client2021年11月11日3SAMP是什么先打個比方,上課鈴聲響了,大家都就知道該進教室,要上課了。上課鈴聲就是一個約定的消息,進教室就是大家協(xié)同的動作。簡單地說,SAMP約定了一些消息集合。當一個程序發(fā)出這個集合內(nèi)的某個消息時,別的程序就會知道該做些什么。2021年11月11日4SAMP消息類型目前主要有:table.load.votabletable.load.fitstable.highlight.rowtable.select.rowLis
3、timage.load.fitscoord.pointAt.sky spectrum.load.ssa-generic client.env.get 參見IVOA Applications 工作組關(guān)于MType的網(wǎng)址。2021年11月11日5SAMP消息類型(續(xù))SAMP協(xié)議還有一些保留的消息類型。主要用來描述協(xié)同系統(tǒng)中發(fā)生的一些事件,如samp.hub.event.register 用于提示有新的Client進入系統(tǒng),samp.hub.event.unregister 表示有Client離開系統(tǒng)。2021年11月11日6接下來1.這些消息具體是什么樣子的呢?(初步認識)2.怎么把這些消息發(fā)出
4、去?2021年11月11日7SAMP消息例子2021年11月11日8samp.hub.notifyAllapp-id:1a52fdf-2samp.mtypetable.load.fitssamp.paramsurlfile:/D:/m31.fitstable-idtheidm31namem31.fits接下來1.這些消息具體是什么樣子的呢?2.怎么把這些消息發(fā)出去?(從SAMP框架開始)2021年11月11日9SAMP基本框架2021年11月11日10總體看起來,整個協(xié)同工作系統(tǒng)就像一個網(wǎng)絡(luò)星形結(jié)構(gòu)。處于最中心的是Hub。Hub是服務(wù)端,負責維護整個系統(tǒng)的信息,所有消息都要經(jīng)過Hub。每個支持
5、SAMP的軟件就是一個Client。SAMP工作機制2021年11月11日11Hub首先啟動,等待Client前來注冊。Client發(fā)現(xiàn)Hub存在(如何發(fā)現(xiàn)Hub),向Hub發(fā)送Retristry消息,向Hub進行注冊。Client向Hub發(fā)送有關(guān)自己的一些metadataClient向Hub聲明自己準備接收哪些消息開始工作(接收消息并響應或發(fā)送消息)Client從Hub注銷,退出協(xié)同工作體系。如何發(fā)現(xiàn)HubLock File文件系統(tǒng)中唯一存在一個LockFile(windows中是%USERPROFILE% 下的.samp文件,Linux是中$home底下的.samp)啟動一個Hub之后,H
6、ub將會去建立這樣的一個.samp文件,里面按格式寫明samp.secret, samp.hub.xmlrpc.url等信息。Client通過這些向Hub進行注冊。(注冊前還可以通過向url發(fā)送ping消息判斷Hub是否alive)2021年11月11日12Client收發(fā)消息的方式第一種,只發(fā)不收Client發(fā)出notify或者notifyAll消息2021年11月11日13Client收發(fā)消息的方式(續(xù)1)第二種:發(fā)出之后,異步收Client發(fā)出call或callAll消息,然后程序繼續(xù)執(zhí)行其他步驟,接收到反饋之后再對反饋做響應。2021年11月11日14Client收發(fā)消息的方式(續(xù)2)
7、第三種:發(fā)出之后,同步收。Client發(fā)出callAndWait消息之后,程序暫停一直等到消息反饋(或超時退出)對于Recipient而言,只有一種方式:等消息。2021年11月11日15Hub與Client間的通信方式Hub與Client之間的消息傳遞采用的是XML-RPC。XML-RPC,即程序遠程通信協(xié)議。使用HTTP Post方式收發(fā)消息,其消息體部分則使用XML進行封裝,具體的封裝又有其獨立、簡單的一套規(guī)范。由于SAMP使用XML-RPC進行通信,因而,實際上SAMP可以支持多臺電腦上軟件的協(xié)同工作(當然了,需要對協(xié)議的Lock File發(fā)現(xiàn)機制做一些改動)。2021年11月11日1
8、6SAMP消息舉例Registry消息2021年11月11日17POST/xmlrpcHTTP/1.0User-Agent:Java/1.5.0_10Content-Type:text/xmlContent-Length:189samp.hub.register 734144fdaab8400a1ec2這個串來自Lock File中的samp.secretmethodCall,所有Client向Hub發(fā)出的消息都是methodCallHub響應Client HTTP Post過來的message2021年11月11日18samp.private-keyclient-key:1a52fdfsam
9、p.hub-idclient-id:0samp.self-idclient-id:4Private-key后續(xù)將用于Hub驗證Client身份methodResponse,所有Hub向Client發(fā)出的消息都是methodResponse回到第一個例子2021年11月11日19此串字符即向Hub注冊之后,Hub向Client返回的Private-key值,Hub用于識別、驗證Client使用notifyAll(只發(fā)不收)方式發(fā)送消息傳送一個類型為table.load.fits的SAMP消息samp.hub.notifyAllapp-id:1a52fdf-2samp.mtypetable.loa
10、d.fitssamp.paramsurlfile:/D:/m31.fitstable-idtheidm31namem31.fits注意事項Client 有兩種,一種是not Callable Client,即只能發(fā)消息然后暫停程序等待反饋(不支持Asynchronous Call/Response)。另一種是Callable Client,可以主動響應Hub發(fā)過來的消息。想要接收samp.hub.event.register 之類的消息,或者接收到別的軟件發(fā)出來的協(xié)同工作消息的話(實際上所有消息都是由Hub發(fā)到各個Client的),必須是Callable Client。在協(xié)同工作軟件很多的時候
11、,Hub 會是一個瓶頸!2021年11月11日20SAMP in SkyMouse這里,SkyMouse加入的就只是一個not Callable SAMP Client。因為它所需要完成的功能只有一個:將查找到的天體的坐標傳給別的軟件。使用的是coord.pointAt.sky 消息流程:1.注冊到Hub2.從查詢結(jié)果中取得坐標3.使用NotifyAll將coord.pointAt.sky 消息廣播出去4.從Hub注銷演示:SkyMouse + Aladin(Aladin自帶有Hub)2021年11月11日21SAMP in Different Computers由于SAMP的底層使用的是XML-RPC來傳送消息的,因而它實際上支持不同地方不同機器上的軟件協(xié)同。之所以SAMP目前不能做到異地協(xié)同,就是由于它的LockFile發(fā)現(xiàn)機制造成的。現(xiàn)在,我們只需要繞過現(xiàn)有的LockFile發(fā)現(xiàn)機制,就可以實現(xiàn)異地協(xié)同。以下演示異地機器發(fā)送table.load
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《管理的基本理念》課件
- 《京東商城模式分析》課件
- 《日常生活中的塑料制品》課件
- 環(huán)保行動指南
- 《現(xiàn)在進行時上海版》課件
- 古文明的奧秘揭示
- 《環(huán)境材料概論》課件
- 商業(yè)用電改成民用申請書
- 營養(yǎng)配餐員筆試題練習測試題附答案
- 進一步財會監(jiān)督復習試題附答案
- 科目一知識大全課件
- 2016-2023年大慶醫(yī)學高等??茖W校高職單招(英語/數(shù)學/語文)筆試歷年參考題庫含答案解析
- 泛微協(xié)同OA與SAP集成應用解決方案V講訴
- 探討電磁感應現(xiàn)象對電能轉(zhuǎn)化效率的影響
- EHS法律法規(guī)清單及合規(guī)性評估
- 橋梁定期檢查-主要部件檢查要點與評定標準
- 長途汽車客運站調(diào)研報告
- 陜西各市(精確到縣區(qū))地圖PPT課件(可編輯版)
- JTG C10-2007 公路勘測規(guī)范正式版
- (完整版)國際金融法
- 近代德國的學前教育課件
評論
0/150
提交評論