应用程序设计的一个关键要素是系统结构,系统结构决定了应用程序的各个部分如何进行交互,同时也决定了每个部分实现的功能。在这个基于网络的环境中,通常在分布式环境中创建应用程序。实际上,Web系统是很好的分布式应用程序。
分布式应用程序利用多台机器的资源及许多进程的空间,把应用程序分成更易管理的任务组,这些任务组能在各种不同的结构下进行部署。把应用程序分成很多组有许多好处,最直接的就是可以重复使、扩充和管理。
1、分层应用程序
分层应用程序可以按层数进行划分,信息可以从数据层(通常存储在数据库)传送到表现层(显示在客户端上)。通常每层相对于其他层来说都运行在不同的系统中,或者在同一系统中的不同进程空间里。
1)、两层应用程序(客户端/服务端)
先举例简单描述一下两层的客户端/服务器结构。典型的结构是一个客户端的用户PC机(前端)和一个包含数据库的网络服务器(后端),逻辑上根据两者的物理位置划分。通常客户端包含大部分业务逻辑,随着数据库及存储过程的发展,SQL语言允许业务逻辑在数据库服务器中存储并执行。
虽然两层应用程序有很大的市场空间,但是它本身存在了很多的局限性。
当一个小企业仅仅需要和使用一个简单的数据源时,这种两层方案会运行的很好。但是大多数企业的业务目标在不断增长,数据源的需求也要相应的增大,这就需要数据库的数据处理性能要提高。这种两层方案的系统在大数据量的处理时,性能很难再提高,这就有了一个在使用上的局限性。
还有一点,如果在企业在临时的业务改变的情况下,需要改变系统的相应的功能,这时由于两层应用程序的固定性,应用系统就必须重建并重新配置。
如果两层应用程序的数据库并发连接数过大,将会很大程度的降低应用程序的执行效率。
2、三层和N层应用程序
由于两层应用程序即客户端/服务器端结构的功能限制,分布式应用程序通常分为三层或者更多层。每层的组件都执行一个特定类型的处理,但目前最常用的是三层应用程序结构。在三层应用程序中,包含一个用户服务层(表现层),一个业务服务层和一个数据服务层。
三层结构和传统的二层客户端/服务器结构的主要区别就是在三层体系内,业务逻辑层从用户界面和数据源中分离出来。
把应用程序划分成独立的层或部分能减小整个应用程序的复杂性,并且使应用程序能够更好的扩展,跟得上企业发展的需要。
三层应用程序不能直接访问数据存储系统,它必须要通过中间的业务逻辑处理程序来访问数据存储系统。