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