【系统架构设计师】十一、系统架构设计(中间件|典型应用架构)

news2024/11/23 15:30:24

目录

九、中间件

9.1 基础概念

9.2 中间件分类

十、典型应用架构

10.1 J2EE和四层结构

10.2 JSP+Servlet+JavaBean+DAO

10.3 .NET和J2EE之争

往期推荐

历年真题练习


九、中间件

        之前总提到中间件,那么中间件到底是什么?在系统架构中又扮演者什么角色?一起来看看吧?教材 2.3.6 小结->中间件

9.1 基础概念

        中间件:在一个分布式系统环境中处于操作系统和应用程序之间的软件,可以在不同的技术之间共享资源,将不同的操作系统、数据库、异构的网络环境以及若干应用结合成一个有机的协同工作整体

        中间件位于客户机/服务器的操作系统之上,管理计算机资源和网络通信,有如下特点:

                (1)中间件是一类软件,而非一种软件;
                (2)中间件不仅仅实现互连,还要实现应用之间的互操作
                (3)中间件是基于分布式处理的软件,最突出的特点是其网络通信功能

        中间件的任务是使应用程序开发变得更容易,通过提供统一的程序抽象,隐藏异构系统和分布式系统下低级别编程的复杂度。

9.2 中间件分类

        按照中间件在分布式系统中承担的职责不同,可以划分以下几类中间件产品:

        (1)通信处理(消息)中间件,保证系统能在不同平台之间通信,例如 MQSeries。
        (2)事务处理(交易)中间件,实现协调处理顺序、监视和调度、负载均衡等功能,例如Tuxedo。
        (3)数据存取管理中间件,为不同种类数据的读写和加解密提供统一的接口。
        (4)Web 服务器中间件,提供 Web 程序执行的运行时容器,例如 Tomcat、JBOSS 等。
        (5)安全中间件,用中间件屏蔽操作系统的缺陷,提升安全等级。
        (6)跨平台和架构的中间件,用于开发大型应用软件。
        (7)专用平台中间件,为解决特定应用领域的开发设计问题提供构件库。
        (8)网络中间件,包括网管、接入、网络测试、虚拟社区和虚拟缓冲等,也是当前最热门的研发项目。

十、典型应用架构

10.1 J2EE和四层结构

        J2EE 平台采用了多层分布式应用程序模型,实现不同逻辑功能的应用程序被封装到不同的构件中,处于不同层次的构件被分别部署到不同的机器中。

        客户层组件:J2EE应用程序可以是基于web方式的,也可以是基于传统方式的静态的HTML(标准通用标记语言下的一个应用)页面和Applets是客户层组件。

        Web 层组件:J2EEweb层组件可以是JSP 页面或Servlet。

        业务层组件:业务层代码的逻辑用来满足特定领域的业务逻辑处理。

        信息系统层:企业信息系统层处理企业信息系统软件包括企业基础建设系统例如企业资源计划(ERP),大型机事务处理,数据库系统,和其它的遗留信息系统。例如,J2EE应用组件可能为了数据库连接需要访问企业信息系统。

10.2 JSP+Servlet+JavaBean+DAO

        JSP:用于显示、收集数据的部分。作为MVC中的视图V

        Servlet:作为业务逻辑层,用于处理复杂的业务逻辑,如验证数据、实例化JavaBean、调用DAO连接数据库等。作为MVC中的控制器C。在其中会调用Service方法处理服务。

        JavaBean:用于数据的封装,方便将查询结果在Servlet与JSP页面之间进行传递等。
        DAO:用于连接数据库及进行数据库的操作如:查询、删除、更改等。DAO与JavaBean合在一起为MVC中的模型M

        基本流程:JSP发一个数据到Servlet,Servlet收到后做下解析再根据数据调用相应的Service去服务,Service如果有要调用数据库就通过DAO跟数据库交互,使用JavaBean完成封装,返回结果给Servlet,Servlet再返回给JSP。如下(图是历年真题练习中捞出来的):

