CN105745620B - 软件架构的实现方法和实现平台 - Google Patents
软件架构的实现方法和实现平台 Download PDFInfo
- Publication number
- CN105745620B CN105745620B CN201380081137.8A CN201380081137A CN105745620B CN 105745620 B CN105745620 B CN 105745620B CN 201380081137 A CN201380081137 A CN 201380081137A CN 105745620 B CN105745620 B CN 105745620B
- Authority
- CN
- China
- Prior art keywords
- layer
- plug
- unit
- layers
- communication
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种软件架构的实现方法和实现平台。本发明实施例提供的软件架构的实现方法包括:将客户端软件的逻辑结构划分为多个逻辑层;建立各逻辑层之间的消息交互方式;通过应用层/UI层提供的客户端软件UI接收来自用户的业务请求消息,利用消息交互方式将业务请求消息发送至业务层;以及,通过应用层/UI层捕获业务层的事件并执行相应的业务操作,利用消息交互方式将应用层/UI层操作结果发送至通信层;通过业务层对业务请求消息请求的业务数据和事件进行管理,并执行业务操作,利用消息交互方式将业务层操作结果发送至通信层;通过通信层中预定通信方式的通信模块将应用层/UI层操作结果和业务层操作结果发送至业务服务器。
Description
技术领域
本发明涉及计算机软件应用技术领域,特别涉及一种软件架构的实现方法和软件架构的实现平台。
背景技术
随着互联网的发展,软件慢慢成为了用户生活中必不可少的互动沟通交流娱乐工具。软件也由最初的向用户提供单一功能或应用,演变成了为用户提供生活支撑的一个大型的服务平台。
简化IM客户端的开发效率,使软件的架构设计和开发过程变得合理高效,是业界目前亟待解决的主要问题之一。
发明内容
鉴于上述问题,本发明实施例提供了一种软件架构的实现方法和相应的软件架构的实现平台,以达到简化开发操作、提高软件开发效率的效果。
为了达到上述目的,本发明实施例采用的技术方案如下:
一方面,本发明实施例提供了一种软件架构的实现方法,包括:
将客户端软件的逻辑结构划分为多个逻辑层,该逻辑层包括基础支持层和从下至上的通信层、业务层、应用层/用户界面UI层;以及,建立各逻辑层之间的消息交互方式,以利用消息交互方式运行客户端软件,其中,该消息交互方式包括上层的逻辑层通过调用下层逻辑层中的接口访问下层的逻辑层,下层的逻辑层按照设定的事件机制向上层逻辑层发送消息;
根据基础支持层提供的内容,通过应用层/UI层提供的客户端软件UI接收来自用户的业务请求消息,利用消息交互方式将业务请求消息发送至业务层;以及,通过应用层/UI层捕获业务层的事件并执行相应的业务操作,利用消息交互方式将应用层/UI层操作结果发送至通信层;
根据基础支持层提供的内容,通过业务层对业务请求消息请求的业务数据和事件进行管理,并执行业务操作,利用消息交互方式将业务层操作结果发送至通信层;
根据基础支持层提供的内容,通过通信层中预定通信方式的通信模块将应用层/UI层操作结果和业务层操作结果发送至业务服务器;
其中,基础支持层中存储各逻辑层的共有内容以及各逻辑层分别对应的专有内容。
另一方面,本发明实施例提供了一种软件架构的实现平台,包括:
逻辑层设置单元,用于将客户端软件的逻辑结构划分为多个逻辑层,该逻辑层包括基础支持层和从下至上的通信层、业务层、应用层/用户界面UI层;以及,建立各逻辑层之间的消息交互方式,以利用消息交互方式运行客户端软件,其中,消息交互方式包括上层的逻辑层通过调用下层逻辑层中的接口访问下层的逻辑层,下层的逻辑层按照设定的事件机制向上层逻辑层发送消息;
应用层/UI层处理单元,用于根据基础支持层提供的内容,通过应用层/UI层提供的客户端软件UI接收来自用户的业务请求消息,利用消息交互方式将业务请求消息发送至业务层;以及,通过应用层/UI层捕获业务层的事件并执行相应的业务操作,利用消息交互方式将应用层/UI层操作结果发送至通信层;
业务层处理单元,用于根据基础支持层提供的内容,通过业务层对业务请求消息请求的业务数据和事件进行管理,并执行业务操作,利用消息交互方式将业务层操作结果发送至通信层;
通信层处理单元,用于根据基础支持层提供的内容,通过通信层中预定通信方式的通信模块将应用层/UI层操作结果和业务层操作结果发送至业务服务器;
其中,基础支持层中存储各逻辑层的共有内容以及各逻辑层分别对应的专有内容。
由上所述,本发明实施例通过对客户端软件的逻辑结构进行合理分层以及采用接口访问、事件机制建立各层之间交互的技术手段,搭建了一个良好的软件架构,各逻辑层之间相互分离,易于拆分进行独立开发,各层之间处理的逻辑性强,且代码的耦合度低,对一层的改造不会影响其他层的运行,从而达到了以一种更简单的方式开发出性能更加优越的软件的目的。
附图说明
图1示出了根据本发明一个实施例的软件架构的实现方法中的逻辑层次示意图;
图2示出了根据本发明一个实施例的一种逻辑层间的关系示意图;
图3示出了根据本发明又一个实施例的一种线程模型的示意图;
图4示出了根据本发明又一个实施例的一种基于回调模型的交互方法示意图;
图5示出了根据本发明又一个实施例的一种基于事件模型的交互方法示意图;
图6示出了根据本发明又一个实施例的通信层的具体结构示意图;
图7示出了根据本发明又一个实施例的利用插件管理模块安装插件的方法流程图;
图8示出了根据本发明又一个实施例的一种利用插件管理模块启动插件的方法流程图;
图9示出了根据本发明又一个实施例的又一种利用插件管理模块启动插件的方法流程图;
图10示出了根据本发明又一个实施例的一种软件架构的实现平台结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
本发明的主要目的在于搭建一个良好的软件架构使开发出的软件具有更优越的性能,如软件的性能更加可靠、强壮,且足够灵活、利于扩展复用。开发人员使用本发明实施例中的软件架构方案,能够很简单地开发出集成多个功能和应用的软件。
参见图1,示出了本发明一个实施例提供的一种软件架构的实现方法中的逻辑层次示意图。将客户端软件的逻辑结构划分为多个逻辑层,该逻辑层包括基础支持层和从下至上的通信层(如Comm层)、业务层(如Biz层)、应用(APP)层/UI(User Interface,用户界面)层。建立各逻辑层之间的消息交互方式,以通过各逻辑层之间的消息交互运行客户端软件,例如,一种消息交互方式的示例可以为:上层的逻辑层通过调用下层逻辑层中的接口访问下层的逻辑层,下层的逻辑层按照设定的事件机制向上层逻辑层发送消息。
可选的,对客户端软件中具有插件的场景,逻辑层中还包括插件接口层(如PluginSDK层)和插件层(如Plugins层)。在插件接口层中为插件提供接口,以使插件能够访问客户端软件;以及,将插件设置在插件层中。在业务层中还设置有插件管理模块,插件管理模块执行插件的管理操作,业务层利用插件管理模块对客户端软件的插件进行管理,该管理操作至少包括插件的安装、卸载、加载和启动等。
下面结合一次业务请求操作,对本实施例提供的客户端软件进行说明。
首先,客户端软件根据基础支持层提供的内容,通过应用层/UI层提供的客户端软件UI接收来自用户的业务请求消息,利用消息交互方式将业务请求消息发送至业务层;以及,通过应用层/UI层捕获业务层的事件并执行相应的业务操作,利用消息交互方式将应用层/UI层操作结果发送至通信层。
本实施例在应用层/UI层中对客户端软件UI的控制和管理,并根据捕获到的业务层的事件执行相应的业务操作。具体的,在应用层/UI层中执行的操作主要包括如下:
1:UI的控制和管理。例如,在应用层/UI层中提供统一的会话窗口管理、选项窗口管理,以及对UI控件进行再度封装,创建具有特定功能和行为的UI控件等。
2:和业务层的交互管理。例如捕获业务层抛出的事件,根据该事件进行一个业务操作等。
3:设置界面管理框架(CFrame)。CFrame为应用层/UI层界面管理类容器,利用该CFrame统一存储和获取界面管理类,应用层/UI层可使用CFrame获取到本层中各个界面的管理类,从而获得不同的界面模块,并能对界面模块进行操作,执行界面间的相互调用。例如,通过界面模块的调用,执行由一个窗口唤起完全不相关的另一个窗口的显示的功能。
其次,客户端软件根据基础支持层提供的内容,通过业务层对业务请求消息请求的业务数据和事件进行管理,并执行业务操作,利用消息交互方式将业务层操作结果发送至通信层。
本实施例在业务层中对客户端软件的业务数据和事件进行管理,并执行业务操作。在业务层中设置客户端软件的核心业务逻辑,对外提供业务对象和方法。具体的,在业务层执行的操作主要包括如下:
1:业务数据的管理。例如,配置数据的管理、权限数据的管理等。
2:事件的管理。例如,在业务层收到通知添加好友的数据包时,业务层处理此数据包并抛出添加好友的事件,由其他的业务层或应用层/UI层来处理该事件。
3:和通信层数据进行交互。例如,接收通信层发送的SIP数据包。
在业务层中还需要设置供应用层/UI层调用的接口,以支持应用层/UI层对业务层的访问。在业务层中采用容器这一技术手段处理相关操作,一个具体实例可以如下:构造业务层的容器,如构造容器类CSession,该容器中可以设置业务层中多个业务管理对象(如插件管理模块),具体的,容器类CSession可为单实例结构,其生命周期和进程的生命周期相等。容器类CSession在程序启动时候初始化,通过容器类CSession的初始化可以对每个业务对应的业务管理对象进行初始化;用户注销或者掉线的时候调用容器类CSession的清除(Clear)方法,可清理每个业务管理对象相关的资源,例如配置、内存等等。
再次,客户端软件根据基础支持层提供的内容,通过通信层中预定通信方式的通信模块将应用层/UI层操作结果和业务层操作结果发送至业务服务器。
本实施例在通信层中设置预定通信方式的通信模块。例如,对于SIP(SessionInitiation Protocol,会话发起协议)通信,在通信层中设置多个通信模块分别支持TCP(Transmission Control Protocol,传输控制协议)通信方式、HTTPS(Hypertext TransferProtocol over Secure Socket Layer,安全HTTP)通道(Tunnel)通信方式、HTTP通信方式等。在通信层中还可以对底层通信细节(如各种代理设置、凭证等等)进行封装,并进行对SIP协议的拼包、解包。为实现逻辑层之间的交互,在通信层中还针对SIP、HTTP、文件传输等不同的通信方式为上层分别提供简单易用的接口,供上层调用。
本实施例在基础支持层中存储各逻辑层的共有内容以及各逻辑层分别对应的专有内容,以利用基础支持层提供的内容支持各逻辑层的运行。在基础支持层中存储的内容包括公共辅助工具类(Utils)、资源(Resources)、UI控件(UiControls)和在线升级工具(Liveupdate)。其中,Resources包括程序资源包、独特设计的支持多国语言的语言包,该语言包按照语言类型归档,支持多语言包的动态插入、多国语言动态切换,并可根据用户的需求定制本国语言包,使语言设计更加本地化。参见图2,示出了本实施例提供的一种逻辑层间的关系示意图。应用层/UI层与业务层具有强相关,通信层和Utils具有强相关,应用层/UI层、业务层需要Utils的支持,业务层可以访问通信层,而Resources向各层提供图片等实体数据的支持。基础支持层可以向应用层/UI层、业务层、通信层和插件接口层提供统一的应用接口,降低代码重复性和复杂度。
本发明又一个实施例对软件架构的实现方法中的多线程模型进行说明,软件架构的实现方法中的其他内容可以参见本发明其他实施例。本实施例采用如下四类线程模型,其中除业务线程外,其他三类只存在一个全局线程。
(1)UI线程。UI线程为Windows桌面应用程序的界面主线程。除可能耗费较长时间的业务操作外,大部分业务操作将完全在UI主线程中执行,这样尽量避免引入线程同步问题,从而降低开发的复杂度,提高编程和运行效率。
(2)业务线程。业务线程为业务操作所建立的线程。当一个业务操作可能耗费较长时间,从而造成UI线程阻塞时,可以为该业务操作创建业务线程。
(3)通信线程。通信线程为通信层收发SIP数据包所使用的线程。SIP通信不具有大流量、高实时性要求,收发操作可以在同一个线程中完成。通信线程中还会进行SIP拼/解包等简单操作。
(4)定时器(Timer)线程。一个是Windows Timer,另外一个是线程Timer,根据具体情况选择使用,全局共享。
参见图3,示出了本实施例采用的线程模型的示意图。UI方法(UIMethod)和业务方法(BizMethod)可以运行在UI线程(UIThread)上,BizMethod还可以运行在业务线程(BizThread)上,发送(Send)操作和接收(Recv)操作运行在通信线程上。为需要发送和接收的消息分别建立发送队列和接收队列,并为超过预定时间仍未处理的消息建立超时队列,以便于对消息的管理。超时判断(Timeout)操作运行在定时器线程上。朝向上方的箭头表示按照事件机制的交互,朝向下方的箭头表示接口调用。
本发明又一实施例对软件架构的实现方法中的事件机制进行说明,软件架构的实现方法中的其他内容可以参见本发明其他实施例。本实施例提供的事件机制包括两种模型:回调(Callback)模型和事件(Event)模型。
回调模型的一种应用场景可以为:UI对象主动发起请求,等待服务器侧(或另一客户端,下同)返回应答,得知处理结果。例如,用户发送会话消息后,需要知道该消息是否发送成功。在该场景下有以下几个特点:
1:特定的UI对象主动发起请求,并等待处理结果;
2:只有动作发起对象需要关心该处理结果;
3:该处理结果在可预测的时间内(最长为该动作的超时时间)一定会返回;
4:从发起请求到处理结果的返回,需要传递一些上下文信息。
参见图4,示出了本实施例提供的一种基于回调模型的交互方法示意图,包括如下操作:
S400:在业务层对回调请求进行记录并根据该回调请求发送业务请求至通信层。上述回调请求是由应用层/UI层中的UI对象向业务层发起的。在业务层中通过业务方法记录该回调请求,例如,通过BizMethod(UiCallback,UiContex)处理回调请求。
S401:在通信层对业务请求进行处理。通信层中通过发送操作将业务请求发送出去。
通过上述步骤S400至S401在应用层/UI层、业务层和通信层之间应用回调机制实现了一个回调请求。
S402:在通信层接收对业务请求的处理结果数据包,对处理结果数据包进行解析并将其转换为响应消息,从通信层将该响应消息返回至业务层,进入步骤S403,由业务层处理响应消息。响应消息可以是在业务请求发送后实时接收到的,也可以是在一定时间范围内接收到的。
S403:在业务层中判断是否存在回调请求。
业务层判断是否存在与响应消息对应的回调请求,若是,确认存在回调请求,进入步骤S404,若否,结束操作。
S404:业务层将响应消息返回至发起回调请求的UI对象,执行回调操作。
事件模型的一种应用场景可以为:通信层收到服务器侧(或另一客户端)的消息(可能是请求也可能是应答)后,需要反馈到应用层/UI层上进行某种展示或进行其他相关动作。在该场景下有以下几个特点:
1:业务层内部数据发生改变,即发生了一个事件时(通常是收到服务器侧或另一客户端的消息时发生,但不限于此),通知到需要关心该变化的所有UI对象(被通知者);
2:关心该变化的UI对象可能不只一个;
3:该变化发生的时机对于被通知者不可预知;
4:被通知者需要“订阅”该事件后才可被通知。
参见图5,示出了本实施例提供的一种基于事件模型的交互方法示意图,包括如下操作:
S500:执行事件订阅。
由应用层/UI层中的一个或多个UI对象向业务层进行事件订阅,在业务层中可以通过事件订阅方法如SubscribeEvent(BizEvent,UIEventHandler)执行事件的订阅。
在事件订阅完成后,执行如下步骤S501至S504的操作。
S501:通信层接收到消息,将消息发送至业务层。通信层接收到的消息会导致业务层的数据变化,从而发生相应事件。
S502:业务层中判断发生的事件是否被订阅,若是,进入步骤S503,若否,结束操作。
S503:业务层将事件通知给应用层/UI层中订阅该事件的UI对象。
S504:被通知的UI对象根据发生的事件执行相应操作。
由上,本实施例通过上述操作,提供了一种事件注册管理机制,把不同的功能和应用调度结合,代码耦合度低、流程清晰且具有高性能触发、界面反应迅速的优点,在保持软件功能和应用完整性的同时,完成了多功能、应用的互通,便于开发人员对软件的维护和扩展。
本发明又一个实施例对软件架构的实现方法中的通信层进行说明,软件架构的实现方法中的其他内容可以参见本发明其他实施例。参见图6,图中示出了本实施例的通信层的具体结构示意图,在通信层中设置业务层管理模块、模块接口层和模块设置层。下面分别进行说明:
业务层管理模块:
业务层管理模块负责业务层与通信层的双向通信调用,例如,利用业务层管理模块支持业务层对通信层的接口访问,为业务层提供SIP通讯调用接口,在模块接口层中设置回调接口等。业务层管理模块可以根据业务层对通信层的接口访问,通过模块接口层中的通信模块接口调用模块设置层中的通信模块,以执行客户端的通信。
模块接口层:
在通信层的模块接口层中设置与通信模块对应的通信模块接口(如回调接口)以及通信模块接口的接口数据。接口数据可以包括连接配置信息、接收包的数据结构、发送包的数据结构、连接类型等。
参见下述表1,示出本实施例提供的连接配置信息。
表1
参见下述表2,示出本实施例提供的对表1中代理设置的描述信息。
表2
示例性的,本实施例提供的接收包的数据结构中包括如下信息:
接收包的类型(type)、收到的SIP请求包(SipRequest)、收到的SIP回应包(SipResponse)和配对的发送包(requestContext)。其中,接收包的类型可以包括如下:
发送超时(SEND_TIMEOUT)、收到非Ack请求(RECV_REQUEST)、
收到回应(RECV_RESPONSE)、收到成功回应(RECV_RESPONSE_200)、收到Ack请求(RECV_ACKREQUEST)。
本实施例提供的发送包的数据结构中包括如下信息:
业务层传递的上下文(_bizContext)和SIP数据包(_sipMessage)
本实施例提供的连接类型至少包括UNKNOWN、TCP_DIRECT、HTTPS_TUNNEL和HTTP四种类型,其中,UNKNOWN表示未知的连接类型,TCP_DIRECT表示TCP直连方式承载SIP信令,HTTPS_TUNNEL表示HTTPS方式承载SIP信令,HTTP表示HTTP方式承载SIP信令。
模块设置层:
在通信层的模块设置层中设置预定通信方式的通信模块,一种通信模块可以为客户端软件提供一种通信方式,并可以在通信层中执行通信方式在不同通信模块之间的切换。
本发明又一个实施例对软件架构的实现方法中的业务层的插件管理模块进行说明,软件架构的实现方法中的其他内容可以参见本发明其他实施例。插件是一种软件公开API接口供自己或者第三方开发者使用,以扩展程序功能的应用。本实施例可支持两种类型的插件,一是B/S(Browser/Server,浏览器/服务器)模式的插件,或称为外接插件;一种是客户端(Client)模式的插件,或称为本地插件。B/S模式的插件指插件的运行环境限定在应用程序指定的插件容器中,有的B/S模式的插件需要服务器支持(该服务器为插件的开发者提供),有的B/S模式的插件只需要一个带有Javascript客户端脚本的HTML文件即可。
在业务层中设置插件管理模块,该插件管理模块执行插件的管理操作,如插件的安装、卸载、加载和启动;通过插件管理模块对客户端软件的插件进行管理;
参见图7,示出了本实施例的利用插件管理模块安装插件的方法流程图,包括如下步骤:
S700:插件管理模块在数据服务器中搜索插件。
客户端软件的插件管理模块中包括插件容器,插件容器中会记录插件的插件ID,当需要请求某一插件时,将插件ID发送至数据服务器,以在数据服务器中根据该插件ID搜索插件,搜索插件时可以根据插件类型进行搜索,也可以模糊搜索,在此不对搜索方法进行具体限定。
S701:插件管理模块根据数据服务器返回的搜索结果,选取需要的插件。
搜索结果中包括搜索出的一个插件或者包括多个插件的插件集合,在搜索结果中选取与插件ID匹配的B/S模式的插件。
数据服务器还会将插件的描述信息返回至客户端软件侧。插件的描述信息可以使用XML(Extensible Markup Language,扩展性标识语言)格式,方便扩展。描述信息包括插件编号、插件名称、插件类型、插件标签、运行模式、插件权限、是否使用其他控件支持等,但不局限于此,运用此描述信息进行服务器侧和客户端软件之间的插件的交互。插件管理模块也可以根据描述信息执行对B/S模式的插件的管理操作。
S702:插件管理模块显示授权页面,告知用户插件的授权。
插件的权限要求,需要在提交插件时明确说明。在向数据服务器提交插件时,数据服务器需要提供一个Web页面,供插件提供方提交自己的插件列表,用户填写相关信息,获得插件的插件ID。插件信息记录至服务器的数据库中。插件提供方可设置插件的权限要求,例如,是否记录用户信息,是否可以访问软件的核心业务,是否需要安装ActiveX控件等,以便于管理与维护。
S703:插件管理模块安装插件,更新本地数据。
当客户端软件侧满足插件权限要求,将插件安装在客户端软件中,更新客户端侧的本地数据。
S704:插件管理模块发送引用通告到引用通告服务器。
安装完插件后,发送一个Trackback(即引用通告)到插件的引用通告服务器,引用通告服务器中记录安装插件的用户和插件的权限要求,以便于插件管理。
S705:插件管理模块更新数据到数据服务器,以便于数据服务器对客户端软件的包括插件在内的多个功能进行管理。
参见图8,示出了本实施例的一种利用插件管理模块启动插件的方法流程图,包括如下步骤:
S800:插件管理模块启动选择的插件。
插件管理模块可以根据用户通过菜单或工具条发送的选取指令,获知当前需要启动的插件。
S801:插件管理模块判断选取的插件是否与当前要执行的操作相符合,若是,进入步骤S802,若否,进入步骤S803。
S802:插件管理模块判断该插件是否多人运行,若是,进入步骤S805,若否,进入步骤S804。
S803:插件管理模块向用户提示启动操作结束。
S804:插件管理模块创建插件容器,插件容器可以装载多个插件。然后,进入步骤S806。
S805:插件管理模块向其他具有相同插件的客户端软件的对方用户发出邀请,进入步骤S807。
S806:插件管理模块运行插件,进入步骤S808。
S807:插件管理模块判断被邀请的对方用户是否接受邀请,若是,进入步骤S804,若否,进入步骤S803。
S808:插件管理模块更新引用通告服务器。
插件启动完成后,插件管理模块发送一个引用通告到插件的引用通告服务器,对引用通告服务器中记录的插件的数据进行更新。
上述步骤S800至S808主要对客户端软件作为插件启动的发起方时启动插件的场景进行说明,对接受插件启动邀请的一方,其利用插件管理模块启动插件的方法流程图,参见图9,包括如下步骤:
S900:插件管理模块接收到插件邀请。
被邀请方一侧的客户端软件的插件管理模块接收邀请方发送来的插件邀请。
S901:插件管理模块判断客户端软件中是否安装了被邀请的插件,若是,进入步骤S904,若否,进入步骤S902。
S902:插件管理模块判断客户端软件中是否需要安装该插件,若是,进入步骤S905,若否,进入步骤S903。
S903:插件管理模块向邀请方发送拒绝消息。
S904:插件管理模块在客户端软件中查找被邀请的插件,进入步骤S906。
S905:插件管理模块将插件安装在被邀请的客户端软件中。
S906:插件管理模块判断查找到的插件是否与客户端软件兼容,若是,进入步骤S908,若否,进入步骤S907。
S907:插件管理模块为不兼容的插件创建针对该插件的独立承载体,启动该插件,进入步骤S909。
示例性的,可以采用插件容器作为上述插件的承载体,但插件的承载体不局限于插件容器。
S908:插件管理模块在客户端软件中为兼容的插件寻找对应的承载体,启动该插件,进入步骤S909。
S909:插件管理模块向邀请方发送响应。
本实施例可以为客户端软件的插件设置一个插件集,在插件集中设置插件的描述信息或配置信息,以及插件行为定义。可以将不同类型的插件分别设置在不同的插件集中。然后将插件集装载在创建的插件容器中,来执行插件和客户端软件之间的交互。
插件集中的插件行为可以包括获取插件数量、添加插件、删除插件、插件排序、获取全部插件和查找对应插件等。插件管理模块可以统一管理插件集,在便于管理的基础上还可对插件集再进行扩展。插件管理模块执行的管理可以包括:加载插件、安装插件、卸载插件、发送插件邀请、接收插件邀请,获取插件列表、获取插件信息、保存插件列表和更新插件列表等等。
对于为客户端模式的插件,在客户端软件中为客户端模式的插件设置配置信息,以由插件管理模块根据该配置信息执行对客户端模式的插件的管理操作,如插件加载、插件卸载等。
本发明实施例的软件架构的实现方案支持外接插件,使开发出的软件可移植性强、重用力度大。插件可通过接口向外部提供自己的服务,复用力度大,移植方便。增加或减少插件不影响整个体系结构,例如,在软件开发的过程中修改应用程序,通过补丁包的形式增删插件,从而使软件的结构容易调整、易维护。本发明实施例的实现方案还支持本地插件,插件类型划分清晰,支持插件独立升级,便利开发,降低了维护成本。
本发明又一个实施例还提供了一种软件架构的实现平台100。参见图10,该平台100包括逻辑层设置单元110、应用层/UI层处理单元111、业务层处理单元112和通信层处理单元113。对于客户端软件包括插件的场景,平台100中还包括插件接口层处理单元114和插件层处理单元115。下面分别对这些单元进行说明。
逻辑层设置单元110,用于将客户端软件的逻辑结构划分为多个逻辑层,该逻辑层包括基础支持层和从下至上的通信层、业务层、应用层/用户界面UI层;以及,建立各逻辑层之间的消息交互方式,以利用消息交互方式运行客户端软件,其中,消息交互方式包括上层的逻辑层通过调用下层逻辑层中的接口访问下层的逻辑层,下层的逻辑层按照设定的事件机制向上层逻辑层发送消息。具体的,逻辑层设置单元110,用于由应用层/UI层中的UI对象向业务层发送回调请求;在业务层对该回调请求进行记录并根据该回调请求发送业务请求至通信层;当通信层获取到对业务请求的响应消息时,从通信层将该响应消息返回至业务层,在业务层中判断是否存在与该响应消息对应的回调请求,若是,将响应消息返回至发起该对应的回调请求的UI对象,若否,结束操作。以及,逻辑层设置单元110,用于由应用层/UI层中的一个或多个UI对象向业务层进行事件订阅;当业务层中发生一个事件时,在业务层中判断该事件是否被订阅,若是,则通知订阅该事件的UI对象,以使该UI对象根据发生的事件执行相应操作,若否,结束操作。
应用层/UI层处理单元111,用于根据基础支持层提供的内容,通过应用层/UI层提供的客户端软件UI接收来自用户的业务请求消息,利用消息交互方式将业务请求消息发送至业务层;以及,通过应用层/UI层捕获业务层的事件并执行相应的业务操作,利用消息交互方式将应用层/UI层操作结果发送至通信层。
业务层处理单元112,用于根据基础支持层提供的内容,通过业务层对业务请求消息请求的业务数据和事件进行管理,并执行业务操作,利用消息交互方式将业务层操作结果发送至通信层。进一步的,业务层处理单元112,用于在业务层中设置插件管理模块,插件管理模块执行插件的管理操作,管理操作至少包括插件的安装、卸载、加载和启动;利用插件管理模块对客户端软件的插件进行管理。其中,插件包括B/S模式的插件和/或客户端模式的插件。具体的,业务层处理单元112,用于利用插件管理模块中的插件ID从服务器侧下载与插件ID匹配的B/S模式的插件和该插件的描述信息,以由插件管理模块根据描述信息执行对B/S模式的插件的管理操作;为客户端模式的插件设置配置信息,以由插件管理模块根据该配置信息执行对客户端模式的插件的管理操作。
通信层处理单元113,用于根据基础支持层提供的内容,通过通信层中预定通信方式的通信模块将应用层/UI层操作结果和业务层操作结果发送至业务服务器。具体的,通信层处理单元113,用于在通信层中设置业务层管理模块、模块接口层和模块设置层;利用业务层管理模块支持业务层对通信层的接口访问,以及由该业务层管理模块根据接口访问,通过模块接口层中的通信模块接口调用模块设置层中的通信模块,以完成客户端的通信;在通信层的模块接口层中设置与通信模块对应的通信模块接口以及通信模块接口的接口数据;在通信层的模块设置层中设置预定通信方式的通信模块。
其中,基础支持层中存储各逻辑层的共有内容以及各逻辑层分别对应的专有内容。基础支持层存储如下内容:公共辅助工具类、资源、UI控件和在线升级工具,其中,资源包括程序资源包、支持多国语言的语言包。
进一步的,逻辑层设置单元110划分的逻辑层还包括插件接口层和插件层,则平台100还包括插件接口层处理单元和插件层处理单元。插件接口层处理单元114,用于在插件接口层中为插件提供接口,以使插件能够访问客户端软件;插件层处理单元115,用于将插件设置在插件层中。
本发明产品实施例中各单元的具体工作方式可以参见本发明方法实施例中的相关内容。
由上所述,本发明实施例通过对客户端软件的逻辑结构进行合理分层以及采用接口访问、事件机制建立各层之间交互的技术手段,搭建了一个良好的软件架构,各逻辑层之间相互分离,易于拆分进行独立开发,各层之间处理的逻辑性强,且代码的耦合度较低,对一层的改造不会影响其他层的运行,从而达到了以一种更简单的方式开发出性能更加优越的软件的目的。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (16)
1.一种软件架构的实现方法,包括:
将客户端软件的逻辑结构划分为多个逻辑层,所述逻辑层包括基础支持层和从下至上的通信层、业务层、应用层/用户界面UI层;以及,建立所述各逻辑层之间的消息交互方式,以利用所述消息交互方式运行客户端软件,其中,所述消息交互方式包括上层的逻辑层通过调用下层逻辑层中的接口访问下层的逻辑层,下层的逻辑层按照设定的事件机制向上层逻辑层发送消息;
根据所述基础支持层提供的内容,通过所述应用层/UI层提供的客户端软件UI接收来自用户的业务请求消息,利用所述消息交互方式将所述业务请求消息发送至所述业务层;以及,通过所述应用层/UI层捕获所述业务层的事件并执行相应的业务操作,利用所述消息交互方式将应用层/UI层操作结果发送至所述通信层;
根据所述基础支持层提供的内容,通过所述业务层对所述业务请求消息请求的业务数据和事件进行管理,并执行业务操作,利用所述消息交互方式将业务层操作结果发送至所述通信层;
根据所述基础支持层提供的内容,通过所述通信层中预定通信方式的通信模块将所述应用层/UI层操作结果和所述业务层操作结果发送至业务服务器;
其中,所述基础支持层中存储所述各逻辑层的共有内容以及各逻辑层分别对应的专有内容,所述基础支持层向应用层/UI层、业务层、通信层提供统一的应用接口。
2.根据权利要求1所述的方法,其中,所述方法还包括:
在所述业务层中设置插件管理模块,所述插件管理模块执行插件的管理操作,所述管理操作至少包括插件的安装、卸载、加载和启动;
利用所述插件管理模块对客户端软件的插件进行管理;
其中,所述插件包括浏览器/服务器B/S模式的插件和/或客户端模式的插件。
3.根据权利要求2所述的方法,其中,所述逻辑层还包括插件接口层和插件层,所述方法还包括:
在插件接口层中为插件提供接口,以使插件能够访问客户端软件;
以及,将插件设置在插件层中。
4.根据权利要求1所述的方法,其中,所述下层的逻辑层按照设定的事件机制向上层逻辑层发送消息包括:
由应用层/UI层中的UI对象向业务层发送回调请求;
在业务层对该回调请求进行记录并根据该回调请求发送业务请求至通信层;
当通信层获取到对所述业务请求的响应消息时,从通信层将该响应消息返回至业务层,在业务层中判断是否存在与该响应消息对应的回调请求,若是,将所述响应消息返回至发起该对应的回调请求的UI对象,若否,结束操作。
5.根据权利要求1所述的方法,其中,所述下层的逻辑层按照设定的事件机制向上层逻辑层发送消息包括:
由应用层/UI层中的一个或多个UI对象向业务层进行事件订阅;
当业务层中发生一个事件时,在业务层中判断该事件是否被订阅,若是,则通知订阅该事件的UI对象,以使该UI对象根据发生的事件执行相应操作,若否,结束操作。
6.根据权利要求1所述的方法,其中,所述方法还包括:
在所述通信层中设置业务层管理模块、模块接口层和模块设置层;
利用所述业务层管理模块支持业务层对通信层的接口访问,以及由该业务层管理模块根据所述接口访问,通过所述模块接口层中的通信模块接口调用所述模块设置层中的通信模块,以完成客户端的通信;
在通信层的模块接口层中设置与通信模块对应的通信模块接口以及通信模块接口的接口数据;
在通信层的模块设置层中设置预定通信方式的通信模块。
7.根据权利要求2所述的方法,其中,所述利用所述插件管理模块对客户端软件的插件进行管理包括:
利用插件管理模块中的插件ID从服务器侧下载与所述插件ID匹配的B/S模式的插件和该插件的描述信息,以由插件管理模块根据所述描述信息执行对所述B/S模式的插件的管理操作;
为客户端模式的插件设置配置信息,以由插件管理模块根据该配置信息执行对所述客户端模式的插件的管理操作。
8.根据权利要求1所述的方法,其中,
在所述基础支持层中存储的内容包括公共辅助工具类、资源、UI控件和在线升级工具,所述资源包括程序资源包、支持多国语言的语言包。
9.一种软件架构的实现平台,包括:
逻辑层设置单元,用于将客户端软件的逻辑结构划分为多个逻辑层,所述逻辑层包括基础支持层和从下至上的通信层、业务层、应用层/用户界面UI层;以及,建立所述各逻辑层之间的消息交互方式,以利用所述消息交互方式运行客户端软件,其中,所述消息交互方式包括上层的逻辑层通过调用下层逻辑层中的接口访问下层的逻辑层,下层的逻辑层按照设定的事件机制向上层逻辑层发送消息;
应用层/UI层处理单元,用于根据所述基础支持层提供的内容,通过所述应用层/UI层提供的客户端软件UI接收来自用户的业务请求消息,利用所述消息交互方式将所述业务请求消息发送至所述业务层;以及,通过所述应用层/UI层捕获所述业务层的事件并执行相应的业务操作,利用所述消息交互方式将应用层/UI层操作结果发送至所述通信层;
业务层处理单元,用于根据所述基础支持层提供的内容,通过所述业务层对所述业务请求消息请求的业务数据和事件进行管理,并执行业务操作,利用所述消息交互方式将业务层操作结果发送至所述通信层;
通信层处理单元,用于根据所述基础支持层提供的内容,通过所述通信层中预定通信方式的通信模块将所述应用层/UI层操作结果和所述业务层操作结果发送至业务服务器;
其中,所述基础支持层中存储所述各逻辑层的共有内容以及各逻辑层分别对应的专有内容,所述基础支持层向应用层/UI层、业务层、通信层提供统一的应用接口。
10.根据权利要求9所述的平台,其中,
所述业务层处理单元,用于在所述业务层中设置插件管理模块,所述插件管理模块执行插件的管理操作,所述管理操作至少包括插件的安装、卸载、加载和启动;利用所述插件管理模块对客户端软件的插件进行管理;
其中,所述插件包括浏览器/服务器B/S模式的插件和/或客户端模式的插件。
11.根据权利要求10所述的平台,其中,所述逻辑层设置单元划分的逻辑层还包括插件接口层和插件层,所述平台还包括插件接口层处理单元和插件层处理单元,
所述插件接口层处理单元,用于在插件接口层中为插件提供接口,以使插件能够访问客户端软件;
所述插件层处理单元,用于将插件设置在插件层中。
12.根据权利要求9所述的平台,其中,所述逻辑层设置单元,用于由应用层/UI层中的UI对象向业务层发送回调请求;在业务层对该回调请求进行记录并根据该回调请求发送业务请求至通信层;当通信层获取到对所述业务请求的响应消息时,从通信层将该响应消息返回至业务层,在业务层中判断是否存在与该响应消息对应的回调请求,若是,将所述响应消息返回至发起该对应的回调请求的UI对象,若否,结束操作。
13.根据权利要求9所述的平台,其中,所述逻辑层设置单元,用于由应用层/UI层中的一个或多个UI对象向业务层进行事件订阅;当业务层中发生一个事件时,在业务层中判断该事件是否被订阅,若是,则通知订阅该事件的UI对象,以使该UI对象根据发生的事件执行相应操作,若否,结束操作。
14.根据权利要求9所述的平台,其中,所述通信层处理单元,用于在所述通信层中设置业务层管理模块、模块接口层和模块设置层;利用所述业务层管理模块支持业务层对通信层的接口访问,以及由该业务层管理模块根据所述接口访问,通过所述模块接口层中的通信模块接口调用所述模块设置层中的通信模块,以完成客户端的通信;在通信层的模块接口层中设置与通信模块对应的通信模块接口以及通信模块接口的接口数据;在通信层的模块设置层中设置预定通信方式的通信模块。
15.根据权利要求10所述的平台,其中,所述业务层处理单元,用于利用插件管理模块中的插件ID从服务器侧下载与所述插件ID匹配的B/S模式的插件和该插件的描述信息,以由插件管理模块根据所述描述信息执行对所述B/S模式的插件的管理操作;为客户端模式的插件设置配置信息,以由插件管理模块根据该配置信息执行对所述客户端模式的插件的管理操作。
16.根据权利要求9所述的平台,其中,所述基础支持层存储如下内容:公共辅助工具类、资源、UI控件和在线升级工具,其中,所述资源包括程序资源包、支持多国语言的语言包。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2013/091179 WO2015100646A1 (zh) | 2013-12-31 | 2013-12-31 | 软件架构的实现方法和实现平台 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105745620A CN105745620A (zh) | 2016-07-06 |
CN105745620B true CN105745620B (zh) | 2019-04-30 |
Family
ID=53492989
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380081137.8A Active CN105745620B (zh) | 2013-12-31 | 2013-12-31 | 软件架构的实现方法和实现平台 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN105745620B (zh) |
WO (1) | WO2015100646A1 (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107145353A (zh) * | 2017-05-05 | 2017-09-08 | 武汉斗鱼网络科技有限公司 | 软件框架及软件框架设计方法 |
CN109412840A (zh) * | 2018-10-08 | 2019-03-01 | 郑州云海信息技术有限公司 | 一种数据获取方法及sdn控制器 |
CN109857502A (zh) * | 2019-01-24 | 2019-06-07 | 苏州思必驰信息科技有限公司 | 实现业务逻辑与显示分离的方法及业务逻辑与显示分离的系统架构 |
CN110471757B (zh) * | 2019-03-29 | 2023-04-14 | 重庆长安汽车股份有限公司 | 一种车载智能天线系统的软件架构及汽车 |
CN109976729B (zh) * | 2019-05-05 | 2021-10-22 | 东北大学 | 一种存算显全局可配置的数据分析软件架构设计方法 |
CN111176724B (zh) * | 2019-10-18 | 2022-06-28 | 华为云计算技术有限公司 | 一种软件架构分析的计算机实现方法及其装置 |
CN110825395B (zh) * | 2019-10-23 | 2023-04-07 | 中冶赛迪信息技术(重庆)有限公司 | 多插件分层部署系统、设备及介质 |
CN114327466B (zh) * | 2022-01-30 | 2024-05-17 | 重庆长安汽车股份有限公司 | 一种车载app模块间消息解耦的实现方法及系统 |
CN114528045B (zh) * | 2022-02-17 | 2024-05-24 | 武汉联影智融医疗科技有限公司 | 插件操作方法、装置、计算机设备和存储介质 |
CN114237699B (zh) * | 2022-02-24 | 2022-05-03 | 四川信用通数字科技股份有限公司 | 一种配置脚本的导出方法、装置及存储介质 |
CN114816347B (zh) * | 2022-04-15 | 2023-03-24 | 巨翊科技(上海)有限公司 | 一种软件架构的搭建方法、装置及系统 |
CN115794040B (zh) * | 2022-11-14 | 2024-02-06 | 深圳十沣科技有限公司 | 构造cae软件架构的方法、装置、设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101360263A (zh) * | 2007-07-31 | 2009-02-04 | 华源润通(北京)科技有限公司 | 一种移动查询系统的客户端以及前后台数据处理方法 |
CN101826018A (zh) * | 2010-05-20 | 2010-09-08 | 瑞斯康达科技发展股份有限公司 | 一种网元管理系统界面交互开发系统及方法 |
WO2012142854A1 (zh) * | 2011-04-18 | 2012-10-26 | 北京新媒传信科技有限公司 | 一种应用服务平台系统及其实现方法 |
CN103036917A (zh) * | 2011-09-29 | 2013-04-10 | 北京神州泰岳软件股份有限公司 | 客户端平台的实现方法及客户端平台 |
CN103034477A (zh) * | 2011-09-29 | 2013-04-10 | 北京新媒传信科技有限公司 | 一种组件式开放架构模型实现方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030078960A1 (en) * | 2001-04-30 | 2003-04-24 | Murren Brian T. | Architecture and process for creating software applications for multiple domains |
CN101056262A (zh) * | 2007-03-26 | 2007-10-17 | 宝丽雅智能系统(深圳)有限公司 | 应用系统业务数据和网络数据的连接与交换方法 |
CN101996071A (zh) * | 2009-08-20 | 2011-03-30 | 上海杉达学院 | 一种信息控制系统的软件架构及构建方法 |
-
2013
- 2013-12-31 WO PCT/CN2013/091179 patent/WO2015100646A1/zh active Application Filing
- 2013-12-31 CN CN201380081137.8A patent/CN105745620B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101360263A (zh) * | 2007-07-31 | 2009-02-04 | 华源润通(北京)科技有限公司 | 一种移动查询系统的客户端以及前后台数据处理方法 |
CN101826018A (zh) * | 2010-05-20 | 2010-09-08 | 瑞斯康达科技发展股份有限公司 | 一种网元管理系统界面交互开发系统及方法 |
WO2012142854A1 (zh) * | 2011-04-18 | 2012-10-26 | 北京新媒传信科技有限公司 | 一种应用服务平台系统及其实现方法 |
CN103036917A (zh) * | 2011-09-29 | 2013-04-10 | 北京神州泰岳软件股份有限公司 | 客户端平台的实现方法及客户端平台 |
CN103034477A (zh) * | 2011-09-29 | 2013-04-10 | 北京新媒传信科技有限公司 | 一种组件式开放架构模型实现方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105745620A (zh) | 2016-07-06 |
WO2015100646A1 (zh) | 2015-07-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105745620B (zh) | 软件架构的实现方法和实现平台 | |
CA2598426C (en) | Facilitating mobile device awareness of the availability of new or updated server-side applications | |
US7028306B2 (en) | Systems and methods for implementing modular DOM (Document Object Model)-based multi-modal browsers | |
CN101176079B (zh) | 在服务器和客户机之间分配计算的方法以及分布式计算机系统 | |
EP1869827B1 (en) | Determining operational status of a mobile device capable of executing server-side applications | |
US7920852B2 (en) | Compression of data transmitted between server and mobile device | |
CN106797400A (zh) | 用于使得能够经由服务层访问第三方服务的系统和方法 | |
US20140297809A1 (en) | Apparatus and method for processing multiple open apis | |
WO2002079896A2 (en) | Multi-modal interface | |
CN101645084A (zh) | 一种嵌入式浏览器对动态数据的处理方法 | |
CN101799847A (zh) | 一种网页游戏角色的换装方法及系统 | |
CN101707627B (zh) | 一种呈现页面信息的方法及其装置 | |
CN101089852B (zh) | 一种支持多语种操作系统的方法 | |
CN101861581A (zh) | 网络操作系统 | |
CN103870280B (zh) | 基于flex与jsp的网页无缝结合处理方法 | |
CN108984375B (zh) | 一种内容抓取方法、装置、系统以及存储介质 | |
CN114090304B (zh) | 一种基于消息中间件的消息回放方法和装置 | |
CN106293714A (zh) | 一种基于数据层的改进ajax性能的方法 | |
CN113434234B (zh) | 页面跳转方法、装置、计算机可读存储介质及处理器 | |
CN106998350B (zh) | 基于跨用户消息的功能项使用框架的方法及系统 | |
CN107391630A (zh) | 处理并行网络请求的方法、装置及终端设备 | |
CA3232326A1 (en) | Construction method, run method, and apparatus for application | |
CN116208654A (zh) | 一种信息调用方法、装置、设备及存储介质、程序产品 | |
EP2017734A2 (en) | Inter-process communication at a mobile device | |
KR100625656B1 (ko) | 자원공유 시스템 및 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP02 | Change in the address of a patent holder |
Address after: Room 810, 8 / F, 34 Haidian Street, Haidian District, Beijing 100080 Patentee after: BEIJING D-MEDIA COMMUNICATION TECHNOLOGY Co.,Ltd. Address before: 100089 Beijing city Haidian District wanquanzhuang Road No. 28 Wanliu new building 6 storey block A room 602 Patentee before: BEIJING D-MEDIA COMMUNICATION TECHNOLOGY Co.,Ltd. |
|
CP02 | Change in the address of a patent holder |