基于SaaS的办公自动化系统架构设计

发表时间:2020/7/15   来源:《电力设备》2020年第9期   作者:顾超
[导读] 摘要: SaaS技术的出现,对软件行业、客户使用模式产生了巨大影响。
        (北京天羿机场设计咨询有限公司  北京  10000)
        摘要: SaaS技术的出现,对软件行业、客户使用模式产生了巨大影响。本文在分析了SaaS系统优势的基础上,设计了基于SaaS的OA系统软件架构。
        关键词:SaaS;办公自动化;系统架构
        0 引言
        办公自动化系统(Office Automation System,简称OA系统)是计算机技术飞速发展的重要产物之一。它的出现不仅将企业员工从传统、繁重、低效的手工办公方式中解脱出来,而且为企业在信息收集、加工、存储、使用方面提供了一套高效、安全的解决方案。
        早期的OA系统都是按照单一实例单一用户进行设计开发的,即系统本身以每个用户自身需求为核心,力求解决每个用户在实际生产活动中遇到的个性问题;系统按照应用程序部署模式,以企业内部局域网为依托,部署在其内部服务器上。这种根据企业需求来定制和开发OA系统的方式具有诸多弊端,例如购买软件使用许可和配备硬件的费用过于昂贵、系统初期配置和后期维护工作成本开销过大、针对需求变化进行的二次开发难度及费用过高等。可以说这种传统的OA系统开发模式已经难以适应企业办公自动化发展要求。
        SaaS(Software as a Service,软件即服务)是一种利用移动客户端或者浏览器来访问应用程序的模式。与传统软件产品相比,SaaS的核心是将软件视为一种服务提供给用户。其优势在于:
        • SaaS产品提供商依靠云计算技术,对其应用程序进行集中托管与运维,用户则不需要关心软、硬件的安装、配置、升级、运维的工作。
        • SaaS产品提供商以服务租赁的方式向用户提供软件的使用权限,这可以大大降低用户软件使用成本,解决很多中小企业因资金不足而难以实现办公自动化建设的问题。
        • SaaS系统具备可扩展性,可以快速响应用户的需求变化,并调整相应的功能模块;用户也可根据自身需求选择所需的功能模块,从而实现按需付费。
        • 产品提供商会周期性地对SaaS系统进行升级、维护,用户可随时使用最新版本的系统。
        1 系统架构设计
        1.1整体架构及组件划分
        租用SaaS系统的用户,通常以移动设备APP或者电脑浏览器作为访问端,通过互联网进行数据的传输和应用程序的操控。鉴于这种访问模式,本OA系统适用MVC架构,即原则上将系统划分为视图组件(View),控制组件(Controller),以及模型组件(Model)。
        视图组件运行在移动设备或者电脑浏览器上,负责展示用户界面元素和动态数据信息。视图组件一般没有业务逻辑服务。
        控制组件运行在远程服务器上,负责处理客户端请求,并对相应数据进行读取、计算、修改,然后告知客户端运行结果。控制组件包含所有业务逻辑服务,例如用户的注册、登陆和验证服务,消息通知服务,表单制作服务、文件管理服务等。
        模型组件,也称数据模型组件,主要用于在组件间传输数据;对相应的数据操作方法进行封装,并将方法暴露给其他组件。
       
        图1  MVC架构图
        1.2 视图组件(View)模块划分
        视图组件各模块功能如下:
        (1)业务模块组:按照OA系统业务功能,分为注册登陆、个人信息管理、项目信息管理、资料信息管理、统计信息等子模块
        (2)系统管理模块:该模块主要为产品提供商的管理人员提供可视化的系统操作界面,以便其对系统运行情况进行实时监控
        (2)公共模块:该模块包含用户端上各种可复用的功能模块,例如流程审批模块、文件管理模块等。此外,公共模块还包含数据结构验证功能,通过调用方式,检查各模块中指定数据结构和类型是否符合要求
        (3)API(客户端)模块:主要负责发送HTTP请求、监听服务器响应数据,请求的数据结果将被注入到对应模块中
       
        图2  视图组件(View)模块结构图
        1.3 控制组件(Controller)模块划分
        控制组件各模块功能如下:
        (1)业务模块组:对应OA系统业务处理逻辑,分为用户权限验证、数据验证、数据隔离、表单制作等子功能模块
        (2)公共模块:该模块包含服务器端各种可复用的功能模块,例如电子邮件模块、手机短信模块、文件存贮与读取模块等
        (3)API模块(服务器端):主要负责对API之间传输的数据对象结构和类型进行明确定义,通过依赖注入方式,为各模块提供API数据结构定义;模块具备API检验功能,确保数据结构和类型符合要求;响应各种HTTP请求,并根据规则将各请求分配至对应功能模块进行处理。
        如前所述,MVC架构属于分层式架构[1] ,其优点是结构简单、易于开发。但是每层内的模块都或多或少地与本层其他模块有着或强或弱的耦合关系,这种关系非常不利于进行系统部署与测试。此外,因为所有业务逻辑都紧密交织在同一组件层中,一旦外部需求发生改变,系统功能很难在短时间内进行调整,所以系统的可扩展性较低。
        与其他组件相比,控制组件包含了OA系统的全部业务逻辑功能,因此其架构的好坏对后续的开发和系统的整体性能有着重大影响。
        基于此考虑将控制组件从扁平的层式架构(例如视图组件架构)调整为立体式的微服务架构。这种架构将同层间的模块按照业务功能进行粒度 [2] 划分,即将各个功能模块按照其所对应处理的业务或提供的服务进行分组,然后打包封装为一个个独立的微服务单元。每个微服务单元不依赖于其他任何模块(公共模块除外)和父级组件,并且均具备独立部署能力。这样的划分与封装可以极大的弱化乃至消除各模块间的耦合关系。
        例如,将用户权限验证模块封装为独立的微服务单元;数据验证、数据隔离模块封装为一个微服务单元;表单制作模块封装为独立的微服务单元。上述各微服务单元均配备独立的API接口,方便其与各微服务单元之间、单元与其他组件之间的数据通信。公共模块采用依赖注入方式,提供可复用功能。
        这样优化后,各单元内的修改与调整不再对其他模块产生影响;各微服务单元的再部署将会比单一组件的再部署来得快速、高效;进行系统测试时,单元(unit)测试内容可缩小至微服务单元范围,测试难度大大降低;因为单元(组)与单元(组)间不再具有耦合关系,这也有效降低了系统开发难度,提高了系统整体可维护性。
       
        图3  控制组件(Controller)模块结构优化图
        2.4 数据模型组件(Model)模块划分
        数据模式组件各模块功能如下:
        (1)实体模块:对数据库各类实体进行明确定义,并据此生成数据库SQL文件
        (2)CRUD模块:该模块包含对数据库实体的各类操作,封装后暴露给其他模块使用
        (3)日志模块:该模块记录数据库创建、变更信息
        (4)集群模块(可选):集群模块主要解决数据库集群操作问题。在系统开发初期,数据库可采用多租户单数据库模式,从而降低开发难度、提高系统迭代速度;待系统功能逐步完善时,可根据具体需求将数据库替换为多租户多数据库的集群结构,从而提高数据并发量、数据安全性。集群模块主要负责主、从数据库的数据派发、跨库访问和多库同步的操作。
       
        图4  数据模型组件(Model)模块结构图
        2.5 测试组件模块划分
        测试组件主要负责对系统进行单元测试(unit test)和端对端测试(end-to-end test)。该组件仅用于系统开发阶段的功能测试,因此属于临时性模块。系统开发完成时,可移除该组件。
        单元测试分布在各重要业务逻辑节点处,端对端测试独立于其他模块。通过系统配置,在系统构建前,测试模块负责运行上述两项测试,确保各业务模块功能满足业务需求。
        3 结束语
        本文在介绍SaaS系统优势的基础上,介绍了如何应用SaaS技术来设计OA系统架构,希望能对国内的相关研究起到一定的推动作用。
        参考文献
        [1]Mark Richards. Software Architecture Patterns[M]. USA, O’Reilly Media, Inc., 2015: 5-6 
        [2]Mark Richards. Software Architecture Patterns[M]. USA, O’Reilly Media, Inc., 2015: 32 
投稿 打印文章 转寄朋友 留言编辑 收藏文章
  期刊推荐
1/1
转寄给朋友
朋友的昵称:
朋友的邮件地址:
您的昵称:
您的邮件地址:
邮件主题:
推荐理由:

写信给编辑
标题:
内容:
您的昵称:
您的邮件地址: