CN102546791A - 基于状态机-交互事件模型的分布式服务系统及方法 - Google Patents
基于状态机-交互事件模型的分布式服务系统及方法 Download PDFInfo
- Publication number
- CN102546791A CN102546791A CN2011104543658A CN201110454365A CN102546791A CN 102546791 A CN102546791 A CN 102546791A CN 2011104543658 A CN2011104543658 A CN 2011104543658A CN 201110454365 A CN201110454365 A CN 201110454365A CN 102546791 A CN102546791 A CN 102546791A
- Authority
- CN
- China
- Prior art keywords
- service
- model
- client
- state machine
- state
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Computer And Data Communications (AREA)
Abstract
本发明公开了一种基于状态机-交互事件的分布式服务系统及其方法,属于信息技术领域。系统包括状态机-交互事件服务模型以及基于此模型的分布式服务组件规范:状态机-交互事件服务模型的特征是服务运行逻辑用状态机表达,每个状态包含一组交互事件;分布式服务组件规范包括服务行为描述契约、服务服务组件接口模型和服务消息协作模型,服务行为描述契约描述服务的执行行为和交互行为,服务服务组件接口模型定义用以实现服务的面向对象接口,服务消息协作模型定义服务与客户端交互的消息协作机制。本发明建立的服务与客户端的互操作机制,可以支持具有丰富交互行为服务描述、服务实现与服务访问。
Description
技术领域
本发明属于信息技术领域,建立了一种基于状态机-交互事件模型的分布式服务系统及其服务方法。
背景技术
网络技术和计算机技术构成了分布式计算的基本技术支撑,也成为构建现代信息大厦的基石,大量的数据采集、存储、分析依赖于分布式计算。异构的计算机硬件系统、软件平台使得现代分布式系统依赖于共同遵循的契约和协议,比如TCP/IP协议、HTTP协议等。软件开发人员易于接受程序开发模式,在分布式计算领域产生了一系列方便程序开发,屏蔽网络通信细节的分布式组件技术,如Windows平台的上RPC(Remote Procedure Call)、DCOM(Distributed Component Object Model)的CORBA(Common Object Request Broker Architecture),Java的RMI(Remote Method Interface)等。近年来,Web技术的广泛应用使得以HTTP协议为载体的XML Web Service,Ajax等又构成新一代分布式SOA(Service-Oriented Archit)的基础。这些分布式服务组件技术以程序设计语言为原型进行构建,如RPC协议以面向过程的语言为原型,远程计算资源被以远程函数的形式提供给开发者;DCOM、CORBA则以面向对象语言为基础,以接口的形式公布功能给使用者;XML Web Service和Ajax技术虽然暴露的是面向对象的接口,但是由于其依赖于无状态的HTTP协议,因此不同操作之间也是无状态的。但是无论哪种模式,计算模型是隐含了客户端请求,服务端响应的计算模式。
发明内容
本发明的目的是建立一种基于状态机-交互事件模型的分布式服务系统,能够表达服务执行行为和交互行为。本发明的另外一个目的是提供基于该系统的服务方法,能够满足服务端与客户端密集的交互请求需求。
为了实现上述发明目的,本发明的服务系统采用的技术方案如下:
基于状态机-交互事件模型的分布式服务系统,包括状态机-交互事件模型和基于该模型的分布式服务组件规范,其中,状态机-交互事件模型包括状态机和交互事件两种基本元素,状态机包含状态和状态迁移两种集合,每个状态由状态名称定义,所述状态机用以表达服务程序的运行逻辑,在服务运行时根据自身逻辑对外发布状态变迁;交互事件包含事件名称、传出数据和传入数据,服务用传出数据向客户端发送数据,用传入数据从客户端请求数据,所述交互事件用以定义和实现服务的交互行为;
所述分布式服务组件规范包括服务行为描述契约、服务组件接口模型和服务消息协作模型,服务行为描述契约遵循所述状态机-交互事件模型,用以描述服务的执行行为和交互行为,服务的使用者基于所述服务行为描述契约建立与服务的交互代码;服务组件接口模型使用面向对象的方法定义所述状态机-交互事件模型的服务组件接口,包括服务上下文接口和服务对象接口,服务上下文接口负责服务对象与外界的通信,服务对象接口负责服务的实现;服务消息协作模型包含服务端回调客户端的持久连接和服务端等待客户端查询两种消息协作模型,所述服务端回调客户端的持久连接消息协作模型如下:客户端与服务建立双向通信,服务器将状态转换和交互事件序列化成消息发送到客户端,并从客户端获得响应消息;所述服务端等待客户端查询消息协作模型如下:服务器端建立一个消息等待对象,服务器引发状态切换和交互事件后,将信息更新到消息等待对象,服务即进入等待,客户端查询得到消息内容,通过网络进行响应,更新等待对象的状态,服务进入重新执行。
本发明的服务方法采用的技术方案如下:客户端与服务器端通过网络进行通信并协同工作,完成计算任务;服务执行引发系统的所述状态迁移和交互事件,并将它们转换为网络消息,所述客户端通过截获处理消息,完成与服务的交互事件。
本发明基于服务系统的状态机表达服务的运行行为,通过服务系统的交互事件实现服务的交互行为,客户端通过响应服务引发的交互事件使用服务的功能,建立了以服务端为主导的分布式计算模型,能够满足服务端与客户端密集的交互请求需求。对于某些特定领域,比如科学计算、过程模拟、交互式仿真等领域,本发明的系统和方法具有很强的针对性。
附图说明
图1是本发明基于状态机-交互事件模型的分布式服务系统结构图。
图2是本发明状态机-交互事件模型的客户端/服务器体系结构图。
图3是本发明分布式服务系统中状态机的结构图。
图4是状态机的UML结构图。
图5是本发明分布式服务系统中服务组件描述契约的结构图。
图6是服务组件描述契约的XML形式。
图7是本发明分布式服务系统中服务组件接口模型示意图。
图8是本发明分布式服务系统中服务消息协作模型示意图。
图9是服务消息协作模型的消息格式。
具体实施方式
下面结合附图和实施例对本发明做进一步详细说明。
本发明的基于状态机-交互事件模型的分布式服务系统包含两个不可分割的部分:
A.状态机-交互事件模型,定义了建立满足此模型的此分布式服务系统的原理;
B.基于状态机-交互事件模型的分布式服务组件规范,定义了实现符合A所定义的模型的在软件层次的实现机制。
本发明符合一般的客户/服务器(Client/Server、C/S)的模型,包括服务器和客户端两部分,客户端与服务器端通过网络进行通信并协同工作,完成计算任务。附图1所示基于状态机-交互事件模型的交互式服务方法,服务执行引发状态迁移和交互事件,并将它们转换为网络消息,客户端通过截获处理消息,完成与服务的交互事件。
下面发明内容基于面向对象程序设计(Object-Oriented Programming)相关术语进行陈述,服务器程序和客户端程序被视为基于网络消息进行交互的对象,因此也成为服务器对象和客户端对象。
(一)状态机-交互事件模型
状态机-交互事件模型包含状态机和交互事件两种基本要素,状态机用以表达服务的运行行为,交互事件用以实现与客户端的交互。
I.状态机
本发明所述状态机,符合状态机的一般形态,包括状态(State)和状态迁移(Transition )两种集合。
状态是服务对象的运行特征,一个服务对象包含若干状态,服务对象在运行时处于其中的一种状态,称为活动状态。
状态迁移,服务运行时根据运行逻辑切换活动状态,从一个活动状态切换到另一个活动状态的过程成为状态迁移。状态迁移可以由源状态(Source)和目标状态(Target)构成的二元组(Source,Target)来表达。假定服务运行时状态迁移是立即完成的,不存在等待和时间。
一个服务对象的运行可以由状态机表达,将服务的关键过程看成是状态的迁移过程。附图2是本发明所述状态机的示意图,服务包含A、B、C三个状态,A→B,B→C两个状态迁移。服务执行时从一个状态迁移到另一个状态,比如初始化状态、运行状态,关闭状态,程序从初始化、执行到卸载,构成了一个服务的生存周期。状态机在实现本发明所述基于状态机-交互事件模型的服务方面有两个作用:
(1.1)公开服务的执行行为,服务提供者通过公开服务对象的状态机,表达服务的内部执行逻辑,服务使用者通过分析服务的状态机了解服务的执行行为。
(1.2)运行时公开服务执行状态,服务运行时总处于一个确定的活动状态,基于自身运行逻辑服务发生状态迁移并通知客户端,使客户端获得服务当前的运行特征,并有针对性的进行处理。
本发明所述状态机中的状态由唯一标示此状态的名字定义,状态迁移是包含源状态和目标状态的二元组。
II.交互事件(Interactive Event)
本发明所述状态机-交互事件模型中的交互事件属于状态,也就是一个状态包含多个交互事件,交互事件在服务运行过程中触发,交互事件包含唯一标示此事件的名字、传出数据和传入数据。
本发明对于事件中的传入数据和传输数据参照点是服务对象,如果通过事件将服务中的数据传递给客户端,则为传出数据;如果通过事件将客户端的数据返回给服务对象,则为传入数据。本发明规定传入数据和传出数据不可同时为空,且定义如果传入数据为空,称事件为无响应的事件(No Respsonse Event),反之为需要用户响应的事件(Response Event)。
本发明的交互事件在建立状态机-交互事件模型的服务时,作用有如下两个:
(2.1)公开服务的交互行为,服务提供者通过在状态中声明交互事件,公开此状态支持的交互行为,服务使用者根据事件声明,编写处理代码。
(2.2)进行服务交互,服务运行时,通过引发交互事件,等待客户端对事件处理,实现客户与服务端的交互功能。
本发明所述I状态机、II交互事件共同构成了状态机-交互事件模型,状态机、状态、状态迁移、事件的结构可由附图3所示的UML类图定义。
(二)基于状态机-交互事件模型的分布式服务组件规范
本发明所述基于状态机-交互事件模型的分布式服务组件规规范包括基于状态机-交互事件模型的服务组件行为描述契约(简称服务组件行为描述契约),基于状态机-交互事件模型的服务组件接口模型(简称服务组件接口模型)和基于状态机-交互事件模型的服务消息模型(简称服务消息模型)。
A.服务组件行为描述契约
本发明所述服务组件行为描述契约用以描述服务组件的执行行为,基于状态机-交互事件模型分为如下描述部分。
(3.1)数据声明部分,定义了服务组件引发的事件所需要的数据结构定义,本发明不对数据结构的定义方式有任何倾向性选择,具体的数据结构定义方式可以采用各种已经存在的数据结构定义方式,比如XML Schema、DTD以及编程语言相关的定义方式,每个数据定义必须拥有唯一的名字。
(3.2)状态声明部分,定义了服务组件运行可能的状态。按照状态机-交互事件模型,交互事件声明包含在状态定义中,交互事件包含的传入数据和传出数据定义依赖于(3.1)数据声明部分。
(3.2)状态迁移定义部分,定义了状态迁移的集合,状态迁移基于源状态和目标状态二元组进行定义。
服务组件行为描述契约基于上述机制定义了服务组件的数据、运行与交互行为,附图4是服务组件行为描述契约的结构图示。将服务组件描述契约映射为基于文本的描述语言,共享给服务组件的使用者。附图5是给出了基于XML的描述的服务行为契约的一种形式的样例,在这个样例中<Behavior>是最外层标签,<Datas>和<Data>定义数据声明,<States>和<State>定义了服务的状态空间,<Event>定义服务的事件,<Transitions>和<Transition>定义了状态迁移。
B.服务组件接口模型
本发明所述服务组件接口模型定义了基于状态机-交互事件模型的服务系统实现的编程实现框架。服务接口模型采用服务容器与服务组件相分离的原则,服务容器承载服务组件,容器负责与外部进行通信,服务组件通过服务容器上下文引发状态迁移和交互事件,附图6是服务组件接口调用关系的示意图。服务组件接口模型包含服务容器上下文件接口(IServiceContext)与服务对象(IServiceObject)两个接口,下面具体阐述服务组件接口模型。
(4.1)服务容器上下文接口(IServiceContext)
服务容器上下文接口作用是提供给服务对象,服务对象运行时用以将服务内部的状态迁移和事件转发出去,服务容器上下文提供了服务对象按照状态机-交互事件模型与外界交互唯一机制,包含如下函数:
x. 引发状态迁移函数 (SwitchState)
函数原型的伪代码是void SwitchState(string target),函数参数是target,表示目标状态,因每次状态迁移都是从当前状态发生,此函数的语义是从当前状态切换到目标状态。服务组件用此函数通知客户端状态迁移。
y. 引发无响应的交互事件函数(FireNoResponseEvent)
函数原型的伪代码void FireNoResponseEvent(string event_name, DataObject output_data)。该函数包含两个参数,event_name是事件的名称,output_data是输出的数据对象,DataObject的具体实现依赖服务系统的需求。该函数提供服务运行时引发无响应的事件。
z. 引发需要用户输入响应的交互事件函数
函数原型的伪代码是DataObject FireResponseEvent(string event_name,DataObject output_data)。该函数包含两个参数,含义与y中相同。该函数包含一个返回值,用以返回客户端输入的数据。此函数可用于从客户端请求数据。
综合x、y、z,IServiceContext接口的伪代码可表示为如下形式。
interface IServiceContext
{
void SwitchState(string state_name);
void FireNoResponseEvent(string event_name,DataObject output_data);
DataObject FireResponseEvent(string event_name, DataObject output_data);
}
(4.2)服务对象接口
服务对象接口(IServiceObject)定义了服务对象必须实现的函数,主要目标是与服务容器上下文产生关联,仅包含一个必须实现的执行函数(Execute),函数包含一个参数,既服务容器上下文接口(IServiceContext)。Execute函数原型是void Execute(IServiceContext context),接口的伪代码定义如下所示。
interface ISeviceObject
{
void Execute(IServiceContext context);
}
C.服务消息协作模型
本发明所述服务消息协作模型定义了基于状态机-交互事件模型下,客户端与服务组件通过消息进行交互的机制,服务消息协作模型依赖于服务容器接口将服务组件的状态和事件转换为网络消息。服务容器、服务组件、服务容器、客户端之间的交互关系如附图7。
基于状态机-交互事件模型的服务器与客户端的服务消息协作按照如下基本模式进行。
u. 首先连接服务,客户端连接服务器,服务器开始运行。
v. 其次服务交互,服务向客户端发送消息,客户端响应消息,进行与服务的交互。状态和事件均转换为网络消息,其转换规则如下:
(i) 状态转换为消息码SWITCH_STATE+[状态名称]。返回消息码为SUCCESS。
(ii) 无响应事件转换消息码FIRE_NO_RESPONSE_EVENT+[事件名称]+[输出数据]。返回值消息码为SUCCESS。
(iii) 响应事件转换为消息吗FIRE_RESPONSE_EVENT+[事件名称]+输出数据。返回消息码为SUCCESS+[输入数据]。
其中SWITCH_STATE、FIRE_NO_RESPONSE_EVENT、FIRE_RESPONSE_EVENT、SUCCESS均表示为整数。
附图8给出了消息格式的示意图。
基于网络连接模式的不同,服务消息协作可以有服务端回调客户端持久连接和服务端等待客户端查询两种通信模式。
(1) 服务端回调客户端的持久连接
该模式下,服务器端与客户端建立持久的网络连接,并且可以基于此连接进行双向通信。此模式下服务组件的状态迁移和事件都被序列化为消息,通过网络发送到客户端,服务端等待客户端返回对此消息的响应,客户端响应完成之后,服务组件继续之心。
(2)服务端等待客户端查询
该模式下,服务端与客户端不建立持久的网络连接,客户端建立与服务端建立一个网络连接。服务容器上下文将消息缓存在服务端,建立一个等待对象(WaitObject)当使当前执行线程等待,并设置等待信号的值为(true)。客户端通过网络查询等待对象是否为真,如果有消息需要处理,则将消息取回,如果没有消息处理,则等待有消息处理时才返回,消息处理完毕后,该连接即可关闭,客户端与服务端重新建立一个网络连接,进行下一次查询。
Claims (2)
1.基于状态机-交互事件模型的分布式服务系统,其特征在于,所述系统包括状态机-交互事件模型和基于该模型的分布式服务组件规范,其中,
状态机-交互事件模型包括状态机和交互事件两种基本元素,状态机包含状态和状态迁移两种集合,每个状态由状态名称定义,所述状态机用以表达服务程序的运行逻辑,在服务运行时根据自身逻辑对外发布状态变迁;交互事件包含事件名称、传出数据和传入数据,服务用传出数据向客户端发送数据,用传入数据从客户端请求数据,所述交互事件用以定义和实现服务的交互行为;
所述分布式服务组件规范包括服务行为描述契约、服务组件接口模型和服务消息协作模型,服务行为描述契约遵循所述状态机-交互事件模型,用以描述服务的执行行为和交互行为,服务的使用者基于所述服务行为描述契约建立与服务的交互代码;服务组件接口模型使用面向对象的方法定义所述状态机-交互事件模型的服务组件接口,包括服务上下文接口和服务对象接口,服务上下文接口负责服务对象与外界的通信,服务对象接口负责服务的实现;服务消息协作模型包含服务端回调客户端的持久连接和服务端等待客户端查询两种消息协作模型,所述服务端回调客户端的持久连接消息协作模型如下:客户端与服务建立双向通信,服务器将状态转换和交互事件序列化成消息发送到客户端,并从客户端获得响应消息;所述服务端等待客户端查询消息协作模型如下:服务器端建立一个消息等待对象,服务器引发状态切换和交互事件后,将信息更新到消息等待对象,服务即进入等待,客户端查询得到消息内容,通过网络进行响应,更新等待对象的状态,服务进入重新执行。
2. 利用如权利要求1所述分布式服务系统的服务方法,其特征在于,客户端与服务器端通过网络进行通信并协同工作,完成计算任务;服务执行引发所述状态迁移和交互事件,并将它们转换为网络消息,所述客户端通过截获处理消息,完成与服务的交互事件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011104543658A CN102546791A (zh) | 2011-12-30 | 2011-12-30 | 基于状态机-交互事件模型的分布式服务系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011104543658A CN102546791A (zh) | 2011-12-30 | 2011-12-30 | 基于状态机-交互事件模型的分布式服务系统及方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102546791A true CN102546791A (zh) | 2012-07-04 |
Family
ID=46352737
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2011104543658A Pending CN102546791A (zh) | 2011-12-30 | 2011-12-30 | 基于状态机-交互事件模型的分布式服务系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102546791A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103546369A (zh) * | 2013-11-13 | 2014-01-29 | 中国农业银行股份有限公司 | 一种协作方法、服务器、客户端与系统 |
CN109426651A (zh) * | 2017-06-20 | 2019-03-05 | 北京小米移动软件有限公司 | 文件转换的方法及装置 |
CN113419689A (zh) * | 2021-08-25 | 2021-09-21 | 苏州浪潮智能科技有限公司 | 基于状态分析的对象管理的方法、系统、设备和存储介质 |
CN116501713A (zh) * | 2023-06-26 | 2023-07-28 | 成都谐盈科技有限公司 | 一种分布式文件系统的实现方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1149919A (zh) * | 1995-03-30 | 1997-05-14 | 摩托罗拉公司 | 利用多次重发定时器经不可靠通信信道的远程过程调用的方法和系统 |
CN101651698A (zh) * | 2007-12-12 | 2010-02-17 | 浙江大学 | 基于nio和io的面向发布订阅系统的传输方法 |
CN102075545A (zh) * | 2011-02-18 | 2011-05-25 | 杭州华三通信技术有限公司 | 一种客户端注册指示方法、注册方法及其设备 |
-
2011
- 2011-12-30 CN CN2011104543658A patent/CN102546791A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1149919A (zh) * | 1995-03-30 | 1997-05-14 | 摩托罗拉公司 | 利用多次重发定时器经不可靠通信信道的远程过程调用的方法和系统 |
CN101651698A (zh) * | 2007-12-12 | 2010-02-17 | 浙江大学 | 基于nio和io的面向发布订阅系统的传输方法 |
CN102075545A (zh) * | 2011-02-18 | 2011-05-25 | 杭州华三通信技术有限公司 | 一种客户端注册指示方法、注册方法及其设备 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103546369A (zh) * | 2013-11-13 | 2014-01-29 | 中国农业银行股份有限公司 | 一种协作方法、服务器、客户端与系统 |
CN103546369B (zh) * | 2013-11-13 | 2017-04-05 | 中国农业银行股份有限公司 | 一种协作方法、服务器、客户端与系统 |
CN109426651A (zh) * | 2017-06-20 | 2019-03-05 | 北京小米移动软件有限公司 | 文件转换的方法及装置 |
CN113419689A (zh) * | 2021-08-25 | 2021-09-21 | 苏州浪潮智能科技有限公司 | 基于状态分析的对象管理的方法、系统、设备和存储介质 |
CN116501713A (zh) * | 2023-06-26 | 2023-07-28 | 成都谐盈科技有限公司 | 一种分布式文件系统的实现方法 |
CN116501713B (zh) * | 2023-06-26 | 2023-09-22 | 成都谐盈科技有限公司 | 一种分布式文件系统的实现方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108809972B (zh) | 基于开源生态系统的物联网综合实验及应用开发平台 | |
CN103324173B (zh) | 基于中间件的多异构机器人协作方法 | |
CN102594833B (zh) | 一种通信协议适配方法和系统 | |
De Farias et al. | COMFIT: A development environment for the Internet of Things | |
CN102546791A (zh) | 基于状态机-交互事件模型的分布式服务系统及方法 | |
WO2021138939A1 (zh) | 一种云脑机器人系统 | |
CN101170580A (zh) | 用于将调用流程与网络服务合并的系统和方法 | |
CN101295247A (zh) | 一种跨cpu平台的嵌入式图形界面生成方法 | |
CN113572815A (zh) | 一种跨异构平台的通信技术方法、系统及介质 | |
CN102103519A (zh) | 一种基于脚本的Web服务执行优化方法 | |
García-Sánchez et al. | Service oriented evolutionary algorithms | |
CN111625218B (zh) | 一种自定义库开发的大数据处理方法及系统 | |
Oliveira et al. | Internet of Intelligent Things: A convergence of embedded systems, edge computing and machine learning | |
CN102137162B (zh) | 基于软件即服务模式的cad集成系统 | |
CN101042648A (zh) | 为多网格应用提供统一界面的插件、系统及方法 | |
CN101604323A (zh) | 一种地理空间模型整合与共享的方法及其系统 | |
Acampora et al. | Distributing fuzzy reasoning through fuzzy markup language: An application to ambient intelligence | |
Krishnamurthy et al. | Programming frameworks for Internet of Things | |
CN115774573A (zh) | 应用集成方法、装置、电子设备和存储介质 | |
Hamida et al. | Integrated CHOReOS middleware-Enabling large-scale, QoS-aware adaptive choreographies | |
CN106371848A (zh) | 一种web开发框架支持Odata的实现方法 | |
Kiljander et al. | Opening information of low capacity embedded systems for Smart Spaces | |
CN100464303C (zh) | 构件化软件系统中实现分布式业务逻辑计算的方法 | |
Wallace et al. | Intelligent System Development and Integration for Cloud Computing | |
CN101794218A (zh) | 一种基于知识库并支持复杂产品先进制造系统的语义soa集成方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20120704 |