分布式软件体系结构风格(C/S,B/S)

分布式软件体系结构风格

1、  三层C/S结构

2、  三层B/S结构

了解很多其它软件体系结构

三层C/S结构(3-Tier C/S Architecture)

§第1层:用户界面GUI—表示层——客户机

§第2层:业务逻辑—功能层——应用server

§第3层:数据库—数据层——数据库server

基本组件:

–数据库server

? 存放数据的数据库、负责数据处理的业务逻辑;

–应用server

? 业务逻辑:对数据进行处理;

–客户机应用程序

? GUI:用户界面

§连接件:经由网络的调用-返回机制或隐式调用机制

–客户机?à应用server:客户机向应用server发送请求,并接收返回结果。

–应用server?à数据server:应用server向数据server发送请求,并接收返回结果。

表示层:

§应用的用户接口部分,担负着用户与应用之间的对话功能。

§检查用户从键盘等输入的数据,显示应用输出的数据;检查的内容也仅仅限于数据的形式和取值的范围。不包含有关业务本身的处理逻辑。

§为使用户能直观地进行操作,通常使用图形用户界面GUI 。操作简单、易学易用;

§在变更时。仅仅须要改写显示控制和数据检查程序,而不影响其它层。

§不包括或包括一部分业务逻辑。

功能层:

§应用系统的主体。包含大部分业务处理逻辑(通常以业务组件的形式存在。如JavaBean/EJB/COM等);比如,在制作订购合同一时候要计算合同金额,依照定好的格式配置数据、打印订购合同。

§从表示层获取用户的输入数据并加以处理。

§处理过程中须要从数据层获取数据或向数据层更新数据;

§处理结果返回给表示层。

§用户检索数据时,要设法将有关检索要求的信息一次性地传送给功能层。而由功能层处理过的检索结果数据也一次性地传送给表示层。

§通常,在功能层中包括有确认用户相应用和数据库存取权限的功能以及记录系统处理日志的功能。

数据层:

§数据库管理系统DMBS,负责管理对数据库数据的读写;

§接受功能层的数据查询请求。运行请求。并将查询结果返回给功能层;

§从功能层接受数据存取请求。并将数据写入数据库,请求的运行结果也要返回给功能层。

§数据库管理系统必须能迅速运行大量数据的更新和检索。如今的主流是关系型数据库管理系统,因此。一般从功能层传送到数据层的要求大都使用SQL语言。

长处:

§在用户数目较多的情况下,三层C/S结构将极大改善性能与灵活性(通常可支持数百并发用户,通过集群可达数万并发用户)。

§同意合理地划分三层结构的功能。使之在逻辑上保持相对独立性。能提高系统和软件的可维护性和可扩展性——UI、BL、DB能够分别加以复用

§同意更灵活有效地选用对应的平台和硬件系统。使

之在处理负荷能力上与处理特性上分别适应于结构清晰的三层; 而且这些平台和各个组成部分能够具有良好的可升级性和开放性。

§应用的各层能够并行开发,能够选择各自最适合的开发平台和开发语言。

§利用功能层有效地隔离开表示层与数据层,未授权的用户难以绕过功能层而非法的訪问数据层,为严格的安全管理奠定了坚实的基础。

§将遗留系统(旧版本号的系统)移植到三层C/S下将很easy;

缺点:

§三层C/S结构各层间的通信效率若不高,即使分配给各层的硬件能力非常强,其作为总体来说也达不到所要求的性能。

§设计时必须谨慎考虑三层间的通信方法、通信频度及数据量,这和提高各层的独立性一样是三层C/S结构的关键问题——分层风格的固有缺点。

程序:

(1)server端程序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{

/*程序堵塞,等待连接。即直到有一个客户请求到达,程序方能继续运行*/

Socket ss=s.accept();

System.out.println("Socketaccept:"+ss);

try {

//连接成功,建立对应的I/O数据流

DataInputStream dis=newDataInputStream(ss.getInputStream());

DataOutputStream dos=new DataOutputStream(ss.getOutputStream());

//在循环中。与客户机通信

while(true){

String str=dis.readUTF();      //从客户机中读数据

if(str.equals("end"))break;     //当读到end时,程序终止

System.out.println(str);

dos.writeUTF("Echoing:"+str);     //向客户机中写数据

}

dos.close();

dis.close();

}finally{

ss.close();

}

}finally{

s.close();

}

}

}

