分布式软件体系结构风格
1、 三层C/S结构
2、 三层B/S结构
三层C/S结构(3-Tier C/S Architecture)
§第1层:用户界面GUI—表示层——客户机
§第2层:业务逻辑—功能层——应用服务器
§第3层:数据库—数据层——数据库服务器
基本组件:
–数据库服务器
• 存放数据的数据库、负责数据处理的业务逻辑;
–应用服务器
• 业务逻辑:对数据进行处理;
–客户机应用程序
• GUI:用户界面
§连接件:经由网络的调用-返回机制或隐式调用机制
–客户机ßà应用服务器:客户机向应用服务器发送请求,并接收返回结果。
–应用服务器ßà数据服务器:应用服务器向数据服务器发送请求,并接收返回结果。
表示层:
§应用的用户接口部分,担负着用户与应用之间的对话功能;
§检查用户从键盘等输入的数据,显示应用输出的数据;检查的内容也只限于数据的形式和取值的范围,不包括有关业务本身的处理逻辑。
§为使用户能直观地进行操作,通常使用图形用户界面GUI ,操作简单、易学易用;
§在变更时,只需要改写显示控制和数据检查程序,而不影响其他层;
§不包含或包含一部分业务逻辑。
功能层:
§应用系统的主体,包括大部分业务处理逻辑(通常以业务组件的形式存在,如JavaBean/EJB/COM等);例如,在制作订购合同时要计算合同金额,按照定好的格式配置数据、打印订购合同。
§从表示层获取用户的输入数据并加以处理;
§处理过程中需要从数据层获取数据或向数据层更新数据;
§处理结果返回给表示层。
§用户检索数据时,要设法将有关检索要求的信息一次性地传送给功能层,而由功能层处理过的检索结果数据也一次性地传送给表示层。
§通常,在功能层中包含有确认用户对应用和数据库存取权限的功能以及记录系统处理日志的功能。
数据层:
§数据库管理系统DMBS,负责管理对数据库数据的读写;
§接受功能层的数据查询请求,执行请求,并将查询结果返回给功能层;
§从功能层接受数据存取请求,并将数据写入数据库,请求的执行结果也要返回给功能层。
§数据库管理系统必须能迅速执行大量数据的更新和检索。现在的主流是关系型数据库管理系统,因此,一般从功能层传送到数据层的要求大都使用SQL语言。
优点:
§在用户数目较多的情况下,三层C/S结构将极大改善性能与灵活性(通常可支持数百并发用户,通过集群可达数万并发用户);
§允许合理地划分三层结构的功能,使之在逻辑上保持相对独立性,能提高系统和软件的可维护性和可扩展性——UI、BL、DB可以分别加以复用
§允许更灵活有效地选用相应的平台和硬件系统,使
之在处理负荷能力上与处理特性上分别适应于结构清晰的三层; 并且这些平台和各个组成部分可以具有良好的可升级性和开放性。
§应用的各层可以并行开发,可以选择各自最适合的开发平台和开发语言。
§利用功能层有效地隔离开表示层与数据层,未授权的用户难以绕过功能层而非法的访问数据层,为严格的安全管理奠定了坚实的基础。
§将遗留系统(旧版本的系统)移植到三层C/S下将非常容易;
缺点:
§三层C/S结构各层间的通信效率若不高,即使分配给各层的硬件能力很强,其作为整体来说也达不到所要求的性能。
§设计时必须慎重考虑三层间的通信方法、通信频度及数据量,这和提高各层的独立性一样是三层C/S结构的关键问题——分层风格的固有缺点。
程序:
(1)服务器端程序tcpServer.java
import java.io.*;
import java.net.*;
public class tcpServer{
publicstatic final int PORT=8888;
publicstatic void main(String[] args) throws IOException{
//建立ServerSocket
ServerSocket s=new ServerSocket(PORT);
System.out.println("ServerSocket:"+s);
try{
/*程序阻塞,等待连接。即直到有一个客户请求到达,程序方能继续执行*/
&n