版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、SAMPSimple Application Message Protocol Apr.21/2009, V1.11樊东卫China-VO项目组中国科学院国家天文台利用SAMP实现桌面应用程序的协同工作协同工作各个软件各有所长,想要让一个软件完成所有别的软件,在开发上难度很大。(团队、资金)一种可行的替代性方法就是,大家还是可以继续专注于做某些针对性的工作,而不是一个大而全的东西。然后,通过某种机制让这些软件工作起来像同一个软件一样。比如在处理一个文件时(如星表)我们可能需要好几个软件,这个时候,我们会希望在一个软件中处理数据的时候,另外一些软件也能知道这边在处理的是哪条数据,并做出适当响应。
2、2021年11月11日2协同工作(续)演示:几个软件通过通过SAMP进行协同工作。TopCat + Aladin + My C# SAMP Client2021年11月11日3SAMP是什么先打个比方,上课铃声响了,大家都就知道该进教室,要上课了。上课铃声就是一个约定的消息,进教室就是大家协同的动作。简单地说,SAMP约定了一些消息集合。当一个程序发出这个集合内的某个消息时,别的程序就会知道该做些什么。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 工作组关于MType的网址。2021年11月11日5SAMP消息类型(续)SAMP协议还有一些保留的消息类型。主要用来描述协同系统中发生的一些事件,如samp.hub.event.register 用于提示有新的Client进入系统,samp.hub.event.unregister 表示有Client离开系统。2021年11月11日6接下来1.这些消息具体是什么样子的呢?(初步认识)2.怎么把这些消息发出
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.怎么把这些消息发出去?(从SAMP框架开始)2021年11月11日9SAMP基本框架2021年11月11日10总体看起来,整个协同工作系统就像一个网络星形结构。处于最中心的是Hub。Hub是服务端,负责维护整个系统的信息,所有消息都要经过Hub。每个支持
5、SAMP的软件就是一个Client。SAMP工作机制2021年11月11日11Hub首先启动,等待Client前来注册。Client发现Hub存在(如何发现Hub),向Hub发送Retristry消息,向Hub进行注册。Client向Hub发送有关自己的一些metadataClient向Hub声明自己准备接收哪些消息开始工作(接收消息并响应或发送消息)Client从Hub注销,退出协同工作体系。如何发现HubLock File文件系统中唯一存在一个LockFile(windows中是%USERPROFILE% 下的.samp文件,Linux是中$home底下的.samp)启动一个Hub之后,H
6、ub将会去建立这样的一个.samp文件,里面按格式写明samp.secret, samp.hub.xmlrpc.url等信息。Client通过这些向Hub进行注册。(注册前还可以通过向url发送ping消息判断Hub是否alive)2021年11月11日12Client收发消息的方式第一种,只发不收Client发出notify或者notifyAll消息2021年11月11日13Client收发消息的方式(续1)第二种:发出之后,异步收Client发出call或callAll消息,然后程序继续执行其他步骤,接收到反馈之后再对反馈做响应。2021年11月11日14Client收发消息的方式(续2)
7、第三种:发出之后,同步收。Client发出callAndWait消息之后,程序暂停一直等到消息反馈(或超时退出)对于Recipient而言,只有一种方式:等消息。2021年11月11日15Hub与Client间的通信方式Hub与Client之间的消息传递采用的是XML-RPC。XML-RPC,即程序远程通信协议。使用HTTP Post方式收发消息,其消息体部分则使用XML进行封装,具体的封装又有其独立、简单的一套规范。由于SAMP使用XML-RPC进行通信,因而,实际上SAMP可以支持多台电脑上软件的协同工作(当然了,需要对协议的Lock File发现机制做一些改动)。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发出的消息都是methodCallHub响应Client HTTP Post过来的message2021年11月11日18samp.private-keyclient-key:1a52fdfsam
9、p.hub-idclient-id:0samp.self-idclient-id:4Private-key后续将用于Hub验证Client身份methodResponse,所有Hub向Client发出的消息都是methodResponse回到第一个例子2021年11月11日19此串字符即向Hub注册之后,Hub向Client返回的Private-key值,Hub用于识别、验证Client使用notifyAll(只发不收)方式发送消息传送一个类型为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,即只能发消息然后暂停程序等待反馈(不支持Asynchronous Call/Response)。另一种是Callable Client,可以主动响应Hub发过来的消息。想要接收samp.hub.event.register 之类的消息,或者接收到别的软件发出来的协同工作消息的话(实际上所有消息都是由Hub发到各个Client的),必须是Callable Client。在协同工作软件很多的时候
11、,Hub 会是一个瓶颈!2021年11月11日20SAMP in SkyMouse这里,SkyMouse加入的就只是一个not Callable SAMP Client。因为它所需要完成的功能只有一个:将查找到的天体的坐标传给别的软件。使用的是coord.pointAt.sky 消息流程:1.注册到Hub2.从查询结果中取得坐标3.使用NotifyAll将coord.pointAt.sky 消息广播出去4.从Hub注销演示:SkyMouse + Aladin(Aladin自带有Hub)2021年11月11日21SAMP in Different Computers由于SAMP的底层使用的是XML-RPC来传送消息的,因而它实际上支持不同地方不同机器上的软件协同。之所以SAMP目前不能做到异地协同,就是由于它的LockFile发现机制造成的。现在,我们只需要绕过现有的LockFile发现机制,就可以实现异地协同。以下演示异地机器发送table.load
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年南阳职业学院单招职业适应性考试备考题库及答案解析
- 2026年兰州石化职业技术学院单招职业适应性测试备考试题及答案解析
- 2026年朔州职业技术学院单招职业适应性考试备考试题及答案解析
- 2026年鹤岗师范高等专科学校单招职业适应性考试备考试题及答案解析
- 2026年甘肃工业职业技术学院单招职业适应性考试备考题库及答案解析
- 期末考试学生个人总结9篇
- 2025-2026学年河南省郑州市二七区七年级(上)月考英语试卷(12月份)(含答案)
- 2026年运城师范高等专科学校单招职业适应性考试模拟试题及答案解析
- 2026年苏州经贸职业技术学院单招职业适应性测试模拟试题及答案解析
- 2026年渤海理工职业学院单招职业适应性测试模拟试题及答案解析
- 2023年四川省普通高中学业水平合格性考试物理试题(含答案)
- 弱电系统维护中的安全和文明措施
- 中国高血压防治指南修订版解读培训课件
- 2024-2025学年青海省西宁市七年级(上)期末英语试卷(含答案)
- 人教川教版三年级上册生命生态安全全册课件
- 老年人能力评估师(三级)职业鉴定考试题及答案
- 新沪科版八年级物理第六章熟悉而陌生的力单元测试试题(含答案)
- 后勤服务方案(技术方案)
- 学术交流英语(学术写作)智慧树知到期末考试答案2024年
- 医院药学信息服务
- 四川省安全员《B证》考试题库及答案
评论
0/150
提交评论