10.3 .NET和J2EE之争

         .NET平台:.NET框架处于操作系统和.NET应用语言之间,只适用于微软系统,而J2EE支持跨平台,任何安装了IM的平台。

        .NET和J2EE之争

                (1) JVM(将所有JAVA代码都编译为字节码,由IVM解释执行)和CLR(.NET核心技术,类似于JVM生成中间代码CLR,编译执行)。
                (2) 对多层分布式应用的支持,二者都支持多层分布式应用程序的开发:在表示层的平台支持上J2EE客户端支持多个平台,.NET只能在微软系统上运行,也正是因此,NET会对微软系统上的应用进行优化;在业务层,J2EE占优势,因为有许多开源的项目和代码供参考,开发就变得简单;在数据层,二者都支持多种数据库,都非常优秀。
                (3) 安全性,由于JAVA在.NET之后出来,借鉴了.NET优点,JAVA在运行时动态验证,.NET是静态全面验证,二者都非常优秀,不分上下。
                (4) 应用程序的部署,J2EE的部署相对来说较复杂,针对不同的系统要特别布置。
                (5) 可移植性,显然J2EE占优势,一次开发,到处运行。
                (6) 外部支持,J2EE占优势,得到了很多厂家的支持,.NET只是微软家。

往期推荐

【系统架构设计师】十一、系统架构设计(层次架构风格|MVC|面向服务的架构风格|ESB)-CSDN博客文章浏览阅读835次,点赞16次,收藏15次。三层C/S架构:将处理功能独立出来,表示层和数据层都变得简单。表示层在客户机上,功能层在应用服务器上,数据层在数据库服务器上。既然将两层C/S架构中的数据从服务器中独立出来了。SOA是一种粗粒度、松耦合服务架构,服务之间通过简单、精确定义接口进行通信,不涉及底层编程接口和通信模型。企业服务总线ESB:简单来说是一根管道,用来连接各个服务节点。ESB的存在是为了集成基于不同协议的不同服务,ESB 做了消息的转化、解释以及路由的工作,以此来让不同的服务互联互通。https://shuaici.blog.csdn.net/article/details/140383777【系统架构设计师】十一、系统架构设计(基于体系结构的软件设计|特定应用领域软件架构)-CSDN博客文章浏览阅读532次,点赞9次,收藏7次。基于体系结构(架构)的软件设计(ABSD)方法是体系结构驱动的,即指构成体系结构的商业、质量和功能需求的组合驱动的。在基于体系结构的软件设计方法中,采用视角与视图来描述软件架构,采用用例来描述功能需求,采用质量场景来描述质量需求。DSSA 就是专用于一类特定类型的任务(领域)的、在整个领域中能有效地使用的、为成功构造应用系统限定了标准的组合结构的软件构件的集合。DSSA 就是一个特定的问题领域中支持一组应用的领域模型、参考需求、参考体系结构等组成的开发基础,其目标就是支持在一个特定领域中多个应用的生成。https://shuaici.blog.csdn.net/article/details/140434104

历年真题练习

        1.以下关于软件中间件的叙述,错误的是()。
                A.中间件通过标准接口实现与应用程序的关联提供特定功能的服务
                B.使用中间件可以提高应用软件可移植性
                C.使用中间件有助于提高开发效率
                D.中间件位于客户机服务器的操作系统之下,应用程序之上。管理计算资源和网络通信。

        2.J2EE应用系统支持五种不同类型的构件模型,包括

                A.Applet、JFC、JSP、Servlet、EJB
                B.JNDI、IOP、RMI、EJB、JSP/Servlet
                C.JDBC、EJB、JSP、Servlet、JCA
                D.Applet、Servlet、JSP、EJB、Application Client

