快捷搜索:

SpringSide开发实战(八):不是结局的结局,谈谈

SpringSide是个好器械,对我来说,它的好主要体现在两个方面:一、它供给了一个敏捷开拓的框架,省去了我自己整合Spring、Hibernate、Struts、ActiveMQ等等开源组件的光阴,而且照样最佳实践;二、它指示了我的进修目标,在SpringSide中整合的各类组件,都是在同一类组件中最优秀的,而且要想纯熟应用这些组件,都必须对它们进行深入的系统的进修。

原先以为我会在SpringSide开拓实战系列中写更多的文章,然则写到现在,我觉得应该要写终局了,为什么呢?由于在应用SpringSide进行项目开拓的历程中,我越来越感到到项目绝对不是各类组件的简单堆砌,而是法度榜样员要赓续有自己的设法主见和创意,并能够抽象到一个高度。这也恰是为什么我的文章从第一篇到第八篇越来越偏离SpringSide的核心了。在这里,我主要想谈谈法度榜样员的境界。以下不雅点纯属小我见地,迎接大年夜家探究。

第一层境界:从不能到能。

可以这么说,早在7年前我就已经纯熟掌握C说话、Visual FoxPro数据库、HTML、CSS和JavaScript,C说话和Visual FoxPro是黉舍教的,HTML、CSS和JavaScript是自学的,同时,我还自学了Flash动画制作和Photoshop图像处置惩罚。然则,我那时刻还不知道利用法度榜样开拓,学的这些器械无非便是好玩,有时参加一次黉舍主理的网页设计大年夜赛而已。

我开拓的第一个利用是《银符英语在线》,应用的是ASP + SQL Server 2000,光阴是2004年,那时我刚考过软件设计师(原高档法度榜样员),有人找我做法度榜样,他说想做一个英语四六级的在线考试系统,问我能不能做到,我绝不踌躇就说能。我想我确凿是具有软件设计方面的天分,用了一个礼拜设计出数据库,再用一个礼拜写了一个Demo,一会儿就把他征服了,于是,他当老板,我当法度榜样员,一路进行在线英语考试方面的开拓。

在这段光阴,我感觉我不折不扣便是处于这第一层境界。JScript我早已是滚瓜乱熟,ASP教程更随处可得。在这段光阴里,我用全JScript代码实现了用户认证和权限治理,用Visual C++写了个COM组件进行数据的加密和解密,还在网上到处搜索文件上传和动态图片天生方面的办理法子。当时,我感觉我的开拓历程充足而满意;现在看来,我只不过是一个重复发现轮子的傻冒。

在10个月的光阴里,我把这个法度榜样从1.0版开拓到3.0版,功能长进行了不少进级。然则我觉得进级最大年夜的照样我的技巧,我尽我最到的能力将代码与网页分离,尽我最到的能力削减代码的重复,以致已经基础做到应用模式来让法度榜样加倍轻易扩充和掩护。我所做的统统,与今世的一些Web开拓框架已经不约而同。然则,以我当时的内力,确凿没有法子将之抽象为一个框架。我的法度榜样中依然充溢了意大年夜利面条式的代码,而且在在耳目数多的时刻,网页会慢得象蜗牛爬。

第二层境界:从能做到做得漂亮

2005年,我开始打仗Java,以我的根基,自然是很快就学会了Java的语法并进军J2EE。我感觉Java开源天下给了我不少能量,在这两年里,我的进步速率是呈指数式的。以我现在的水平,仅应用JSP和Servlet,已经足以办理绝大年夜部分的需求。然而,仅应用JSP和Servlet便是整个吗?

这个时刻,我们不仅仅要能够完成利用法度榜样的编写,更紧张的要让利用法度榜样便于掩护和便于扩充。这时刻,没有足够的抽象能力是不敷的。要能够理解和利用分层架构,要知道MVC、IoC、AOP、ORM,要懂得声明式事务处置惩罚,还要学会最盛行了AJAX。所有的这统统,不仅能够让我们的利用便于掩护,合理应用各开源组件还能加快开拓的速率,然则最紧张的,它们能使我们的利用充溢艺术的美感。

我不能让我的法度榜样重蹈覆辙,是以,在架构阶段就应该斟酌到Cluster,斟酌到负载均衡,斟酌到可扩充性,并同时应用水平瓜分策略。水平瓜分策略和垂直瓜分策略不合,是让每一个Web办事器都应该能够应用法度榜样的所有功能,而让不合的用户应用不合的办事器,比如id为0-10000的用户和www1.cnblogs.com交互,10001-20000的用户和www2.cnblogs.com交互,等等,如下图所示:

这个时刻,办事器www.cnblogs.com作为负载均衡办事器,它根据登任命户的ID将该用户哀求重定向到www1.cnblogs.com或者www2.cnblogs.com,对付匿名用户,它把用户哀求随机重定向到www1.cnblogs.com或者www2.cnblogs.com。

同时,为了能够让负载均衡办事器能够根据不合的用户来重定向到不合的Web办事器,又要让每个Web办事器上的利用都能够获得所有各个数据库办事器数据的总的索引,必要有一个索引数据库办事器,如下图:

此外,我们还应该让Web办事器和数据库办事器可以动态增添,也便是当某一个办事器负载到达极限时,我们可以添加一台办事器,只必要改动设置设置设备摆设摆设文件即可,无需变动代码,如下图:

同时共同应用动态页面静态化技巧,静态化后的html页面和图片文件都保存在Web办事器上,此时Web办事器有同时担当了缓存办事器的功能。当达到IO瓶颈的限定后,又可以经由过程办事器加大年夜内存或为办事器设置设置设备摆设摆设SAN(存储区域收集)来办理问题。

好了,SpringSide系列的文章就写这么多吧。等候SpringSide 2.0正式版的宣布。我会把它用到实际的项目开拓中。

您可能还会对下面的文章感兴趣: