B/S结构应用做多了的朋友,会习惯性的认为他们的应用一定是B/S的
C/S结构应用做多了的朋友,会习惯性的认为他们的应用是放在桌面上的
Webservice出来的时候,忽然,我们发现,我们的应用,几乎可以是无界面的
微软搞了个Smart Client,我们又发现,B/S和C/S分得不是那么清楚了
还有B/S结构嵌入ACTIVEX
或者C/S结构内嵌浏览器组件
还有更多的RICH INTERFACE

有一次我想了想,想要把UI层的表示归一下类,我却发现,UI层好像是面人,咋捏都行
我有两个朋友,一个朋友在A公司,A公司主要是做电子商务的,运营一个国内的电子商务平台,这个朋友负责架构维护,有一天,他老板跟他说,公司希望他开发一个跟电子商务站点配合的IM工具,可以让客户通过IM工具得到电子商务站点的更新信息/交易短信息/订阅信息等,由于我这个朋友当初做这个电子商务站点的时候,没有预见到有这么一天,他是没有对系统进行分层的,因为当时这样做似乎很快.现在问题来了,IM系统要访问电子商务站点的内容,于是,需要重新撰写数据库访问代码等等,于是,他几乎重写了所有代码,更糟的问题在于,以后的日子里,伴随着公司业务量的增加,对电子商务站点的功能作了扩展,IM功能也要求扩展,于是乎,它维护着两份数据库访问代码.再有一天,公司宣布提供离线的交易信息及同步更新功能,要为客户开发一套跟电子商务站点结合起来的应用程序,于是,他不得不写第三份代码.没过多久,我见这老兄时,他已经快挂了,因为他疲于奔命的在三份代码间保持同步,一个不小心,可能只是一点点的疏忽,没有保持同步的更新,它的系统就会挂掉!
你难道没有遇到这种状况吗?你难道没有从别人手里接到过这样的系统吗?我接到过,当时我恨不能自杀,因为简直是一个烂摊子.

我的另一个朋友是在另一家公司,从事财务软件的开发,公司一直使用VC++从事C/S结构的财务软件研发.可是,随着时代的进步,许多客户提出要求,想要可以通过WEB方式查看财务报表,并且可以通过WEB访问,由于这个朋友之前的系统就已经分层很清晰,因此,这回,它只是做了做B/S结构的UI层而已,业务逻辑和数据访问层直接引用相应的程序集就好了

这两个朋友的遭遇是截然不同的,同时,也说明了将UI层和业务逻辑,数据访问层分开的严重必要性.
我想,这个例子将比很多空乏的讲解分层必要性的理论要实际的多吧
这是我自己的体会,写给各位初中级,对分层有困惑的朋友