客户-服务器架构简史
初期庞大的主机授予组织严格的计算方式,通常被视作是客户-服务器架构稚形。这些环境,其中庞大的主机后端伺服瘦客户端,被看作单层客户-服务器架构(图2)。

图2. 一个典型的单层客户端服务器架构
主机系统天然支持同步及异步通信。后一种方法主要用于让服务器连续不断地接收来自终端的字符,以响应个别的击键事件。只在某种条件下服务器才会响应。
虽然它仍有残留痕迹,但是当两层客户-服务器的变化设计在80年代后期出现时,主机作为最初的统治计算平台开始衰退。
这个新方法引入了委派逻辑、以及处理职责下发到单个工作站的概念,导致了胖客户的诞生。受图形用户界面(GUI)创新的进一步支持,两层客户-服务器被认为是前进了一大步,并在90年早期持续统治了IT界数年之久。
这个架构的通常配置包含多个胖客户端,每一个都有自己到中心数据库服务器连接。客户端软件执行大量处理,包括所有的展现相关及多数的数据访问逻辑(图3)。一个或多个服务器通过累积可扩展的关系型数据库管理系统,促进了这些客户端。

图3. 典型的两层客户-服务器架构
让我们通过单独地和将它们与SOA的相应部分作比较两种方式,来看一看两层客户-服务器架构的主要特征。
应用逻辑
客户-服务器环境将大多数应用逻辑放到客户端软件中。这导致庞大的程序连同后端资源来一起来控制用户体验。分布式业务规则是一个例外。一个流行趋势是将嵌入的和维护的业务规则与数据关联,放入数据库的存储过程与触发器之内。这略微抽象了一组来自客户端的业务逻辑,并简化了数据访问编程。尽管如此,客户端还是承担着所有的展示任务。
当代面向服务解决方案中的展现层会有所不同。任何软件片段若有能力依照所需的服务契约进行SOAP消息交换,都可归为服务请求者。同时通常也期望请求者能提供服务,展现层的设计完全开放并对应特定的解决方案需求。
在服务器环境内,存在关于应用逻辑如何驻留与分布的选择权。这些选择权不排除数据库触发器和存储过程。同时,面向服务设计的原则开始起作用,通常指导划分自治处理逻辑的单元。这促进了特定设计品质,比如服务无状态化及协同性,还有可组合性及复用性。
另外,常有这些处理逻辑单元在SOA内不属于任何解决方案的情形。这也支持了促进复用以及跨越应用边界的松散耦合这一终极目标