server端执行结果为:

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.*;

import java.net.*;

public class tcpClient{

public static voidmain(String[] args) throws IOException{

//建立Socket,server在本机的8888port处进行“侦听”

Socket ss=newSocket("127.0.0.1",8888);

System.out.println("Socket:"+ss);

try{

//套接字建立成功,建立I/O流进行通信

DataInputStreamdis=new DataInputStream(ss.getInputStream());

DataOutputStreamdos=new DataOutputStream(ss.getOutputStream());

for(int i=0;i<6;i++){

dos.writeUTF("測试:"+i);  //向server发数据

dos.flush();               //刷新输出缓冲区,以便马上发送

System.out.println(dis.readUTF());   //将从server接收的数据输出

}

dos.writeUTF("end");           //向server发送终止标志

dos.flush();                          //刷新输出缓冲区,以便马上发送

dos.close();

dis.close();

}finally{

ss.close();

}

}

}

B/S三层架构:

浏览器/server(B/S)是三层C/S风格的一种实现方式

–表现层:浏览器

–逻辑层:? Webserver? 应用server

–数据层:数据库server

基本组件:

–数据库server? 存放数据的数据库、负责数据处理的业务逻辑;

–Webserver/应用server? 业务逻辑:对数据进行处理。? client应用程序以网页形式存放于Webserver上;

–浏览器? 在client上的浏览器中键入对应的网址

连接件:经由网络的调用-返回机制或隐式调用机制

–浏览器?àWebserver/应用server:浏览器向Webserver/应用server发送请求,并接收返回结果。

–Webserver/应用server?à数据server: Webserver/应用server向数据server发送请求,并接收返回结果。

长处:

基于B/S体系结构的软件,系统安装、改动和维护全

在server端解决,系统维护成本低:

–client无不论什么业务逻辑,用户在使用系统时,只须要一个浏览器就可执行所有的模块,真正达到了“零client”的功能,非常easy在执行时自己主动升级。

–良好的灵活性和可扩展性:对于环境和应用条件常常变动的情况,仅仅要对业务逻辑层实施对应的改变,就行达到目的。

§ B/S体系结构还提供了异种机、异种网、异种应用服务的联机、联网、统一服务的最现实的开放性基础。

§较好的安全性:在这样的结构中,客户应用程序不能直接訪问数据,应用server不仅可控制哪些数据被改变和被訪问,并且还可控制数据的改变和訪问方式。

§三层模式成为真正意义上的“瘦client”,从而具备了非常高的稳定性、延展性和运行效率。

§三层模式能够将服务集中在一起管理,统一服务于client,从而具备了良好的容错能力和负载平衡能力。

§扩大了组织计算机应用系统功能覆盖范围,能够更加充

分利用网络上的各种资源,同一时候应用程序维护的工作量

也大大降低

– B/S结构出现之前,管理信息系统的功能覆盖范围主要是组

织内部。

– B/S结构“零client”方式使组织的供应商和客户(这些供应商和客户有可能是潜在的,也就是说可能是事先未知的)的计算机方便地成为管理信息系统的client,进而在限定的功能范围内查询组织相关信息。完毕与组织的各种业务往来的数据交换和处理工作。

§ B/S结构的计算机应用系统与Internet的结合也使新近提出的一些新的企业计算机应用(如电子商务。客户关系管理)的实现成为可能。

缺点:

§client浏览器以同步的请求/响应模式交换数据。每请求一次server就要刷新一次页面;

§受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""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >

<head runat="server">

<title>前台界面</title>

</head>

<body>

<formid="form1" runat="server">

<div>

</div>

</form>

</body>

</html>

server代码:

using System;

usingSystem.Collections;

usingSystem.Configuration;

using System.Data;

using System.Linq;

