软件体系结构
什么是软件体系结构?
可以从多个角度来看这个问题
软件体系结构的定义:是具有一定形式的结构化元素,即构件的集合(包括处理构件、数据构件、连接构件)
从工程的角度来看
软件体系结构是软件设计过程中的一个层次,是处理关于整体系统结构设计和描述方面的一些问题
从重用的角度来看
软件体系结构是一个抽象的系统规范,主要包括用其行为来描述的功能构件和构件之间的相互连接、结构和关系
从维护角度来看
软件体系结构是一个程序/系统各构件的结构、它们之间的相互关系以及进行设计的原则和随时间演化的指导方针
从工程的作用来看
软件体系结构包括一个软件和系统构件、互联及约束的集合;一个系统需求说明的集合;一个基本原理用以说明这一构件、互联和约束能够满足条件
一些常见的软件体系结构
C/S体系结构
Client/Server(客户机/服务器)结构是一种两层结构的系统
C/S 模式的优点:
(1)由于客户端实现与服务器的直接相连,没有中间环节,因此响应速度较快。
(2)C/S结构的管理信息系统具有较强的事务处理能力。
C/S 模式的缺点:
(1)只适用于局域网。而随着互联网的飞速发展,移动办公和分布式办公越来越普及,这需要我们的系统具有扩展性。这种方式远程访问需要专门的技术,同时要对系统进行专门的设计来处理分布式的数据。
(2)客户端需要安装专用的客户端软件。首先涉及到安装的工作量,其次任何一台电脑出问题,如病毒、硬件损坏,都需要进行安装或维护。特别是有很多分部或专卖店的情况,不是工作量的问题,而是路程的问题。还有,系统软件升级时,每一台客户机需要重新安装,其维护和升级成本非常高。
(3)对客户端的操作系统一般也会有限制。可能适应于Win98, 但不能用于win2000或Windows XP。或者不适用于微软新的操作系统等等,更不用说Linux、Unix等。
B/S体系结构
Browser/Server(浏览器/服务器)结构是客户端是标准的浏览器(如Internet Explore,Netscape Navigator等),服务器端为标准的WEB服务器协同应用服务器响应浏览器的请求。它是随着Internet技术的兴起,对C/S结构的一种变化或者改进的结构。
B/S结构的优点:
(1)具有分布性特点,可以随时随地进行查询、浏览等业务处理。
(2)业务扩展简单方便,通过增加页面即可增加服务器功能。
(3)维护简单方便,只需要改变网面,即可实现所有用户的同步更新。
(4)共享性强
B/S 模式的缺点:
(1)响应速度不及C/S,随着AJAX技术的发展,相比传统B/S结构软件提升一倍速度。
(2)用户体验效果不是很理想,B/S需要单独界面设计,厂商之间的界面也是千差万别,由于浏览器刷新机制,使用时有刷屏现象,好在AJAX技术解决这一难题,像用友,智赢等开发的B/S架构软件用户体验效果与C/S差不多。
管道/过滤器体系结构
管道-过滤器, Pipes and Filters是面向数据流的软件体系结构。
它为处理数据流的系统提供了一种结构。
单步数据处理封装在一个过滤器中,数据在过滤器之间的管道传输。
以便实现对数据的多次操作。
优点:
1.高效的并行效率(灵活使用active(主动) 过滤器)
2.过滤器可以重组/重用/可替换
3.不需要中间保存
缺点:
1.数据传输和转化开销大
2.错误处理复杂
三层客户/服务器体系结构
相对于二层体系结构(Client/Server构架)是由逻辑上相互分离的表示层、业务层和数据层构成。表示层向客户提供数据,业务层实施业务和数据规则,数据层定义数据访问标准。三层体系结构中的核心是组件对象模型。
在网络连接模式中,除对等网外,还有另一种形式的网络,即服务器/客户机网,Client/Server。在客户机/服务器网络中,服务器是网络的核心,而客户机是网络的基础,客户机依靠服务器获得所需要的网络资源,而服务器为客户机提供网络必须的资源。
它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端 来实现,降低了系统的通讯开销。大多数应用软件系统都是Client/Server形式的两层结构,由于软件应用系统正在向分布式的Web应用发 展,Web和Client/Server应用都可以进行同样的业务处理,应用不同的模块共享逻辑组件;因此,内部的和外部的用户都可以访问新的和现有的应 用系统,通过现有应用系统中的逻辑可以扩展出新的应用系统。这也就是应用系统的发展方向。
异构体系结构
C/S与B/S混合;查改有别的模型
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性