客户端的应用程序可不仅仅是显示字符了,它承担的任务很重, 要负责界面接口(我们常说的表示层逻辑), 业务逻辑, 还要负责和数据库服务器的通信, 有个很形象的词来称呼这些客户端应用程序: 胖客户端(fat client)。
这就是典型的两层(2-tier)架构, 在90年代风靡一时, VB, PowerBuilder, Delphi可以说是其中的代表, 这些工具都具备快速开发的能力, 通过拖拽控件到表单上, 很容易形成界面, 然后把控件和数据库的数据绑定就可以了。
客户端“变胖”是个进步,计算开始分布, 资源可以平衡, 但是这个架构也有几个缺点。
首先是每个客户端需要直接一个数据库连接, 发出查询, 显示数据。 由于客户端直接连接数据库,而数据库的连接又是非常宝贵的资源, 无法支持大量的客户端来访问,所以2-tier架构是用在局域当中的, 很难想象数据库暴露给海量的互联网用户直接访问。
其次业务逻辑和表示层逻辑绑在一起, 一旦业务逻辑有修改, 就意味着客户端的整个应用程序都要改一遍, 哪怕是修改了一点点业务逻辑, 那怕是这点逻辑对界面没有任何影响, 对不起, 请您重新发布, 测试,部署到所有的客户端吧。
所以把业务逻辑层和表示层分离开, 让各个部分各司其职,尽量独立,减少依赖成为了下一步的目标。
随着互联网的兴起, 尤其是应用服务器和中间件的出现, 业务逻辑找到了容身之所, 成功的和表示层逻辑分了家, 2-tier 迅速被 3-tier 架构所替代。