正方vs反方: 三层结构干吗用的? (300分)

  • 主题发起人 Another_eYes
  • 开始时间
同意正方
 
简直是强奸人的眼睛, 应该是轮奸.
三层是否是垃圾岂是我辈说了算的.
 
不夜城:crazy??
 
我是实用主义者. 而且很懒, 能偷懒的地方就偷懒(呵呵, 我一直认为这是我少有的美德)
关于业务逻辑放在中间层还是客户端我是基于如下考虑:
1. 软件修改升级: 业务逻辑放在客户端, 那么软件更新只需要更新一个客户端程序就
够了. 如果放在中间层, 更新的必然是两者, 别不同意, 也别急着跳脚反对, 您可以深呼
吸几下, 等情绪稳定了再平心静气地想一想, 那种所谓通用客户端是多么不切实际. 上
面那位提到的客户端界面由数据库动态生成的想法看上去很美, 但您考虑过没有? 您
设计这种方法的前提是您对用户目前的需求进行调查研究后而做出的(也就是说, 按目
前用户需求进行的优化), 但您能保证您考虑到了所有可能性吗? 而且这种东西一旦出
现例外情况很难处理而且很难修改(我可以说, 重新按新需求写个专用程序呢, 保证也
比您改那玩意容易), 就您那个例子, 如果用户突然需要用拉动滚动条的方法来输入数
据您能做到吗? 当然这只是个例子, 只是说这种东西做出来的"通用"是多么不可靠.业
务逻辑上的变化我看也不是光加个滚动条那么简单吧? 因此, 修改客户端是完全不可
避免的.
2. 有人说, 随着技术的发展, 都用上宽带了如何如何, 我看到的是另一面, 大量的业务
逻辑都由中间层负责的话, 中间层机器的性能将成为应用的瓶颈, 再说, 闲置客户端机
器那些和中间层机器差不多的高性能资源而仅做打字机使用也说不过去吧?
3. 关于B/S结构, 我认为Browser根本不能算客户端, 它只不过是主机/工作站模式中
的工作站而已, 只是主机/工作站模式中工作站每击打一次键盘都要由主机来处理, 而
Browser把这部分功能代替了, 另外代替了主机/工作站模式中由主机处理的显示功能.
您可以将它当作为客户机网络操作系统的一部分, 如果您硬要说它是三层中的Client,
那我只好说, 按正方的观点, 主机(群)/工作站模式就是最完美的三层了.
我认为, B/S结构中的3层, 是在S中的分层, 那些push到Browser的插件, 其实就是三
层中的Client. 如果这样理解的话, 那么上述两条理由一样适合这里.
最后需要澄清一点, 我并不是反对三层应用, 提倡C/S结构, 而是关注三层中中间层的
作用, 我认为, 企业级应用中的中间层, 它的功能主要是负载平衡, 与面向某领域(某企
业, 某部门)的数据库DBMS的补充. 而不应当由它来全面负责企业的业务逻辑(只有那
些具备明显行业特征, 并且不会改变的业务逻辑才交中间层负责--这也是"面向企业的
数据库DBMS的补充"的一部分).
 
那种所谓通用客户端是多么不切实际. 上
面那位提到的客户端界面由数据库动态生成的想法看上去很美, 但您考虑过没有? 您
设计这种方法的前提是您对用户目前的需求进行调查研究后而做出的(也就是说, 按目
前用户需求进行的优化), 但您能保证您考虑到了所有可能性吗? 而且这种东西一旦出
现例外情况很难处理而且很难修改(我可以说, 重新按新需求写个专用程序呢, 保证也
比您改那玩意容易), 就您那个例子, 如果用户突然需要用拉动滚动条的方法来输入数
据您能做到吗? 当然这只是个例子, 只是说这种东西做出来的"通用"是多么不可靠.业
务逻辑上的变化我看也不是光加个滚动条那么简单吧? 因此, 修改客户端是完全不可
避免的.

--你不会告诉我你的MIS是靠人海战术一个一个画出来的吧.
 
大哥, 这和我们讨论的问题有关系吗?
再说了, 以现在delphi的易用性, 1-2小时搞定一个界面绝对是一件很轻松的事, 而且有
无数功能强大的控件可以使用, 做出来的东西无论是<strong>界面美观性, 用户友好性还是操
作速度</strong>都是您那个通用程序所无法比拟的. 您不会不同意"通用是通过牺牲性能和效率
达到的"这一命题吧? 而且我相信, 您的通用程序也不是一两天能做出来的吧? 而开发
一个票漂亮亮的客户端程序, 绝对也不需要"人海战术".
 
但是我觉得,现在的程序有很多时候就是single instance的,
客户们都很刁.看到你做程序这么快,那要求就是要量体裁衣.
通用性,我觉得越来越不重要了,事实上,做一套能卖很多分的
软件,尤其是商务软件,对于一个没有足够影响的公司.
几乎是不可能的/
 
关于三层我也有如下看法:
1、例如我要通过在数据库中取出某些数据,如果用两层,则为了避免大数据量,
只能用存储过程。但用存储过程,一者不通用,二者存储过程不够能活,多与
某些操作不方便。如果用三层,则方便多了。
2、用两层的话,如果客户端要服务器执行某项操作,我不知道怎样做,但用三
层就很方便了。
3、三层可以使要发行的程序很小(例如可以省下bde驱动程序)。
。。。。。。
 
目前,在internet上的结构或者类似的结构上,连接比较多的客户端的应用,三层应该是
比较理想的模式。至于应用服务器的不通用性,正是由于这点不通用性,而使得众多的客户
端通用和简便!
至于以后的发展,我们谁都说不清楚,还是留待后人去讨论了
 

附加功能 将问题提前


 
三层结构的好处大概如下(哈哈):
(1)提高数据的并发处理能力,降低DBServer的压力;
(2)降低系统的维护成本(想象一下,在传统的C/S两层结构中要升级或维护的成本);
 
1.同意Another_Eyes
2.支持反方
3.长见识...
 
支持crystal的观点!
 
My Opinion:
1。对于反驳的第一点,我同意,但我认为正方说的“完善”是指不同客户的逻辑合在一起,
便于规划和控制。
2。对于反驳的第二点,我反对,因为正方只是说“对客户端的影响也会减少到最低程度!”,
并不是说不影响,反驳的论据并不能推翻正方的论点。
3。至于反驳的第三点,我觉得反驳得也有点勉强,其“瘦”确实是指降低维护成本,但不是
说完全不必要维护因为企业逻辑都做到“中间层”,维护客户端当然简单一些
 
只要能上网就是好猫
 
没看懂
:(
 
我这几天在看j2ee和ejb,感触很深,
那已不是三层了,而是多层。
我认为b/s不是三层的,仍然是webserverapp+database两层
brower不过是webserverapp的延伸而已。
 
看了之后对三层又多一些了解了。
 
三层有个巨大的好处
可以节省连接的licence
比如 SQL Server 一个连接要xx美元
现在 做一个 appserver 就只有一个连接了
呵呵
 
to 小猪
B/S就不能WebServerapp+AppServer+Database吗?
 
顶部