Bootstrap

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

目录

九、中间件

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):用于发送点对点消息的服务的
                。。。。。等等

;