using System.Web;

usingSystem.Web.Security;

using System.Web.UI;

usingSystem.Web.UI.HtmlControls;

usingSystem.Web.UI.WebControls;

usingSystem.Web.UI.WebControls.WebParts;

using System.Xml.Linq;

namespace TestWeb1

{

public partial class _Default :System.Web.UI.Page

{

protected void Page_Load(object sender,EventArgs e)

{

string strselect = "selectLoginName,UserName from Users";

string strCN [email protected]"server=.\SQLEXPRESS;database=Business;Integrated Security=True";

SqlDataAdapter ad = new SqlDataAdapter(select_str,strCN);

DataSet ds = new DataSet();

ad.Fill(ds, "mytable");

DataTable dt = ds.Tables[0];

string str="<ul>";

foreach (DataRow row in dt.Rows)

{

str+="<li>"+row[0]+"||"+row[1]+"||"+row[2]+"<li>";

}

str += "</ul>";

Response.Write(str);

}

}

}

C/S+B/S混合体系结构:

–混合原则一:“内外有别”的原则

–混合原则二:“查改有别”的原则

§混合原则一:“内外有别”的原则:

–企业内部用户通过局域网直接訪问数据库server

? C/S结构;

? 交互性增强;

? 数据查询与改动的响应速度高;

–企业外部用户通过Internet訪问Webserver/应用server

? B/S结构;

? 用户不直接訪问数据,数据安全。

§ “内外有别”模型的缺点是企业外部用户改动和维护数据时,速度较慢,较繁锁。数据的动态交互性不强

§混合原则二:“查改有别”的原则:

–无论用户处于企业内外什么位置(局域网或Internet),凡是须要对数据进行更新(维护和改动数据)操作的(Add, Delete, Update),都须要使用C/S结构;

–假设仅仅是运行一般的查询与浏览操作(Read/Query),则使用B/S结构。

§ “查改有别”模型体现了B/S体系结构和C/S体系结构的共同长处。

§但由于外部用户能直接通过Internet连接到数据库server,企业数据easy暴露给外部用户,给数据安全造成了一定的威胁。

时间: 2024-10-01 03:44:06

分布式软件体系结构风格(C/S,B/S)的相关文章

软件体系结构风格

MarShaw和DavidGarlan 中提出的软件体系结构定义为:能够用来具体描述软件系统控制结构和整体组织的一种体系结构,能够表示系统的框架结构,用于从较高的层次上来描述各部分之间的关系和接口. 软件体系结构是对系统的一种高层次的抽象描述.主要是反映拓扑属性,有意忽略细节: 软件体系结构是由构件和构件之间的联系组成,构件又有它自身的体系结构: 构件的描述有3个方面:计算功能.结构特性及其他特性. 从软件体系结构的定义可以看出,软件体系结构主要涉及构件.构件之间的联系与约束.由构件通过相互交互

经典软件体系结构风格——仓库风格

在仓库风格中,有两种不同的构件:中央数据结构说明当前状态,独立构件在中央数据存贮上执行,仓库与外构件间的相互作用在系统中会有大的变化.按控制策略的选取分类,可以产生两个主要的子类.若输人流中某类时间触发进程执行的选择,则仓库是传统型数据库;另一方面,若中央数据结构的当前状态触发进程执行的选择,则仓库是黑板系统. 这种风格的优点: (1)善于管理数据信息,适合大量数据的应用场合; (2)适用于复杂的逻辑系统; (3)黑板系统模型能更容易地处理任务间的协作,系统更加灵活.数据库系统一直得到广泛应用,

282.软件体系结构的风格与模式

建筑模式Christopher Alexander, The Timeless Way of Building, p247, 1979每个模式是一个由三部分组成的规则,表达了特定环境.问题和解(solution)之间的关系.作为现实世界的一个成分,每个模式表达了下列三者之间的一种关系:特定环境,在该环境中反复出现的力(forces)的系统,以及协调这些力的某种空间排列.作为语言的一个成分,每个模式是一条指令,展示了这种空间排列如何被一再重复使用,目的是协调同特定环境相关的力的系统.简单地说,模式

