分布式软件体系结构风格(CS,BS)

阅读: 评论:0

分布式软件体系结构风格(CS,BS)
分布式软件体系结构风格
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.*;
*;
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{
/*程序阻塞,等待连接。即直到有⼀个客户请求到达,程序⽅能继续执⾏*/
Socket ss=s.accept();
System.out.println("Socketaccept:"+ss);
try {
//连接成功,建⽴相应的I/O数据流
DataInputStream dis=InputStream());
DataOutputStream dos=new OutputStream());              //在循环中,与客户机通信
while(true){
String adUTF();      //从客户机中读数据
if(str.equals("end"))break;    //当读到end时,程序终⽌
System.out.println(str);
dos.writeUTF("Echoing:"+str);    //向客户机中写数据
}
dos.close();
dis.close();
}finally{
ss.close();
}
}finally{
s.close();
}
}
}
服务器端运⾏结果为:
ServerSocket:ServerSocket[addr=0.0.0.0/0.0.0.0,port=0,localport=8888] Socket accept:Socket[addr=/127.0.0.1,port=7312,localport=8888]
测试:0
测试:1
测试:2
测试:3
测试:4
测试:5
(2)客户机端程序tcpClient.java
import java.io.*;
*;
public class tcpClient{
局域表面等离子体共振public static voidmain(String[] args) throws IOException{
/
/建⽴Socket,服务器在本机的8888端⼝处进⾏“侦听”
Socket ss=newSocket("127.0.0.1",8888);
System.out.println("Socket:"+ss);
try{
//套接字建⽴成功,建⽴I/O流进⾏通信
DataInputStreamdis=new InputStream());
DataOutputStreamdos=new OutputStream());
for(int i=0;i<6;i++){
dos.writeUTF("测试:"+i);  //向服务器发数据
dos.flush();              //刷新输出缓冲区,以便⽴即发送
System.out.adUTF());  //将从服务器接收的数据输出
汽车喷水电机
}aurita
dos.writeUTF("end");          //向服务器发送终⽌标志
dos.flush();                          //刷新输出缓冲区,以便⽴即发送
dos.close();
dis.close();
}finally{
ss.close();
}
}
}
B/S三层架构:
浏览器/服务器(B/S)是三层C/S风格的⼀种实现⽅式
–表现层:浏览器
–逻辑层:· Web服务器· 应⽤服务器
–数据层:数据库服务器
基本组件:
–数据库服务器· 存放数据的数据库、负责数据处理的业务逻辑;
–Web服务器/应⽤服务器· 业务逻辑:对数据进⾏处理;· 客户端应⽤程序以⽹页形式存放于Web服务器上;–浏览器· 在客户端上的浏览器中键⼊相应的⽹址
连接件:经由⽹络的调⽤-返回机制或隐式调⽤机制
–浏览器ßàWeb服务器/应⽤服务器:浏览器向Web服务器/应⽤服务器发送请求,并接收返回结果。
–Web服务器/应⽤服务器ßà数据服务器: Web服务器/应⽤服务器向数据服务器发送请求,并接收返回结果。
优点:
基于B/S体系结构的软件,系统安装、修改和维护全
在服务器端解决,系统维护成本低:
–客户端⽆任何业务逻辑,⽤户在使⽤系统时,仅仅需要⼀个浏览器就可运⾏全部的模块,真正达到了“零客户端”的功能,很容易在运⾏时⾃动升级。
–良好的灵活性和可扩展性:对于环境和应⽤条件经常变动的情况,只要对业务逻辑层实施相应的改变,就能够达到⽬的。
§ B/S体系结构还提供了异种机、异种⽹、异种应⽤服务的联机、联⽹、统⼀服务的最现实的开放性基础。
§较好的安全性:在这种结构中,客户应⽤程序不能直接访问数据,应⽤服务器不仅可控制哪些数据被改变和被访问,⽽且还可控制数据的改变和访问⽅式。
§三层模式成为真正意义上的“瘦客户端”,从⽽具备了很⾼的稳定性、延展性和执⾏效率。
§三层模式可以将服务集中在⼀起管理,统⼀服务于客户端,从⽽具备了良好的容错能⼒和负载平衡能⼒。
§扩⼤了组织计算机应⽤系统功能覆盖范围,可以更加充
分利⽤⽹络上的各种资源,同时应⽤程序维护的⼯作量
也⼤⼤减少
– B/S结构出现之前,管理信息系统的功能覆盖范围主要是组
织内部。
– B/S结构“零客户端”⽅式使组织的供应商和客户(这些供应商和客户有可能是潜在的,也就是说可能是事先未知的)的计算机⽅便地成为管理信息系统的客户端,进⽽在限定的功能范围内查询组织相关信息,完成与组织的各种业务往来的数据交换和处理⼯作。
§ B/S结构的计算机应⽤系统与Internet的结合也使新近提出的⼀些新的企业计算机应⽤(如电⼦商务,客户关系管理)的实现成为可能。
缺点:
§客户端浏览器以同步的请求/响应模式交换数据,每请求⼀次服务器就要刷新⼀次页⾯;
§受HTTP协议“基于⽂本的数据交换”的限制,在数据查询等响应速度上,要远远低于C/S体系结构;
§数据提交⼀般以页⾯为单位,数据的动态交互性不强,不利于在线事务处理(OLTP)应⽤;
如图是某水上打捞船
§受限于HTML的表达能⼒,难以⽀持复杂GUI(如报表等)。
程序:
前台界⾯代码:
日志审计<%@ Page Language="C#" AutoEventWireup="true"CodeBehind="Default.aspx.cs" Inherits="TestWeb1._Default"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0Transitional//EN""/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="/1999/xhtml" >
<head runat="server">
<title>前台界⾯</title>
</head>

本文发布于:2023-05-30 06:04:17,感谢您对本站的认可!

本文链接:https://patent.en369.cn/patent/3/119541.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:数据   服务器   功能   系统   请求   业务   数据库   程序
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 369专利查询检索平台 豫ICP备2021025688号-20 网站地图