人工分割线-答案

        1.D        解析:中间件位于客户机服务器的操作系统之,应用程序之。管理计算资源和网络通信。

        2. D        解析:J2EE 核心组成
        容器:Applet Container、Application Container、Web Container、EJB Container
        组件:Applet、Application、JSP/Servlet、EJB

        服务:
                HTTP(Hypertext Transfer Protocol):超文本传输协议
                RMl-llOP(Remote Method Invocation over theInternet Inter-ORB Protocol):远程方法调用,融合了Java RMI 和CORBA(Common Object RequestBroker Architecture 公共对象请求代理体系结构)。
                Java lDL(Java Interface Definition Language)“Java接口定义语言,主要用于访问外部的CORBA 服务。
                JTA(Java Transaction API):用于进行事务处理操作的API
                JDBC(Java Database Connectivity):为数据库操作提供的一组API
                JMS(Java Massage Service):用于发送点对点消息的服务的
                。。。。。等等

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1931021.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

摸鱼大数据——Kafka——kafka tools工具使用

可以在可视化的工具通过点击来操作kafka完成主题的创建,分区等操作 注意: 安装完后桌面不会有快捷方式,需要去电脑上搜索,或者去自己选的安装位置找到发送快捷方式到桌面! 连接配置 创建主题 删除主题 主题下的数据查看 数据显示问题说明 修改工具的数据显示类型 发…

【C++】vector的认识与使用

vector的认识与使用 认识vectorvector的使用Member functions(成员函数)构造函数(constructor)析构函数(destructor)赋值构造函数(operator) Iterators(迭代器)beginendrbeginrend Capacity(容量)sizemax_s…

zephyr设置BLE广播数据实例

