构建高可伸缩性的WEB交互式系统(上)

  可伸缩性是一种对软件系统处理能力的设计指标,高可伸缩性代表一种弹性,在系统扩展过程中,能够保证旺盛的生命力,通过很少的改动,就能实现整个系统处理能力的增长。

  在系统设计的时候,充分地考虑系统的可伸缩性,一方面能够极大地减少日后的维护开销,并帮助决策者对于投资所能获得的回报进行更加精准的估计;另一方面,高可伸缩性的系统往往会具有更好的容灾能力,从而提供更好的用户体验。

  WEB交互式系统的可伸缩性主要体现在两个方面:

  • 平台的可伸缩性:随着WEB技术的发展,越来越多的平台开始使用WEB技术来构建系统,一方面不同的平台提供的环境支持存在着各种差异;另一方面随着平台的发展,不断的会有一些旧平台退出历史舞台,新平台转而成为主流平台;因此构建的WEB系统需要能够快速的响应此类变化就需要其具备良好的平台伸缩性
  • 模块的可伸缩性:随着系统功能不断增删更新需求的变化,系统可能会变得越来越复杂,冗余信息也可能会越来越多,改动所带来的影响范围也可能会越来越大,因此良好的模块伸缩性可保证系统具有良好的可维护性,让系统始终处于最佳状态

  WEB交互式系统的主要应用包括:

  本系列文章主要分为两个主要部分对可伸缩性进行阐述,分别是平台的可伸缩性和模块的可伸缩性。本文是系列文章的第一篇,讨论平台的可伸缩性。

  平台的可伸缩性

  WEB交互式系统对平台的可伸缩性主要表现为:

  • 可扩展性:对于新兴平台能够快速进行支持
  • 可缩减性:对于过时的平台冗余信息能够以最小的修改方式剔除

  我们先介绍一下WEB交互式系统的目标平台的情况。

  平台分类

  根据系统所在容器的差异,我们将平台分为浏览器平台和混合应用平台两大类。各分类的详细说明见下文所述。

  浏览器平台

  按引擎划分

  浏览器平台,按照主流引擎可以划分为以下几类:

  混合应用平台

  根据混合应用的宿主平台的差异,我们将混合应用的目标平台分为以下几类:

宿主

说明

AndroidAndroid系统的混合应用,浏览器引擎会自动适配至Webkit
iosios系统的混合应用,浏览器引擎会自动适配至Webkit
WinPhoneWindows Phone系统的混合应用,浏览器引擎会自动适配至Trident
PC桌面应用,采用CEF做为容器,浏览器引擎会自动适配至Webkit

  平台适配

  AOP(ASPect-Oriented Programming):面向切面的编程范式,其核心思想是将横切关注点从主关注点中分离出来,因此特定领域的问题代码可以从标准业务逻辑中分离出来,从而使得主业务逻辑和领域性业务逻辑之间不会存在任何耦合性。

  这里我们可以借鉴AOP思想来实现平台的适配策略,结合不同的平台实现逻辑,我们可以认为对于使用规范、标准来实现业务逻辑的部分为我们的主关注点,而不同平台可以做为若干的切面关注点进行封装,各平台只需关注自己平台下对标准的修正逻辑即可,因此可以通过增加、删除平台修正的切面逻辑来实现对不同平台的适配。

  实现时我们首先提取标准业务逻辑,然后各平台根据实际情况实现对业务逻辑的修正:

  • 标准业务逻辑:主关注点,这里主要是使用根据W3C、ES标准来实现的业务逻辑
  • 前置平台修正逻辑:领域特定关注点,主要是根据平台特性对标准在该平台下的修正,修正逻辑会先于标准逻辑执行
  • 后置平台修正逻辑:同前置平台修正逻辑,也是领域特定关注点,修正逻辑会在标准逻辑执行后再执行

  根据此思路我们对比以下两段代码:

  代码一:目前常用的平台适配方式

function doSomething(){    if(isTrident){        // TODO trident implement    }else if(isWebkit){        // TODO webkit implement    }else if(isGecko){        // TODO gecko implement    }else if(isPresto){        // TODO presto implement    }else{        // TODO w3c implement    }}// 上层应用使用doSomething(1,2,3);

it知识库构建高可伸缩性的WEB交互式系统(上),转载需保留来源!

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。