为了建立一个通用的,能够适用多种CSCW应用的支撑环境,根据上一节提出的CSCW系统的体系结构,清华大学计算机系王国意博士等人设计实现一种CSCW应用程序支撑环境--TH-SECSCW。
  目前,PC机的市场占有率非常高,这些PC机大部分都是以太网相连的,并使用MS-Windows操作系统。因此构造在以太网和MS-Windows 环境下的CSCW系统具有一定的实际意义。根据上一节所提出的CSCW系统的体系结构,在实际构造一个可对群体的协作进行支持的CSCW系统时,首先必须完成CSCW支撑平台SPCSCW及有关低层分布式系统的功能。只有在这个基础之上,才能进一步开发具体的CSCW应用程序,组成完整的CSCW系统。为了在以太网和MS-Windows下构造综合开放的CSCW系统,可以在此环境中实现支撑平台SPCSCW及基本的分布功能,建立了一个可对各种CSCW应用程序及其开发进行支持的CSCW应用程序支撑环境TH-SECSCW(TsingHua-Supporting Environment for CSCW)。
  在建立此支撑环境时遇到了下面一些问题。首先是可以利用的已有分布式系统功能较少。除了一些基于服务器的文件共享之外,只有基本的数据包传输服务。这样就必须实现足够的分布式系统功能,才能使基于这些功能的支撑平台SPCSCW的实现成为可能。当然,将支撑环境的硬软件基础定为以局域网相连的PC机和MS-Windows操作系统使得支撑环境中不存在异构性,从而可简化系统中互操作的处理。
  其次是以太网上的媒体访问协议不适合多媒体信息的传送。在支撑环境中的CSCW应用程序可能需要进行各种不同媒体信息的通信,这样支撑环境中的通信必须是面向多媒体的。为了较好地满足支撑环境中的通信需求,本系统用逻辑会话来管理各应用程序间通信的语义关系,用逻辑通道来管理单媒体传输的服务质量,而对整个以太网上各节点发送的数据包用基于动态优先级的令牌传送策略进行控制。
  最后是建立各个CSCW应用程序之间的联系问题。支撑平台一方面向应用程序提供面向CSCW的公共功能,另一方面还要维护各应用程序之间的各种关系。要维护它们间的关系,就必须使它们彼此建立联系,也就是它们之间能够交换信息。在MS-Windows下应用程序间的信息交换有三种基本方式:剪贴板(Clipboard),动态数据交换DDE(Dynamic Data Exchange)以及动态链接DLL(Dynamic Linking Library),其他方式的数据交换(如OLE)都是以这三种方式为基础的。其中剪贴板方式无法进行主动的通告,而动态数据交换方式的开销大、性能低。经分析,本系统采用动态链接库方式,利用动态链接库中的共享内存与消息传递来维护应用程序之间的各种关系。支撑平台的主要功能就是由一组动态连接库实现的。

  一、TH-SECSCW的软硬件支撑平台
  CSCW应用程序支撑环境TH-SECSCW的软硬件基础如图8.41所示。
  环境中的物理网络是10Mbps的以太网,多台PC机通过它彼此相连。整个环境的网络操作系统为NOVELL的NetWare3.11,网上有一台PC机作为专用的NetWare文件服务器,运行其服务器软件,用来存储环境中的所有共享信息。环境中的其他PC机具有完全相同的配置,它们都有一套多媒体设备,包括音箱、话筒、摄像头等,其中音频适配卡是CREATIVE的SoundBlaster卡,主要用来进行实时的语音通信,视频适配卡是可进行H.261和MPEG实时视频压缩/解压缩的DVC-Ⅲ,它主要用来进行协作过程中活动视频的共享,这些PC机以及各种多媒体外设组成了系统的硬件环境,在此之上是MS-Windows操作系统,它管理所有这些硬件资源,在MS-Windows之上是NetWare的工作站软件NetWare Shell,CSCW支撑平台SPCSCW的构建就是以这些硬件为基础的。这些PC机是组成CSCW系统的节点,协同工作的群体成员就是通过这些节点彼此交互,共同完成协作任务。
   8.41 支撑环境的软硬件基础
  

  二、TH-SECSCW实现方案
  为了能够对多种CSCW应用程序提供服务,并使各应用程序彼此沟通,支撑环境中的大部分功能都是通过MS-Windows的动态链接库的形式实现的。其中具体实现形式如图8.42所示。其中方框部分为CSCW应用程序支撑环境,它由四个DLL和一个EXE程序构成。环境提供一组应用程序编程接口(APIs),利用这些编程接口,可方便地构造CSCW应用程序。在环境支持下这些应用程序之间可建立各种关系。
   8.42 支撑环境的实现形式
  
  1.协作管理
  支撑平台SPCSCW中的协作管理部分的功能是通过Manager.EXE实现。这是环境中唯一的一个可执行程序,它通过一个界面向用户提供一些管理协作的功能,其中包括公共协作关系的动态管理、环境中各种CSCW应用程序的访问控制及状态管理以及系统状态与协作状态的显示等。
  2.协作代理
  支持平台协作代理的功能是在Proxy.DLL中实现的。此DLL是支撑环境的核心,它不仅实现了协作代理的功能,而且还包括支撑平台中资源访问协调功能。它通过访问环境中的其他DLL的服务,提供一组应用程序编程接口(APIs),这些编程接口就是支撑环境向CSCW应用程序提供的全部功能和服务。通过它们,应用程序才能访问支撑环境的功能,并在彼此间建立联系。
  3.多媒体通信
  支撑环境中的多媒体通信功能主要在MMCom.DLL中实现。此DLL用逻辑会话机制来管理各应用程序部件之间的通信的语义关系,如实时音频与活动视频的同步等,此外它还用逻辑通道机制控制单媒体通信的服务质量(QoS)。它向Proxy.DLL提供了管理各CSCW应用程序间通信的服务,当然其功能的实现还需要访问NetIPX.DLL。
  4.网络传输管理
  为了在以太网上有效地传送数据,我们针对以太网的特点设计了一个数据传送管理模块,此模块的实现是NetIPX.DLL。数据传输管理功能在CSCW系统的体系结构中属于基本的分布式系统功能,不在支撑平台当中,然而根据实际情况,必须实现这一功能。NetIPX.DLL管理环境中数据向网上的传送,包括数据的拆包、组包,可靠性控制、数据包实际传送时间的控制等。以太网的媒体访问控制策略是带冲突检测的载波监听多路访问(CSMA/CD),这种策略不适合多媒体数据的传输,为了解决这一问题,在实际中,所有节点上NetIPX.DLL共同维护一个令牌,通过此令牌在各节点中的传递、控制节点中数据包的发送、避免冲突的发生。关于这一点,在后面还将详细的阐述。
  5.数据管理
  支撑平台SPCSCW中的系统信息服务功能以及整个数据库接口部分的功能在DataMan.DLL中实现。此DLL以数据库的方式管理系统中的各种信息,向环境中的Proxy.DLL提供数据管理服务。
  在实际运行中,CSCW应用程序支撑环境中各程序间的交互是通过函数调用与消息传递的方式进行的。如图8.43所示。CSCW应用程序可通过函数调用的方式访问支撑环境通过NetIPX.DLL提供的服务,而支撑环境通过消息传递的方式向各应用程序部件通告系统的各种状态。在支撑环境中,Proxy.DLL通过函数调用的方式访问MMCom.DLL和DataMan.DLL提供的服务,MMCom.DLL通过函数调用的方式访问NetIPX.DLL提供的服务。而Proxy.DLL以消息传递的方式向Manager.EXE通告系统的各种状态,NetIPX.DLL在接到其他节点发来的信息时要以消息传递的方式通告Manager.EXE,通过它调用Proxy.DLL的服务对所收到的信息进行处理,并作出相应的操作。

  三、TH-SECSCW的编程接口
  支撑环境TH-SECSCW是通过一组编程接口向应用程序提供各种功能并维护它们间各种关系的,通过提供这一组编程接口,TH-SECSCW可使CSCW应用程序集中处理面向具体应用领域的特殊问题,使其构造简便易行,从而达到对应用程序及其构造进行支持的目的。
  1.接口形式
  如图8.43所示,支撑环境TH-SECSCW的编程接口都是通过Proxy.DLL提供的,它具有两种形式:函数调用与消息传递。这两种形式的接口分别具有不同的作用,它们相互配合,共同完成支撑环境对应用程序的支持及对其关系的维护功能。
  (1) 函数调用。函数调用的是应用程序主动的访问支撑环境服务的接口形式,在应用程序运行过程中,如果需要支撑环境所完成的某项功能,它就调用相应的函数,这些函数的实现是在支撑环境中进行的。例如:某个节点中的应用程序部件欲向其他节点的应用程序部件发送信息,它只需调用由支撑环境提供的一个Send函数即可,对这些信息的打包及与其他信息间关系的维护都由支撑环境负责。
   8.43 支撑环境中的函数调用与消息传递
  
  (2) 消息传递。消息传递是支撑环境主动地将系统中的各种事件通告给各应用程序,应用程序在接收到这些消息后,作相应的处理,从而可使整个系统形成有机统一的整体。系统中的事件是系统状态的改变,如前所述,系统状态包括四个因素,因此这四个因素的任何改变都会引起系统状态的改变,从而使支撑环境向各应用程序传递相应的消息。
  2.接口类型
  支撑环境TH-SECSCW通过函数调用和消息传递这两种形式的接口相互配合来完成其功能,这些接口按其完成的功能可分为如下几类:
  (1) 应用程序注册。应用程序通过这类接口将各种信息传递给支撑环境,使支撑环境了解各个应用程序的情况,以便于对它们进行统一的管理。
  (2) 信息访问。应用程序通过此类接口访问支撑环境管理的各种信息,这些信息包括协作状态,协作群体的信息、其他节点的应用部件信息以及实际的操作数据等。
  (3) 通信。各节点中的应用程序部件通过此类接口彼此传递,进行交互。应用程序部件只要按照接口的规范,描述对数据通信的要求即可。
  (4) 设备访问协调。通过这类接口,支撑环境可以协调各应用程序对多媒体设备的访问冲突,使最需要该设备的应用程序得以对其进行访问。
  (5) 协作关系维护。通过这类接口,支撑环境可以动态的管理系统中的公共协作关系,其中包括对协作成员的召集、建立初始的群体协作结构、处理成员的动态加入和退出以及撤销所建立的协作结构等。
  (6) 应用控制权的访问。通过这类接口,应用程序可以访问用户对该应用程序的控制情况,从而决定是否允许用户的操作以及对用户操作进行何种响应。