针对每个应用系统都有其自身的架构,尤其是已经形成产品的应用系统,其应用架构更值得去研究和学习,有助于丰富自己的系统分析经验和设计能力。

    

    先看看Integrity软件包的软件架构图,然后根据架构图介绍其架构功能,如下图所示

    

浅谈Integrity的架构设计分析_Integrity架构

      由上图可以看出Integrity软件包采用混合型架构,结合B/S和C/S两种架构的优势完成对软件系统架构设计与实现。以下的分析仅仅代表我个人的理解和认识,有不同意见的请留言,欢迎评论。

    一、Integrity服务端的架构设计分析

    Integrity结合Flex完成对旗下的各应用模块的使用许可,需要得到相应的许可才能使用相应的模块。

    Integrity主要采用MVC模型完成对server端软件的设计与实现,采用web容器进行servlet管理,此设计实现主要负责对B/S架构的实现,B/S模式架构设计主要面向所有查看数据或编辑简单数据的用户群体,使其通过浏览器可以访问integrity,摆脱对客户端的依赖,完成对数据的维护管理。基于客户端请求(无论是C/S还是B/S)采用command组合方式进行数据交互,在MKS服务端完成对command的解析并执行反映至数据库。MKS软件包将所有功能分割为几个独立的应用模块,每个模块提供复杂的命令使用以及命令参数,根据command参数决定调用哪个应用模块,完成对应的请求功能。

    为了解决服务器端的访问性能压力,服务端采用缓存机制,将所有的业务数据以及用户或权限数据缓存至内存,包括所有MKS相关的对象数据信息,因此MKS对硬件的要求是越高越好,尤其是cpu和内存,以用户登录为例说明服务端的缓存机制,如下图所示

    浅谈Integrity的架构设计分析_Integrity架构_02

    在大量业务数据缓存至内存中,使访问请求的响应时间比较短,这是基于B/S模式的体验结果。然而在客户端的设计中,也有缓存的设计,使客户端的数据加载也很快,这也是客户端的优势。对数据进行非查询操作时,在写数据库之后将数据广播同步至所有的客户端缓存,以便于客户端的数据与服务器端的数据是同步的。基于Integrity服务端包括各类数据的数据缓存,因此Integrity服务端不能做集群来分担对单一Integrity服务端的访问压力。

    当然除了数据缓存机制以外,还使用了其他技术支撑对系统的扩展;支持对类javascript的解析执行,完成对业务逻辑的嵌套;服务端的业务逻辑的定制代码采用动态加载机制进行功能实现,采用面向接口编程以及面向切面编程降低服务端的各个应用模块的耦合度,提高各应用模块的内聚性,提高Integrity的可移植性,支持主流操作系统平台。

    主要通过定制java代码或js脚本完成对Integrity业务逻辑的扩展和补充,两种扩展方式主要体现在服务器端的目录结构,定制java为{Integrity_install_path}/data/java存放定制java编译class文件或jar包,js脚本定制为{Integrity_install_path}/data/triggers存放业务功能扩展,主要是以js格式的文件。

    二、Integrity客户端的架构设计分析

    Integrity客户端主要采用Java中的Swing技术进行设计实现,对swing中提供的各类组件进行必要的封装处理。客户端软件在文档类型的数据维护方面上有很大的优势。在客户端提供丰富的展示界面,将数据有组织的展现给用户;与服务器端的交互方面,主要采用Apache项目中httpclient包以及tcp协议进行服务端交互;客户端软件利用客户端系统的硬件性能设定一些数据缓存,在数据展示方面带来一定的性能提升。以上提到Integrity的所有操作到底层层面都会映射会对应的command,所以客户端与服务端的交互以command的方式进行数据传递。

    三、Integrity提供的API

    Integrity对外提供第三方应用开发接口,该应用开发接口包可以完成对MKS系统数据的维护,很方便的利用提供的API完成定制的应用开发。API主要包括对MKS系统的链接类,各类应用模块命令执行通道以及命令执行结果处理类。基于此客户根据复杂的应用场景完成定制开发。

    Integrity提供Java和C两种语言开发接口,可以很方便java和C开发人员定制开发。

    四、Integrity使用的各类技能

    1、数据缓存    利用服务端和客户端的数据缓存提升系统的性能,降低系统响应时间,同时也牺牲了系统集群的配置的可能;

    2、级联配置    可以利用stage方式完成对开发环境->测试环境->生产环境的级联配置,这种方式的配置可以保证生产环境配置的准确性和可用性,因此各个环境中的Integrity的配置存在差异性,不能人为的切断之间的级联关系,否则的话由此产生的影响是相当大的,会丢失部分数据,这是相当致命的;

    3、代理配置    这种网络配置仅仅针对Integrity中的配置管理功能,完成软件实现过程中的异地开发和协同管理。

    五、Integrity对外提供的扩展功能

    Integrity提供的对外扩展方式主要有API和webservice两种。