骆鹏傲, 朱 红
(徐州医学院医学信息学院,江苏徐州 221004)
互联网的发展带动了网络购物的发展,各种购物平台遍布网络,越来越多的中小企业转变传统的销售方式,将销售“搬到”网上,通过互联网与消费者进行快捷沟通,消费者通过网上银行等进行方便安全的支付[1-3]。但是当企业进行互联网销售时,会遇到一些问题:首先,企业如何快速方便地将商品放到互联网上进行销售;再次,网络销售需要投入多大的人力、物力、时间成本。这些问题无不困扰着企业。传统的电子商务平台搭建需要企业先从系统提供商处购买平台软件,然后购买服务器,租用运营商机房及网络带宽,聘请专业人员进行平台维护。这一过程企业需要投入大量人力、物力和财力。在完成上述工作后,企业维护人员还需完善商品资料,进行系统调试、试运营。这种传统的平台搭建方式无疑增加了企业运营成本和经营风险。针对目前信息社会对网络购物的需求,SaaS模式[5-6]的提出解决了这一问题,SaaS模式核心是将软件看作为服务,企业购买软件转变为企业购买相应服务,利用SaaS模式的技术优势,提出了基于SaaS模式的电子商务平台,实现
SaaS(Software as a Service)中文含义为软件即服务。SaaS的核心思想是将软件看作为一种服务,而非传统方式将软件视为一件商品。软件服务提供商将应用软件统一部署在服务器上,并以一对多模式提供给客户使用,客户可根据自己需要按照约定的服务协议直接通过互联网向软件服务提供商获取服务。传统的软件交付是企业与应用提供商签订购买及服务合同,应用提供商向企业交付软件,进行软件实施,企业提供软件运行所需硬件及网络环境,如果企业需要应用提供商进行平台日常维护,还需与服务商签订维护合同,每年向企业支付一定数额的维护费用。
SaaS模式得到快速发展,源于SaaS概念的先天优势,主要包括用户和软件商两个层面:
1)用户方面的优势是拿来即用、无需维护和按需使用。
2)软件商方面的优势是节省销售和维护成本。
SaaS软件的规模大小是标志SaaS软件运营是否成功的重要标志。随着软件规模越来越大,用户越来越多,SaaS软件在架构上需要进行一步步优化。从软件商的成本角度考虑,当软件模块发生数量级扩大时,其运营成本也将翻倍增长。因此,SaaS软件架构应充分考虑规模变化,根据规模大小选择合适的软件架构。目前业界对于SaaS软件架构成熟度主要划分为四级架构[8-9],分别为:定制开发、可配置、高性能架构、可伸缩架构。其中第三级架构实现了多租户平台,但是随着客户数量的逐渐增加,单一的数据库及硬件平台很快将成为整个SaaS应用的发展瓶颈。因此,应进一步考虑如何在现有架构基础上承载更多的客户数。第四级架构在第三级架构基础上提出增加负载均衡设备,将客户访问压力平均分发至多个软件实例上,多个软件实例对应同一版本软件,只是在部署架构上发生改变,达到了架构上的水平扩展。
SaaS模式第四级架构如图1所示。
图1 SaaS软件第四级架构
基于SaaS模式的电子商务平台是面向不同企业用户在线同时使用的系统,由于多个企业用户同时使用,所以对用户界面上可能会出现定制化需求,并且随着用户越来越多,平台规模越来越大,系统平台就会出现修改维护难度大,无法适应定制化功能。因此,系统平台在设计时需考虑以后规模增大带来的伸缩问题。基于现实需求的考虑,本系统在设计时遵循以下5项原则:
1)实用性原则。电子商务平台在商业模式和开发运营技术上都非常成熟,基于这些成熟的业务流程开发和SaaS模式的电子商务平台,很容易被企业所接受,能够较快地支持和强化业务的高效动作,最终通过平台带来经济效益。
2)先进性原则。平台在设计上应考虑平台的安全性和可靠性,并在此基础上考虑平台设计的先进性。在开发技术上应选取成熟的应用技术,使用流行的技术架构适应以后新技术的发展;在硬件平台要具有良好的性能参数,适合于大并发量数据处理。
3)可配置性原则。平台可配置性是SaaS系统应具备的基础功能之一,为了使平台能够适应不同用户的业务需求,因此,平台在设计时应充分考虑可配置性要求。
4)可扩展性原则。SaaS应用平台为一个多用户平台,是一个运行在大并发量环境下的软件平台。随着系统规模的扩大,用户数量的持续增加,对应用平台中应用服务器和数据库服务器的负载也持续加大,应用平台应具备可扩展性及可和可伸缩。
5)安全性原则。SaaS平台软件在同一套系统上同时运营多个企业数据信息,数据采用集中保存。因此平台在设计时,应尽量提高数据存储和传输时安全性,只有这样才能更好地进行平台推广。
文中所述B2C电子商务系统功能主要包括购模块。前者实现系统平台架构功能,主要是将系统划分为多个功能模块,以模块化方式进行组织和开发,方便进行产品打包;后者主要实现产品打包功能,用户订购管理功能。使用此电子商务平台[10-11]的用户主要分为3种角色:平台管理员、企业管理员和个人用户。
平台的总体架构如图2所示。
图2 系统平台功能图
平台在硬件设计上分为物理架构和逻辑架构,分别介绍如下。
3.2.1 物理架构
基于SaaS的软件系统[12]在物理部署上较传统软件有很大区别:多个客户共用一个系统实例。SaaS软件只有在用户数量达到一定数量级才能发挥其较传统软件的优势。SaaS平台在架构部署上应充分考虑系统的承载能力、扩展能力。根据SaaS软件承载客户数量阶段和成本预算不同,在部署上可分为两个阶段进行实施:
第一阶段:不添加负载设备,架构中只包含一个应用服务器和数据库服务器,所有用户请求都由同一个系统实例处理。这种方式架构上,应用服务器又理解为两部分:HTTP服务器和Web容器。前者用于监听HTTP协议,处理静态内容;后者处理动态请求。
第二阶段:使用负载设备实现负载均衡,使用负载设备的好处在于能够将用户的请求访问均匀地转发给不同的设备上进行处理,让每个设备都能充分利用其处理能力。平台配置了负载均衡的另一个好处是若某一设备出现问题,请求能被转发至正常服务器上,保证系统的运行,因为负载设备一般都具有心跳检测功能。
3.2.2 逻辑架构
平台开发在逻辑架构上采用分层思想,将系统分为3层结构,即表示层、业务层、数据访问层。采用分层架构进行开发能够降低代码间的耦合,便于系统维护及扩展。
1)表示层。负责与用户进行交互,包括数据展示、数据录入等,系统功能及业务流程体现在表示层。
2)业务层。封装业务需求操作,通过调用数据访问层提供接口实现。
3)数据访问层。数据访问层由数据访问接口和数据访问逻辑组件组成。
系统以SSH框架集成技术为核心,并在3个框架基础上进行了一定封装,项目按照3层架构思想对各层一些共性的操作抽取到父类中定义,从而简化了各层开发,为各层业务开发提供了有利支撑。
事务管理是企业级应用程序开发中非常重要的一个问题,事务管理能够保证业务数据的完整性和一致性。JavaEE对于事务管理主要分为声明式事务管理和编程式事务管理。本系统事务管理基于Spring框架实现,通过在Spring配置文件中配置事务管理器,配置AOP切入点,动态指定需拦截的方法,从而实现灵活的事务管理。事务管理实现的关键代码如下:
数据分页显示是企业应用系统中最常见的一种数据显示方式。实现数据分页效果主要流程是:首先确定每页记录条数,然后计算总页数,再根据查询条件编写分页查询SQL,从数据库中查询出一页数据,最后在页面中显示,并进行分页控制。
在进行分页查询数据时,最复杂的地方就是如何从数据库中读取一页数据,在换页时如何传递用户查询条件。Hibernate框架提供了统一的分页查询操作接口,使用此接口屏蔽了不同数据库分页查询的复杂性,代码中不需编写各种数据库的分页SQL,因此,分页操作在代码中透明的。
Hibernate分页操作实现如下:
Query query=session.createQuery(封装了用户查询条HQL);
query.setFirstResult((页号-1)*每页记录条数);
query.setMaxResults(每页记录条数);
本系统采用基于角色的权限设计(RBAC),是将用户与角色关联,将角色与权限关联。一个用户分配多个角色,每个角色包含多个权限,这就构成了“用户-角色-权限”控制模型。这个模型中,用户与角色之间、角色与权限之间一般是多对多关系。
基于角色的权限设计模型如图3所示。
图3 基于角色权限设计模型
为用户指定角色关键代码如下:
图像处理是电子商务平台中一个重要的内容,图像常见的相关处理包括:
1)为图像产生缩略图。
2)为图像添加图片水印。第一种是利用图片处理API直接修改图像源文件;另一种是通过过滤器技术,不修改源文件,直接在过滤器中添加水印。
3)为图像添加文字水印。本系统采用的是基于JMagicK工具包实现了图像剪切、绽放、加水印常用功能。
系统最终是为企业和用户服务的,其最终实现模块主要包括:产品订购模块、用户订购商品模块和促销模块。本系统在设计时充分考虑了数据扩展性的可配置性。
产品订购主要是指企业用户根据自己需要的功能模块订购相应产品包,平台提供多个产品包供用户选择,每个产品包中都包括多个功能模块,最大程度上将功能模块间依赖程序降低,让企业能够花最少的钱就使用上符合自身需求的系统功能。产品流程从企业用户登录开始,首先平台会检测当前用户是否登录,若未登录则跳转到企业用户注册页面。企业用户登录后,查看产品包列表及详细说明,选择要订购的产品包进行订购,然后填写订购相关信息(包括订购时长,支付方式等),订购成功后系统生成相应订单,将订单存储至数据库中。系统同时提醒用户付款,若付款后由平台管理员为其开通服务,至此订购流程结束。产品订购业务流程如图4所示。
图4 产品订购业务流程
用户订购商品指用户浏览企业用户网站后,查看感兴趣商品详细信息,点击页面上添加至购物车按钮,将商品添加到购物车列表中。系统页面转入至购物车列表,同时询问是继续购物还是选择结账。若用户选择继续购物,则系统跳转至商品列表页,让用户继续选择感兴趣商品;否则系统转至结算页面,对购物车中商品进行数量汇总和价格汇总,并确定购物车中商品是否正确。若用户确认购物车中商品,系统将开始判断当前用户是否为已登录用户,若用户未登录,则会跳转至登录页,同时在登录页中提示新用户注册。若为登录用户,则系统会生成订单,并将订单信息存储至数据库中。
用户订购商品模块的部分关键代码如下:
保存购物车中商品到数据库中:
订单号
//设置商品数量
产品促销是网上商城一个重要的营销手段,因此,促销模块是网上商城一个不可缺少的模块。当前网上商城的促销规则主要包括:
1)针对某一商品的捆绑销售,如买两瓶牛奶送一条毛巾等。通过此方式还可设计实现“限时抢购”、“限量抢购”销售捆绑方式。
2)针对某一品牌,购买某品牌商品满XX元赠送(或半价购买)某商品。
3)针对某一品牌,购买数量满XX件赠送(或半价购买)某商品。
4)全场类,即全场满XX元赠送某商品。对于以上促销规则,还可灵活添加“双倍返还积分”,对于产品类还可添加“会员积分限制”。
对于已有系统添加促销模块,主要思路是用户在查看某商品时,即从促销信息表中查询判断此商品是否处于促销中,若处于促销中,则读取促销信息并显示在产品页面中,同时显示此促销捆绑的商品(即赠送商品,或可半价等购买的商品)。当用户查看购物车时,需遍历购物车中所有商品,读取商品编号及数量,判断每件商品是否符合某一促销规则,若符合则在购物车中自动添加捆绑商品。
在SaaS开发模式的基础上,提出了一种基于SaaS模式的电子商务平台,该平台是由各资源实体“自组织”形成的分布式、虚拟、动态的集群环境,为了提升其性能,一些实力型机构更应该提供一些强力的计算集群,并实例化地剖析了它在电子商务平台上的一些应用。随着SaaS技术和电子商务的不断发展,关于电子商务的服务和共享问题将得到越来越多的关注,相信文中提出的基于SaaS模式的电子商务平台将以产学研的模式在实践中将会得到广泛应用。
[1] 袁晓舟.ASP平台应用集成模式研究与实现[J].制造业自动化,2010(12):41-43.
[2] 李杰.新兴在线软件服务的用户接受影响因素研究[J].浙江大学学报,2010(3):9-18.
[3] 叶伟.互联网时代的软件革命:SaaS架构设计[M].北京:电子工业出版社,2009.
[4] Frederick Chong,Gianpaolo Carraro.Architecture strategies for catching the long tail[Z].USA:Microsoft Corporation,2011.
[5] 孙卫琴.精通Struts:基于MVC的Java Web设计与开发[M].北京:电子工业出版社,2010.
[6] James Turner,Kevin Bedell.Struts Kick Start中文版[M].北京:电子工业出版社,2011.
[7] 祁耀斌,李福太,陈逢春,等.J2EE平台上MVC设计模式在开发电子商务政务系统中的应用[J].计算机应用研究,2012(8):101-106.
[8] Christian Bauer,Gavin King.Hibernate实战[M].2版.北京:人民邮电出版社,2010.
[9] 计文柯.Spring技术内幕:深入解析Spring架构与设计原理[M].北京:机械工业出版社,2010.
[10] 郭黎明.B2C电子商务系统结构浅析[J].承德民族师专学报,2011(2):18-20.
[11] 纪锋,司光宇,杜会林.B2C电子商务系统功能开发[J].电子商务世界,2011(3):64-65.
[12] 冯凯平,张勇.磁盘阵列RAID技术解析与应用[J].信息与电脑:理论版,2012(8):151-152.