首页 理论教育 纹织电子白板系统的设计与实现

纹织电子白板系统的设计与实现

时间:2022-02-12 理论教育 版权反馈
【摘要】:本节利用C/S设计模式与功能强大的网络编程语言Java实现了应用于纹织CAD的电子白板系统。CAD系统层,即单机版的纹织CAD系统和与底层通信的接口。通信数据结构的设计是否合理将直接影响整个电子白板系统的性能。由于采用集中式结构,服务器成为整个电子白板系统中唯一的控制中心。若客户请求向图元列表增加对象,由于该操作对于多图层的纹织CAD系统来说,不会引发对象重叠现象,故服务器直接修改图元列表并组播消息给当前工作组所有成员。

3.6.1 纹织CAD电子白板系统的设计

电子白板是计算机支持的协同工作(CSCW)系统中一个重要的同步交流工具。本节利用C/S设计模式与功能强大的网络编程语言Java实现了应用于纹织CAD的电子白板系统。

3.6.1.1 系统的端点间结构

系统的端点间结构,即各单独计算机如何组成协同操作的工作组,可采用两种方案。

第一种方案,即采用重复式结构,每台计算机之间在逻辑上平等,每个端点的操作都自主地由本端点发送到其他协同操作的端点上。这种方案中每个端点都必须知道所有正共同操作的端点以及与它们交换数据的途径,每个端点都需要协同控制层来负责将本端点的操作发送到其他端点和接收来自其他端点的信息,所有端点共同协调整个系统,保证协调操作高质量地完成协作任务。为了保证每个端点上花样的一致性,必须采取一定的策略,较常使用的方法有:

(1)在提交每个操作前需申请修改花样的权利,获得权利后方可提交操作,操作在每个端点反映出来,交互完毕释放权利。

(2)在协同操作的端点之间传送一种令牌,只有拥有令牌的端点才有提交操作的权利。令牌不停地在各端点之间轮回,某个拥有令牌的端点正在向其他端点发布操作时,令牌暂留在此端点,发布完毕则继续把令牌移交给其他的端点。

第二种方案,即采用集中式结构,在协同操作的整体中,某一个端点充当服务器角色,其他端点把操作都提交到此服务器,然后由服务器统一发送到各个端点上,这就可以从根本上解决各个端点同时对同一区域操作时可能造成的不一致问题。这种方案的显著优点是每个客户的端点之间是完全透明的,它们相互之间的通信完全通过服务器来实现。

纹织CAD系统对操作的一致性要求较高,第二种方案,即C/S结构,是最佳的选择。

3.6.1.2 客户端和服务器(C/S)结构设计

客户端和服务器软件在TCP/IP协议的基础上设计三层结构,这三层结构即构成系统中自定义的应用层协议。

CAD系统层,即单机版的纹织CAD系统和与底层通信的接口。主要接受用户的请求,如加入/退出协同的请求、普通CAD操作请求等;进行本地操作,如更新界面等;将请求通过底层发送到与之对等的服务器端的协调控制层;同时,也通过底层接收来自服务器端协调控制层的操作指令,并显示给本机操作者。

消息表示层:接受来自CAD系统层或协调控制层的数据,并将其封装成序列化的对象(消息),以编码成字节流的形式提交给安全加密层进行处理;同时接受来自安全加密层的字节流,通过流机制恢复原来的消息对象,交给CAD系统层或协调控制层处理。

安全加密层:接受来自消息表示层的字节流并进行加密处理,同时也对来自消息传输层的字节流进行解密。

协调控制层:接收来自各协作成员的操作请求,进行全局协调工作;也负责处理成员的加入/退出请求。

客户端和服务器的结构设计如图3-3所示。

图3-3 客户端和服务器的结构设计图

3.6.1.3 通信数据的结构设计

这里的通信数据主要指各客户端和服务器之间传输的操作请求和操作指令。对于主要是图形交互软件的纹织CAD系统来说,在协同操作过程中,实时地反映出当前花样的编辑状态是十分必要的。而实时性的好坏,在一定的网络状况下是由通信数据量的大小决定的。通信数据结构的设计是否合理将直接影响整个电子白板系统的性能。

在纹织CAD系统中,每种操作对象的数据都有其自己的特点,比如椭圆的主要参数是椭圆的外切矩形的起点和终点位置、颜色信息、是否空心等,直线的主要参数是直线的起点和终点位置、颜色信息、线的宽度信息等。所以只要归纳出每种操作对象的主要参数,再在每种操作对象之间比较它们的异同点,终究可以实现操作对象的标准化。标准化的对象再结合其操作类型即构成通信数据,其结构图如图3-4所示。

