对Web平台和软件架构的一些看法

Csdn dotnet blog 专家群   leimin3113591

说实话,我对硬件平台没有什么经验,因此,也提不出太多的看法。不过,对Web平台和软件架构还是有一点体会,希望能够和您分享。

刚开始,我在努力猜测您的意图,不过我也同时发现这很难,而且风险很大。我不太清楚您到底需要什么,只好以不变应万变,我会结合自己所经历过的项目,去谈谈对Web平台和软件架构的一些看法,这也是我现在能够为您做的了。

关于Web平台
       说到Web平台,我想谈谈瘦客户端(Thin Clients)和胖客户端(Fat Clients)。因为这对于Web平台,无论是使用,还是开发,都是具有革命性意义的。

       让我们先看看瘦客户端吧。我们在享受着它的易于部署、易于维护,客户端成本为零的好处的同时,也为它糟糕的用户体验和复杂的开发所头痛。我是个软件工程师,因此,对于Web开发中很多恼人的问题也感触颇深。例如,没有很好的IDE环境,没有丰富的控件支持,总得刷新页面等。

有时,看着C/S结构的开发人员们,满是羡慕,如果我们也有类似于Visual Studio那样的IDE环境,如果我们也有那么多能够托托拽拽,设置几个属性就OK的控件,如果不用老是刷新页面,那该多好呀。每到这时,就安慰自己,你看他们升级客户端程序多费劲呀,哪像咱们,一处发布,任何地方都能用。

       瘦、胖客户端各有各的优势和缺点,如果能结合他们的优点就好了。于是,胖客户端的Web程序出现了,这在当时,着实让我兴奋了很久。当我看到Macromedia的Flex平台时,我真是激动万分,原来Web程序还能这样:不仅结合了C/S结构丰富的用户体验,很好的控件支持,同时还保留了Web方式的易于发布的优质。

       在迷了一段时间的胖客户端后,发现它也不是万能的,也有其适用的范围。抛开开发,对于用户,胖客户端所带来的最大的好处在于丰富的用户体验,用户看到的不再只是简单的表格,不必总是刷新页面。因此,胖客户端比较适用于对用户交互要求较高的情况。例如,企业内部的信息管理系统、网络相册等。而对于没有太多用户交互,用户的大部分操作只是View的情况,胖客户端就显示不出它的优势了。例如,新闻网站还是用瘦客户端比较好。

       OK,对于胖客户端和瘦客户端我就谈到这里。下面我还想就Web平台的两大主流技术:JSP和ASP.Net说两句,也是最近才有的感想,因为自己这段时间从Java平台转到.Net平台,对两个技术有个简单的对比。

       从JSP到ASP.Net最大的感触是,JSP在易用性、控件支持和用户体验上远不如ASP.Net,但是它却有着ASP.Net所没有的、优异的框架组织。ASP.Net缺乏的是如何将这些优异的控件、组件有机的组织起来的框架,而JSP却恰恰相反。ASP.Net就像是一个明星球队,每个球员都很棒,但却缺乏一个很好的组织和协调;而JSP像是一个没有明星的球队,每个队员都不是很强,但是却有惊人的组织和协调。

       好了,Web平台就谈到这吧。

关于软件架构
       刚入行的时候,关心的是语言语法,后来研究控件、组件,再后来才发现,对于大型企业应用,真正的问题,不是某个算法如何优异,某个控件怎样使用,而是如何将这些单元有机的组织起来,实现良好的可维护性、可扩展性等,这也是我理解的软件架构。

       谈到软件架构,我觉得应该说说应用程序的分层,我觉得分层是软件架构的表现,也是实现良好的可维护性和扩展性的方式。

       还是老规矩,以我经历的项目来谈谈软件分层的好处和坏处。

       我经历的第一个Web项目,界面层和数据层是绑定在一起的,其实也是当时最传统的做法,在界面页上嵌JSP数据库查询代码,html和JSP混合在一起。例如,要显示一个列表,就用JSP查出结果集,然后用<tr><td>作循环。

       很显然,这样够直接,开发人员不用什么特别的设计就能够快速开发出东西。可是,问题呢?好多呀。例如:

l         代码的可读性很差,html中掺杂这数据代码,还有逻辑代码,你读代码就一个感觉――乱,想找个地方都找不到。

l         界面和数据代码、业务逻辑之间耦合,复用几乎为零。当我们想更改页面风格时,我们不敢改,为什么,因为我们不光要修改界面层,还有修改数据、逻辑代码,真是“牵一发而动全身”。当我们在另一个地方用到相同的界面,只是数据不同时,我们只能重新做一个界面再加数据代码,因为我们根本无法将界面从高耦合的代码中玻璃出来。

很庆幸,我们通过JDBC将数据库和应用程序的耦合关系断开了。它的好处在我们将数据库从Oracle 8i升级到Oracle 10g时体现出来。当我将后台数据库更换后,居然不用修改任何代码就能够Run起来。我觉得这也是分层能够带来的好处之一,将修改限制在某一层中,而不会影响其他层的东西。

总结了一下,觉得分层会在可维护性、可扩展性、可复用性上得到很好的效果。但是,想要得到它的好处,就要为它付出代价。分层对开发和设计人员都提出了更高的要求,而且调试时也会遇到困难。不过,我觉得这是值得的。

后来,研究了一些设计模式,读了一些关于Spring、Hibernate的书,为Java平台下有这样优异的框架而惊叹。

随着自己理解的加深,感觉无论是设计模式还是中间件、框架都是在不同程度上构建中间层,进行解藕。

好了,我谈完了,一些思想还不成熟,也不一定正确。不过,我仍然希望您能够满意,期望和您交流。谢谢。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值