基于SaaS模式的进销存实战架构分析15229.docx

上传人:you****now 文档编号:62616628 上传时间:2022-11-22 格式:DOCX 页数:6 大小:67.90KB
返回 下载 相关 举报
基于SaaS模式的进销存实战架构分析15229.docx_第1页
第1页 / 共6页
基于SaaS模式的进销存实战架构分析15229.docx_第2页
第2页 / 共6页
点击查看更多>>
资源描述

《基于SaaS模式的进销存实战架构分析15229.docx》由会员分享,可在线阅读,更多相关《基于SaaS模式的进销存实战架构分析15229.docx(6页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、基于SaaaS模模式的进进销存实实战架构构分析作者:邢邢波涛关于什么么是SaaaS (Sooftwwaree As aa Seerviice ) ,无论是各大媒体,包括网络媒体,还是程序员杂志本身,都已经讲了很多了(程序员杂志还分别在2007年第10期和2008年第8期,做了两期关于SaaS的专题),我也就不再重复。基于SaaS模式的应用还是很丰富的,但是对企业管理软件这个领域来讲,无论是美国的Salesforce , 还是国内的八百客,都是从CRM做起的。直至现在,基于SaaS模式的进销存,在技术架构上,都还是处于摸索阶段,甚至有人在我的Blog上留言,金蝶的友商网只是象征性的推出了用ASP

2、.net技术编写的第一版,第二版要完全转向JAVA平台,从.NET平台转向JAVA平台,那就相当于把整个软件重新写了一遍。用友虽然推出了伟库网,但是至今尚未看到它的进销存应用,只是“网上订货”和“租户营销”两大功能模块。进销存对广大中小企业来讲,还是非常有市场的,但是各大软件厂商,迟迟未推出基于SaaS模式的稳定成熟的进销存软件,这说明什么呢?这说明它的确不好做,在技术架构上,的确有很难解决的问题。我做了很多年的MIS/ERP/进销存管理软件,关注SaaS模式也好几年了,所以我就做了一套基于SaaS模式的进销存软件,和大家一起探讨一下基于SaaS模式的进销存软件的技术架构,就当是抛砖引玉,无知

3、者无畏吧。一、 SaaSS成熟度度模型程序员员在第第八期,刊刊登了阿阿里软件件首席架架构师赵赵进的文文章SSaaSS成熟度度模型浅浅析, 他借用用Freederrickk和Giianppanoolo Carrrarro的文文章,把把SaaaS的成成熟度,从从低到高高分成44个级别别:第一,每每个租户户使用一一个独立立的数据据库实例例和应用用服务器器实例,数据库中的数据结构和应用程序的代码根据租户需求,订制化修改。第二,每每个租户户依然使使用一个个独立的的数据库库实例和和应用服服务器实实例,但但是应用用程序已已经考虑虑到了可可扩展性性,针对对每个租租户的可可定制化通过过配置的的方式实实现,它它是

4、一套套应用程程序。第三,单单实例,多多租户,所有租户共享一个数据库实例和一个应用服务器实例,数据库通过增加Tenant表和TENANT_ID字段来解决识别租户的问题。这时也是一套应用程序。第四,多多实例,多多租户,这时有多个应用服务器实例,最终租户通过负载均衡被分配到不同的应用服务器实例,并且该租户携带某个业务数据库实例信息,由应用服务器动态链接到相应得业务数据库。此时也是一套应用程序。二、 技术架构构设计目目标由上面分分析可以以看出,从从理论上上SaaaS已经经有了一一套完整整的成熟熟度模型型,所以以基于SSaaSS模式的的应用,还还是蛮丰丰富的。但但是由于于进销存存软件的的需求,完完全不同

5、同于CRRM软件件和财务务软件,相相对于财财务软件件,国家家有着明明确的法法律规范范,而进进销存系系统是个个性化非非常强的的一个系系统,要要求所有有的租户户采用同同一个用用户界面面和同一一个业务务逻辑,是是不现实实的。对对于进销销存这块块来说,租户有强烈的个性化需求的意愿。所以,本着这个思想,应用层的设计要求能够做到以下两点:(1)所所有的租租户理论论上均可可以自定定义自己己的页面面(2)所所有的租租户理论论上均可可以自定定义自己己的业务务逻辑这个目标标和SaaaS模模型成熟熟度的第第一类是是类似的,但但是我们们要支持持多实例例,多租租户,并并且是一一套程序序,一个个Fraamwoork。也就

6、是是说我们们既要实现现SaaaS模型型成熟度度第一类类的目标标,又要实现第四四类的技技术架构构。下面面我从数数据库层层到业务务逻辑层层,再到到视图层层,详细细讲解我我是如何何做的,其其系统架架构图如如图一所所示。(图一)三、 数据库层层的设计计 数数据库这这一层的的设计模模式,无无外乎只只有3种种方案:(1)每每个租户独立立一个数数据库:在应用服服务器中中配制不不同的数数据源,或或者使用用不同的的连接池池。这个个方案的的优点是不同租户的数数据物理理分离,安安全性比比较好。它的缺点是数据库连接的利用效率不高。性能问题会很大。它对应SaaS模型成熟度第一类和第一类。(2)所所有租户户的数据据都存放

7、放在一个个数据库库的同一一套表中中, 增增加Teenannt表和和TENNANTT_IDD字段,表表明该业业务数据据是属于于哪个租租户的。它的的优缺点点在赵进进的那篇篇文章SSaaSS成熟度度模型浅浅析也也已经讲讲了很清清晰了。它对应SaaS模型成熟度第三类。(3)多多Schhemaa,单数数据源。这个方方案基本本是方案案(1)的的变种。同同一个数数据库下下可以有有多个SScheema。它的优点点是除了方方案(11)的优优点以外外,它共享数数据源或或连接池池,效率率更高。缺缺点是和方案案(2)比较起起来,数数据库连连接池开开销会比比较大说实话,我我不太确确认这个个模式是是不是对对应SaaaS模

8、模型成熟熟度第(4)类类, 如如果是的的话,那那么数据据库之间间的负载载均衡是是没有意意义的,因因为每个个数据库库之间的的数据根根本不一一样(不不包括备备份数据据库)。如如果不是是的话,那么SaaS模型成熟度第(4)类数据库是如何划分的呢?赵进也没有讲清楚,或者是我自己没有看明白。 具具体到我我的设计计,这里里我选择择方案(33),并并结合了了方案(22),对对于登陆陆/验证证/权限限,所有有的租户共享享一个SScheema,而对于于业务数数据,则则每个租租户的业务务数据,是是独立一个个Schhemaa。这样,每每个租户户的业务务数据达达到了物物理分离离,安全全性比较较好,导导入导出出也很方方

9、便。四、 应用层的的设计 前面咱咱们说过过,进销销存程序序不同于于别的应应用程序序,进销销存应用用程序有有强烈的的个性化化需求,应应用层的的设计要要求能够够做到以以下两点点:(1)所所有的租租户理论论上均可可以自定定义自己己的页面面(2)所所有的租租户理论论上均可可以自定定义自己己的业务务逻辑下面我说说说我是是如何做做到以上上两点的的:要做到以以上两点点,只能能有一套套代码,一一个Frrameeworrk才算算成功,如如果针对对不同的的用户界界面和用用户逻辑辑需求,FFrammewoork也也需要变变动的话话,那就就是项目目性质了了,也就就是SaaaS模模型成熟熟度第一一类的目目标。(1)所所

10、有的租租户理论论上均可可以自定定义自己己的页面面我这里也也是采用用了MVVC的架架构,参参考了SStruuts 的源代代码,并并重新写写了一个个Webb Frrameeworrk,使使之能适适应SaaaS架架构的需需求。上上篇咱们们说过,对对数据库库这一层层,我采采用的是是方案33,每个个租户有自自己独立立的一个个Schhemaa,但所所有的租租户,在在菜单、角角色、权权限方面面,他们们采用了了同一个个公共的的Schhemaa,也就就是说,用用户的登登陆验证证和对应应的菜单单,是在在这个公公共的SScheema里里面实现现的。缺缺省的,这这些租户户共享这这些菜单单,每个个菜单对对应一个个Act

11、tionn,每个个Acttionn对应一一个Viiew, 这一一点,是是采用了了Strrutss的思想想。对于租户户的个性需求求,如果果有的租户的界界面跟其其余租户户的界面面不同,则则新增一一个菜单单(登陆陆的时候候,会覆覆盖掉原原来的同同一个mmenuu_idd的菜单单),这这个菜单单当然有有一个字字段Coompaamy_ID,表明这这个菜单单是这个个租户所独独有的,在在登陆的的时候,把把这个菜菜单加载载到界面面上,而而这个菜菜单对应应了一个个新的AActiion,这个新新的Acctioon对应应了一个个新的VVieww层,这这样就实实现了不不同租户户,可以以有自己己完全不不同的界界面的需需

12、求。下面谈谈谈第22个目标标: 所所有的客客户理论论上均可可以自定定义自己己的业务务逻辑在这里,我我采用了了Ecllipsse插件件的思想想(本人的现本职工工作是EEcliipsee插件TToollingg 工具具开发),所有有和业务务层相关关的业务务逻辑代代码,按按照业务务功能模模块分类类,我都都放在配配置文件件里,动动态加载载,还是是回到那那个Meenu-AActiion-VVieww , 这个AActiion不不仅对应应一个VVieww层,还还对应一一个业务务逻辑,通通过不同同的租户,配配置不同同的菜单单, 这这些菜单单又对应应不同的的Acttionn,这些些Acttionn又对应应不同

13、的的业务逻逻辑,并并且是动动态加载载的,这这样,就就做到了了业务逻逻辑和FFrammewoork的的分离。例如,有有的客户户的应付付款和采采购入库库对应上上,入库库了,才才会形成成应付款款,而有有的客户户,可能能跟采购购订单对对应上,只只要下了了采购订订单,就就会形成成应付款款,等等等这些,无无论客户户的需求求怎么变变化,这这个Frrameeworrk是不不变的,当当然,形形成应收收应付的的业务逻逻辑代码码还是要要自己写写的。五、 视图层的的选择对于Viiew这这一层,我我选择了了Fleex,我我之所以以没有采采用JSSP+AAjaxx,是因因为加载载Ajaax框架架,比如如Extt,可能能也

14、是很很浪费时时间的,造造成加载载速度很很慢。可可扩展性性和可持持续发展展性也没没Fleex好,而而且,FFlexx天生长长着一张张惊艳的的脸,会会给用户户带来很很好的UUI体验验,借用用别人的的一句话话:“乍一看看,很唬唬人”。在Fleex框架架选择上,我没没有采用用Fleex流行行的frrameewokk,比如如moddelgglueefleex/CCairrngoorm/Fleex FFDS/PurreMVVC/BBlazzedss等等FFrammewoork,我直接接自己写写了一个个,感觉觉还是很很好用的的,增加加、修改改、查询询、删除除等等基基本操作作,基本本上做到到自动化化了,不不用

15、写什什么代码码了。学学习这些些Fraamewworkk的曲线线都比较较陡,要要沉下心心,不容容易啊。如如果FDDS不要要钱,我我还是推推荐FDDS。Flexx最大的的不方便便是客户户端的FFlassh容器器和服务务器端的的Tommcatt等容器器,根本本就是两两码事,两两者之间间也可以以说没有有任何关关系,就就像IEE跟toomcaat 没没有任何何关系一一样,所所以在 Flaash容容器内,找找到Seessiion,还是不不容易的的,当然然也有一一些Frrameeworrk,例例如Bllazeeds似似乎解决决了这个个问题,我我没有仔仔细看,网网上也有有一些文文章,说说解决了了这个问问题,我

16、我看了看看,都不不是很方方便的解解决方案案。拿不不到Seessiion,还是蛮蛮不方便便的。对于菜单单,我还还是用了了JSPP。因为菜菜单要根根据每个个客户的的不同权权限,显显示不同同的菜单单,我在在Fleex里面面没有解解决好SSesssionn的问题题,所以以没有用用Fleex做菜菜单。六、关于于O/RR Maappiing工工具的的的选择关于O/R MMapppingg工具,我我并没有有采用流流行的HHibeernaate。SSaaSS模式进进销存的的第一个个目标是是允许用用户自定定义自己己的界面面,界面面的不同同,也就就意味着着数据库库字段的的不同,而而Hibbernnatee要求数数

17、据库字字段和HHibeernaate类类严格一一一对应应,我个个人觉得得它不适适合SaaaS模模式的业业务架构构。当然然也许有有Hibbernnatee的高人人能够解解决这个个问题,我我对Hiiberrnatte仅仅仅是一知知半解。我我采用的的是Appachhe TTusccanyy DAAS(hhttpp:/tusscanny.aapacche.orgg/daas-ooverrvieew.hhtmll), DASS 虽然然牺牲了了OO特特性,用用了类似似于HaashMMAP的的东西,但但是它的的灵活架架构,还还是很适适合SaaaS这这种模式式的。不不过,在在缓存上上,Tuuscaany DA

18、SS肯定没没有Hiiberrnatte那么么成熟,而而且,TTusccanyy DASS还有一一个问题题是它更更新比较较慢,不不像Tusccanyy SCCA/SSDO更更新那么么快,就就好像不不是一个个娘生的的。Tusccanyy DASS 目前前的版本本还有一个个很大的的bugg,就是是douublee数据类型型存盘有有问题,我我看他们们现在也也没修改改过来。我我自己更更改了它它的SDDODaataTTypeeHellperr类的源源代码,修修改了它它的Buug。七、关于于SOAA/SCCA关于SCCA,在在写这个个进销存存的第一一版的时时候,所所有Seerviice和和Serrvicce

19、之间间的调用用,我都都是基于于SCAA实现的的。后来来出于性性能的考考虑,以以及这些些Souurcee CCodees和SServvicee全是我我自己控控制的,就就把所有有有关SSCA的的调用全全去掉了了,Seerviice和和Serrvicce之间间修改为为直接调调用。再再后来,想想想这些些租户之之间,很很可能有有很强的的业务协协同需求求。而这这些租户户之间的的Serrvicce,也也可能分分布在不不同的机机器上,所所以再次次更新版版本的时时候,又又加入了了一些SServvicee和Seerviice之之间的动动态调用用,而这这些动态态调用的的Serrvicce之间间,就是是用SCCA来整整合到一一起了。八、开发发后记:在开发发过程当当中,我我参考了了很多FFrammewoork,总总是感觉觉和自己己想要得得差距很很大,与与其整合合别人的的Fraamewworkk, 还还不如自自己写一一个。于于是,我我参考了了Strrutss,重新新写了一一个Weeb FFrammewoork,整整合了FFlexx, JJDBCC,Appachhe TTusccanyy DAAS和AApacche Tusscanny SSCA,,还有那些插件开发思想,自我感觉还是非常好用的(本人有自恋倾向,大家不要学我)。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 管理文献 > 管理制度

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com