图3-4 通信数据结构图

其中:Operate_type表明操作类型,比如添加对象、删除对象、移动对象和编辑对象;Object_type表明对象类型,比如点、圆、辅组织等;Object_para表示对象的参数,每种不同类型的操作的数据格式不一定一致,CAD系统层根据操作类型可以解释出数据信息;Operator指明是从哪个协同伙伴传来的信息,一般用IP地址或计算机名来填充此区域;Additional_data表示某些操作的特殊信息。

3.6.2 纹织CAD电子白板系统的实现

3.6.2.1 服务器/客户端程序和时序流程

1.服务器程序模块流程

由于采用集中式结构,服务器成为整个电子白板系统中唯一的控制中心。它协调控制工作组内成员的所有操作,并保证协作过程中花样的一致性。为达到这个目的,服务器和客户端都维护一个图元列表,代表系统当前的所有对象。客户端图元列表是服务器上图元列表的备份,客户端只根据服务器发来的消息修改图元列表。服务器成功启动和初始化后,就开始监听客户端的请求。当有客户请求加入当前工作组,服务器对其进行必要的身份验证,然后向工作组成员组播新加入成员的信息,向该客户则发送初始同步信息,即已有花样的数据和工作组成员信息,使客户得到一个初始的图元列表。服务器为每个成功登录的客户开启一个独立的线程,处理该客户接下来的所有请求。若客户请求向图元列表增加对象,由于该操作对于多图层的纹织CAD系统来说,不会引发对象重叠现象,故服务器直接修改图元列表并组播消息给当前工作组所有成员。反之,若客户请求编辑(或移动、删除)图元列表中已有的对象,为保持同步和一致性,服务器先要检查该对象是否已被其他客户锁定,即使未被锁定,也要检查客户是否有操作权限。

只有满足上述两个条件,服务器才锁定对象、修改图元列表、组播消息和解锁对象,否则直接丢弃该请求消息。

服务器程序的主要流程图如图3-5所示。其中接收消息或发送消息时必须先进行解密或加密处理。

图3-5 服务器程序模块流程图

2.客户端程序模块流程

客户端程序是单机版纹织CAD程序与网络接口程序的组合,以下主要讨论其网络接口部分。客户机成功启动和初始化后,客户可以选择新建一个工作组或加入已有的工作组。作为响应,客户从服务器得到一个空的图元列表或已包含其他成员所创建对象的图元列表。随后,客户即可进行普通的CAD操作,而每一步操作都会触发客户端程序向服务器发送消息,经过服务器的协调控制和处理,操作结果最终返回给工作组所有成员进行显示。客户端程序包含一个独立的线程用于监听服务器发来的消息,这些消息是服务器用来修改客户端本地图元列表的指令。客户端程序的主要流程图如图3-6所示。其中接收消息或发送消息时必须先进行解密或加密处理。

图3-6 客户端程序模块流程图

3.客户端/服务器之间的时序

综上所述,客户端与服务器间的时序流程图如图3-7所示。

图3-7 客户端/服务器时序流程图

3.6.2.2 加密与解密的实现

系统中的加密解密是利用Java的一个标准扩展包JCE(Java Cryptography Extension)中的过滤器流(Cipher Input Stream和Cipher Output Stream)来实现的。Cipher Input Stream和Cipher Output Stream类都是由一个Cipher引擎对象驱动的,该对象将用于加密解密的算法封装起来。若改变Cipher引擎对象,则改变了流用来加密和解密的算法。服务器加密解密的代码如下:

3.6.2.3 系统消息对象的实现

无论是客户端还是服务器,接收消息以后的处理过程都是对图元列表的相应操作,图元列表中的元素保存着对象类型和对象参数。正是通过图元列表的一致性来保证用户桌面的一致性,而图元列表的一致性就是靠客户端和服务器之间不断的消息传递来实现的。

在完全面向对象的语言Java中,一切都是对象,消息自然也是作为对象来实现的。由于不但要通过网络来传送消息,还要进行特殊的处理(如加密解密等),所以所有的消息类(包括其内部子对象所对应的类)都应实现序列化接口Serializable,以保证能通过对象流ObjectStream来进行输入输出。同时,要利用流的嵌套机制,将对象流转化为字节流,以进行加密处理。系统的消息类定义如下:

基于协同操作的纹织CAD电子白板系统的开发和应用,对于纺织界来说具有重大的意义。它使得多个操作人员可以同时编辑同一花样,而且方便地实现了数据共享,大大缩短了复杂花样的设计周期。但作为一种全新的尝试,该系统仍有许多值得改进的地方,尤其当协同点增加至一定数量时,实时性变差,需采用更先进的算法。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