目录 实例1:静态开启广播数据实例2:动态更改广播数据实例3:创建可连接的广播 实例1:静态开启广播数据 新建一个hello world的工程模板。 在prj.conf中开启蓝牙 CONFIG_BTy这个宏,默认会开启广播支持 ( BT_BROADCAS…

1448.统计二叉树中的好节点数目

给你一棵根为 root 的二叉树,请你返回二叉树中好节点的数目。 「好节点」 X 定义为:从根到该节点 X 所经过的节点中,没有任何节点的值大于 X 的值。 示例 1: 输入:root [3,1,4,3,null,1,5] 输出:4 解释&am…

【算法】LRU缓存

难度:中等 题目: 请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类: LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存int get(int key) 如果关键字 key 存在于缓存中,…

【人工智能新纪元】机器学习算法:探索智能背后的奥秘与常见利器

在这个日新月异的科技时代,人工智能(AI)如同一股不可阻挡的洪流,正深刻地改变着我们的世界。作为AI领域的核心驱动力之一,机器学习算法以其独特的魅力,引领着智能技术的飞速发展。今天,就让我们…

【学习】美国虚拟信用卡申请流程

WildCard 官方网址:https://bewildcard.com/i/PEACEFUL (使用邀请码“PEACEFUL”可以享受开卡88 折优惠,注册时提示填写邀请码就可以填写)

Vue3 组件向下通信 祖孙组件的通信 provide与inject

介绍 当父子间通信可以使用props,祖孙使用provide(传递)或inject(接收), 这时不管组件套的多深都可以向下传递。 例子 现在有一个需求,把App.vue的数据传递到MusciPlay.vue里。 App.vue …

跟李沐学AI:模型选择、过拟合和欠拟合

目录 训练误差和泛化误差 验证数据集和测试数据集 K-则交叉验证 模型总结 过拟合和欠拟合 模型容量 模型容量的影响 估计模型容量 数据复杂度 拟合总结 训练误差和泛化误差 训练误差:模型在训练数据上的误差 泛化误差:模型在新数据上的误差 …

移掉 K 位数字

题目链接 移掉 K 位数字 题目描述 注意点 1 < k < num.length < 10^5num 仅由若干位数字&#xff08;0 - 9&#xff09;组成除了 0 本身之外&#xff0c;num 不含任何前导零 解答思路 关键是怎样移掉K位数字保证移除后的数字是最小的。观察规律可得&#xff0c;为…

基于LSTM及其变体的回归预测

1 所用模型 代码中用到了以下模型&#xff1a; 1. LSTM&#xff08;Long Short-Term Memory&#xff09;&#xff1a;长短时记忆网络&#xff0c;是一种特殊的RNN&#xff08;循环神经网络&#xff09;&#xff0c;能够解决传统RNN在处理长序列时出现的梯度消失或爆炸的问题。L…

GB35114国密算法-GMSSL

C有个三方库-GMSSL是可以进行GB35114所需要的SM2、SM3、SM4等加解密算法的&#xff0c;但是使用国密算法是需要申请报备的 GmSSL是由北京大学自主开发的国产商用密码开源库&#xff0c;实现了对国密算法、标准和安全通信协议的全面功能覆盖&#xff0c;支持包括移动端在内的主流…

SpringBoot整合Swagger报错:Failed to start bean ‘documentationPluginsBootstrapper

文章目录 1 问题背景2 问题原因3 修改SpringBoot配置文件 application.properties参考 1 问题背景 Swagger是SpringBoot中常用的API文档工具&#xff0c;在刚接触使用的时候&#xff0c;按照通用的代码进行配置&#xff0c;发现报错了 [main] ERROR org.springframework.boot…

【ARM AMBA AXI 入门 5.1 - QoS是什么?QoS是怎么工作的? 】

请阅读【ARM AMBA AXI 总线 文章专栏导读】 转自&#xff1a;揭秘数通知识&#xff1a;QoS是什么&#xff1f;QoS是怎么工作的&#xff1f;&#xff08;一&#xff09; 文章目录 QoS 概述综合服务和差分服务 QoS 工具报文分类报文标记流量监管和整形工具拥塞管理工具拥塞避免工…

JuiceFS缓存特性

缓存 对于一个由对象存储和数据库组合驱动的文件系统&#xff0c;缓存是本地客户端与远端服务之间高效交互的重要纽带。读写的数据可以提前或者异步载入缓存&#xff0c;再由客户端在后台与远端服务交互执行异步上传或预取数据。相比直接与远端服务交互&#xff0c;采用缓存技…

Linux 线程初步解析

1.线程概念 在一个程序里的一个执行路线就叫做线程&#xff08;thread&#xff09;。更准确的定义是&#xff1a;线程是“一个进程内部的控制序列。在linux中&#xff0c;由于线程和进程都具有id,都需要调度等等相似性&#xff0c;因此都可以用PCB来描述和控制,线程含有PCB&am…

[RuoYi-Vue] - 5. 部分代码分析

文章目录 &#x1f374;1. 后端部分代码分析1.1 BaseController1.2 TableDataInfo1.3 AjaxResult1.4 BaseEntity &#x1f378;2. 权限注解&#x1f37a;3. 前后端交互3.1 跨域问题 &#x1f374;1. 后端部分代码分析 1.1 BaseController 1.2 TableDataInfo 分页查询统一返回对…

如何用个人电脑搭建一台本地服务器,并部署云原生开发工具TitanIDE到服务器详细教程

服务器是一种高性能计算机&#xff0c;作为网络的节点&#xff0c;它存储、处理网络上80%的数据、信息&#xff0c;因此也被称为网络的灵魂。与普通计算机相比&#xff0c;服务器具有高速CPU运算能力、长时间可靠运行、强大I/O外部数据吞吐能力以及更好的扩展性。 服务器的主要…

Day07-ES集群加密,kibana的RBAC实战,zookeeper集群搭建,zookeeper基本管理及kafka单点部署实战

Day07-ES集群加密&#xff0c;kibana的RBAC实战&#xff0c;zookeeper集群搭建&#xff0c;zookeeper基本管理及kafka单点部署实战 0、昨日内容回顾:1、基于nginx的反向代理控制访问kibana2、配置ES集群TSL认证:3、配置kibana连接ES集群4、配置filebeat连接ES集群5、配置logsta…

自建Web网站部署——案例分析

作者主页: 知孤云出岫 目录 作者主页:如何自建一个Web网站一、引言二、需求分析三、技术选型四、开发步骤1. 项目初始化初始化前端初始化后端 2. 前端开发目录结构示例代码App.jsHome.js 3. 后端开发目录结构示例代码app.jsproductRoutes.jsProduct.js 4. 前后端连接安装axio…