软件体系结构C2风格

首先C2风格是最常用的一种软件体系结构风格.(下图为一个C2风格的架构图) C2是一种基于构件和消息的架构风格,可用于创建灵活的.可伸缩的软件系统.一个C2构架可以看成是按照一定规则由连接件连接的许多组件组成的层次网络:系统中的构件和连接件都有一个“顶部”和“底部”:一个构件的“顶部”或“底部”可以连接到一个连接件的“底部”或“顶部”:对于一个连接件,和其相连的构件或连接件的数量没有限制,但是构件和构件之间不能直接相连. C2风格具有以下特点: (1)系统中的构件可实现应用需求,并能将任意复杂度

软件体系结构---软件体系结构之解释器风格

1.软件体系结构风格 软件体系结构设计的一个核心问题是能否使用重复的体系结构模式,即能否达到体系结构级的软件重用.也就是说,能否在不同的软件系统中,使用同一体系结构.基于这个目的,学者们开始研究和实践软件体系结构的风格和类型问题. 软件体系结构风格是描述某一特定应用领域中系统组织方式的惯用模式.它反映了领域中众多系统所共有的结构和语义特性,并指导如何将各个模块和子系统有效地组织成一个完整的系统.按这种方式理解,软件体系结构风格定义了用于描述系统的术语表和一组指导构件系统的规则. 对软件体系结构风

软件体系结构原理、方法与实践总结

第1章:软件体系结构概论 什么是软件危机,软件危机的具体表现有哪些? 软件危机:落后的软件生产方式无法满足迅速增长的计算机软件需求,从而导致软件开发与维护过程中出现一系列严重问题的现象. 软件危机的表现: 软件成本日益增长,开发进度难以控制,软件质量差,软件维护困难 产生软件危机的原因,如何克服软件危机? 产生软件危机的原因有用户需求不明确,缺乏正确的理论指导,软件规模越来越大,软件复杂度越来越高. 人们面临的不光是技术问题,更重要的是管理问题.要提高软件开发效率,提高软件产品质量,必须采用工程

软件体系结构基本概念汇总

这门课与UML建模,程序设计方法学一样,都是站在比较高的角度来看整个软件结构.并不是对算法,或者语言的关注.如果以后有志于成为软件架构师,就应该好好学这门课.现在我把自己整理的这门课的资料与大家分享. 二.名词解释(每题2分,共20分) 1.B/S(期中) 答:浏览器/服务器风格,是三层应用结构的一种实现方式. 具体结构:浏览器/Web服务器/数据库服务器. 2.C/S(期中) 答:客户/服务器风格,是基于资源不对等,且为共享而提出来的,定义了工作站如何与服务器相连,以实现数据和应用分布到多个处

285.软件体系结构评估概述

7.1.1 评估关注的质量属性 软件体系结构的设计是整个软件开发过程中关键的一步.对于当今世界上庞大而复杂的系统来说,如果没有一个合适的体系结构而要有一个成功的软件设计几乎是不可想象的. 不同类型的系统需要不同的体系结构,甚至一个系统的不同子系统也需要不同的体系结构.体系结构的选择是一个软件系统设计成败的关键.但是,怎样才能知道为软件系统所选用的体系结构是否恰当?如何确保按照所选用的体系结构能顺利地开发出成功的软件产品呢?要回答这些问题,需要使用专门的方法对软件体系结构进行分析和评估. 体系结构

对软件体系结构的认识

一 . 软件体系结构(架构) 软件体系结构的定义 通常,软件体系结构通常被称为架构,指能够预制和可重构的软件框架结构.架构尚处在发展期,对于其定义,学术界尚未形成一个统一的意见,而不同角度 的视点也会造成软件体系结构的不同理解.比方, ANSI/IEEE 610.12-1990软件project标准词汇对于体系结构定义是“体系架构是以构件.构件之间的关系.构件与环境之间的关系为内容的某一系统的基本组织结构以 及知道上述内容设计与演化的原理 (principle)”:而 Garlan & Shaw