【案例分析题–题型说明】:五道题,第一题必答题,后面四选二,共三个题,每个案例分析题需回答三个提问,共计9个提问。考试共计90分钟
对后来复习的同学一点儿备考建议:从2022年11月的综合选择题、案例分析以及论文真题可以看出大概的命题热门点:【5G网络的切片技术】【AI】【鸿蒙操作系统】【区块链技术】【边缘计算】【物联网技术】【大数据的湖仓一体架构】,以后的考试往这个上面押题,中的概率大一些。
2022年的案例分析题目是:
必答题:【软件架构设计与评估】
四选二
【软件系统建模】
【嵌入式系统维护】
【数据库设计】–Redis的缓存一致性问题?在使用布隆过滤器解决Redis缓存失效中的缓存雪崩问题时,说说布隆过滤器的工作原理与特点,有什么缺点?
【边缘计算】
2022年的论文选题是:
【CBSD (基于构件的软件设计模式以及应用 Components Based Software Design)】
【系统维护性评估】
【区块链技术】
【湖仓一体化技术】
【软件架构设计与评估案例分析题】
1,质量属性效用树
性能,可修改性,可用性,安全
2,解释器,管道-过滤,隐式调用 架构风格
解释器风格:输入和输出,构件读取输入的数据流,经过内部处理(计算或增值),产生输出数据流。前一个构件的输出作为后一个构件的输入,前后数据流关联。
过滤器就是构件,连接件就是管道。
隐式调用风格是构件不直接调用一个过程,而是触发或广播一个或多个事件。构件中的过程在一个或多个事件中注册,当某个事件被触发时,系统自动调用在这个事件中注册的所有过程。一个事件的触发就导致了另
一个模块中的过程调用。
平台支持初学者和高级用户两种界面操作模式,用户可以根据自己的情况灵活选择合适的模式:
从灵活性上解释器可以通过灵活的自定义规则实现规则的重组。
从可扩展性上解释器可以包括一个完成解释工作的解释引擎、一个包含将被解释的代码的存储区、一个记录解释引擎当前工作状态的数据结构,以及一个记录源代码被解释执行的进度的数据结构。可以通过新建规则
实现可扩展性。
【软件系统建模案例分析题】
3,用例
4,协作图,顺序图
序列图强调交互的消息时间顺序。
协作图强调接受和发送消息的对象的结构组织,强调通信的方式。
5,对象模型,动态模型,功能模型,请说说它们之间的关联和需求分析?
对象模型描述系统中对象的静态结构、对象之间的关系、属性和操作,主要用对象图来实现。
动态模型描述与时间和操作顺序有关的系统特征,例如,激发事件、事件序列、确定事件先后关系的状态等,主要用状态图来实现。
功能模型描述一个计算如何从输入值得到输出值,它不考虑计算的次序,主要用用例图来实现。
功能模型指发生了什么,动态模型确定什么时候发生,而对象模型确定发生的客体。
对象设计建立基于分析模型的设计模型并考虑实现细节,以上3个模型均可用于需求分析。
【数据库设计案例分析题】
6,反规范化设计
(1)增加冗余列:增加冗余列是指在多个表中具有相同的列,它常用来在查询时避免连接操作。例如:以规范化设计的理念,学生成绩表中不需要字段“姓名”,因为“姓名”字段可以通过学号查询到,但在反规范化设
计中,会将“姓名”字段加入表中。这样查询一个学生的成绩时,不需要与学生表进行连接操作,便可得到对应的“姓名”。
(2) 增加派生列:增加派生列指增加的列可以通过表中其他数据计算生成。它的作用是在查询时减少计算量,从而加快查询速度。例如:订单表中,有商品号、商品单价、采购数量,我们需要订单总价时,可以通过计算得到总价,所以规范化设计的理念是无须在订单表中设计“订单总价”字段。但反规范化则不这样考虑,由于订单总价在每次查询都需要计算,这样会占用系统大量资源,所以在此表中增加派生列“订单总价”
以提高查询效率。
(3) 重新组表:重新组表指如果许多用户需要查看两个表连接出来的结果数据,则把这两个表重新组成一个表来减少连接而提高性能。
(4)分割表
有时对表做分割可以提高性能。表分割有两种方式。
水平分割:根据一列或多列数据的值把数据行放到两个独立的表中。水平分割通常在下面的情况下使用。
情况 1:表很大,分割后可以降低在查询时需要读的数据和索引1的页数,同时也降低了索引的层数,提高查询效率。
情况 2:表中的数据本来就有独立性,例如表中分别记录各个地区的数据或不同时期的数据,特别是有些数据常用,而另外一些数据不常用。
情況 3:需要把数据存放到多个介质上。
垂直分割:把主码和一些列放到一个表,然后把主码和另外的列放到另一个表中。如果一个表中某些列常用,而另外一些列不常用,则可以采用垂直分割,另外垂直分割可以使得数据行变小,一个数据页就能存放更多的数据,在查询时就会减少 I/O 次数。其缺点是需要管理冗余列,查询所有数据需要连接操作。
本题中用到了重新组表得方式。
7,数据不一致的问题的三种常用方法
参考答案
批处理维护、应用逻辑和触发器
8,Redis MySQL数据实时同步的常见方案
①引用Mysql的事务,因为事务有一致性保证,事务提交成功后再更新缓存
②在缓存里面引用一些访问控制位,数据库数据变化后,同步变更对应的访问控制位,然后从缓存查询时,率先判断该访问控制位,有变化就从数据库查,无变化直接从缓存返回数据
③通过数据库中间件产品保证缓存和数据库数据时时同步
【Web系统架构设计案例分析题】
9,基于云平台的好处
参考答案
在网关管理方面,基于云平台的智能家居管理系统可以将分散的智能家居网关数据集中起来,实现对智能家居网关的远程高效管理。
在数据处理方面,云端服务器对智能家居网数据进行备份存储,当家庭网关由于故障等原因导致数据丢失时,可以通过云端管理系统对网关数据进行恢复,从而提高数据的容灾性。
在系统性能方面,基于云服务平台的智能家居管理系统将数据信息存储在云端,减少了数据请求时间,提高了通信效率。
10,补充系统架构设计方案
11,比较TCP 、UDP 通信协议的不同,采用哪种?
TCP | UDP |
面向连接 | 无连接 |
面向字节流 | 面向报文 |
无差错,不丢失,不重复,按序到达 | 尽最大努力交付 |
可靠的 | 不可靠连接 |
全双工 | |
差错检验 | |
拥塞控制 | |
滑动窗口机制 |
【面向对象系统建模案例分析题】
【问题1】
创建型模式主要用于创建对象,为设计类实例化新对象提供指南。
结构型模式主要用于处理类或对象的组合,对类如何设计以形成更大的结构提供指南。
行为型模式主要用于描述类或对象的交互以及职责的分配,对类之间交互以及分配责任的方式提供指南。
【问题2】 设计模式分类
创建型模式:构造器模式、原型模式。
结构型模式:适配器模式、外观模式、代理模式。
行为型模式:命令模式、中介模式、状态模式和策略模式。
【问题3】
(1)策略模式
解決方案:在具有公共接口的独立类中定义每个计算。可以利用该模式创建各种促销类,它们从同一个超类继承。每个类都有相同名称的标准接口方法,用手根据订单编号计算将要折扣的金额总数。计算每个
促销的内部代码对促销类来说完全不同。
(②)适配器模式
解決方案:增加一个类作为适配器,转换类的接口到客户端类期望的另一个接口。实现一个适配器类,这个类为系统的其他部分提供了一个不变的方法供调用,为了集成不同商品供应商提供的税率计算类,编写一个适配器类的子类,包含调用购买类所需的代码。该子类将系统的调用映射到某个供应商的税率计算类。如果要更换供应商,那么只需要写一个新的适配器子类,其他保持不变。
【软件架构评估案例分析题】
质量属性效用树:
性能,可修改性,可用性,安全
风险点:系统架构风险是指架构设计中潜在的、存在问题的架构决策所带来的隐患。
(i)现有架构设计中的支付部分与第三方支付平台紧耦合,当系统需要支持新的支付平台时,这种设计会导致支付部分代码的修改,影响系统的可修改性;【描述的是风险点】
敏感点:是为了实现某种特定质量属性,一个或多个系统组件所具有的特性。
(g)对交易请求处理时间的要求将影响系统数据传输协议和交易处理过程的设计;【描述的是敏感点】
权衡点:是影响多个质量属性,并对多个质量属性来说都是敏感点的系统属性。
(f)系统拟采用新的加密算法,这会提高系统安全性,但同时会降低系统的性能;【描述的是权衡点】
【软件架构风格案例分析题】
【问题1】
软件架构风格是指描述特定软件系统组织方式的惯用模式。组织方式描述了系统的组成构件和这些构件的组织方式,惯用模式则反映众多系统共有的结构和语义
以数据集成为中心的架构风格的好处:(对比以管道-过滤器的架构风格)
从集成开发环境与用户的交互方式看,用户通常采用交互式的方式对脚本语言进行编辑、解释执行与调试。在这种情况下,采用以数据存储为中心的架构风格能够很好地支持交互式数据处理,而管道一过滤器架构风格则对用户的交互式数据处理支持有限。
从集成开发环境的扩展性来看,系统核心需求要求实现各种编辑、语法检查、解释执行等多种功能的灵活组织、配置与替换。在这种情况下,采用以数据存储为中心的架构风格,以数据格式解耦各种功能之间的依赖关系,并可以灵活定义功能之问的逻辑顺序。管道一过滤器架构风格同样以数据格式解耦数据处理过程之问的依赖关系,但其在数据处理逻辑关系的灵活定义方面较差。
从集成开发环境的数据管理来看,集成开发环境需要支持脚本语言、语法树(用于检查语法错误)、可视化模型、调试信息等多种数据类型,并需要支持数据格式的转换。以数据存储为中心的架构将数据存储在统一的中心存储器中,中心存储器能够表示多种数据格式,并能够为数据格式转换提供各种支持。管道一过滤器架构风格通常只能支持有限度的数据格式,并且在数据格式转换方面的灵活性较差。
面对需求采用各种架构风格?描述后续的设计过程?
【问题2】
为了满足需求(2),应该采用解釋器架构风格。
具体来说,需要:
①为可视化编程元素及其拖拽关系定义某种语言,并描述其语法与语义;
②编写解釋器对该语言进行解释;
③)生成对应的脚本语言程序。
为了满足需求(3),应该采用隐式调用架构风格。
具体来说,首先需要定义"断点在调试过程中命中”这一事件,并实现当断点命中后的屏幕定位函数。集成开发环境维护—个事件注册表结构,将该事件与屏幕定位函数关联起来形成注册表中的一个记录项。在调试过程中,集成开发环境负责监听各种事件,当“断点在调试过程中命中”这一事件发生时,集成开发环境查找事件注册表,找到并调用屏幕定位函数,从而实现脚本语言编辑界面与调试代码的自动定位。
【遗留系统业务开发案例分析题】
遗留系统的继承策略
(1) 淘汰策略:遗留系统的技术含量低,具有较低的业务价值,因此需要全面重新开发新系统以替代遗留系统;一般是企业的业务发生了根本变化,遗留系统已经基本上不再适应企业运作的需要;或者是遗留系统的维护人员流失,维护文档资料丢失。评价后发现,开发新系统比维护与改造1日系统从成本上更经济合算。
(2) 继承策略:遗留系统技术含量低,已经满足企业运作的功能或性能要求,但有较高的业务价值,目前企业的业务尚需依赖该還留系统。因此,开发系统替代遷留系统时,需要完全兼容遗留系统的功能模型和数据模型。
数据迁移准备工作的内容
【问题2】(5分)
(1) 待迁移数据源的详细说明,包括数据的存放方式、数据量和数据的时间跨度。
(2) 建立新旧系统数据库的数据字典,对现有系统的历史数据进行质量分析,以及新旧系统数据结构的差异分析。
(3) 新旧系统代码数据的差异分析。
(4) 建立新旧系统数据库表的映射关系,对无法映射字段的处理方法。
(5) 开发或购买、部署ETL工具。
(6) 编写数据转换的测试计划和校验程序。
(7) 制定数据转换的应急措施。
REST风格设计原则(对比RPC设计原则)
1、REST 相对于 RPC 更为轻量化,RPC 服务提供方与调用方接口依赖太高,会导致编码格式的复杂性,而REST 服务提供方和调用方的依赖只是依靠定义好的规则,不存依赖问题。
2、REST 服务很好的实现了跨平台,任何一个语言(Javascript、 Vue、HTML5、Bootstap 等)的调用方都可以根据接口定义来实现,而 RPC 服务对平台有要求限制,在某些情况下很难实现复用。
3、Rest 完全通过 HTTP 协议实现的,使用 HTTP协议处理数据通信。所以 REST 架构对资源的操作就包括了 HTTP 协议中提供的 GET、POST、PUT、PATCH、DELETE、COPY、HEAD等众多操作方法。
REST风格的5条关键原则包括:
(1) 网络上的所有事物都被抽象为资源。
(2)每个资源对应一个唯一的资源标识。
(3) 通过通用的连接件接口对资源进行操作。
(4)对资源的各种操作不会改变资源标识。
(5)所有的操作都是无状态的。
【嵌入式系统案例分析题】
嵌入式系统的主要特点
【问题2】(5分)
(1) 系统专用性强。嵌入式系统是针对具体应用的专门系统。它的个性化很强,软件和硬件结合紧密。
一般要针对硬件进行软件的开发和移植,根据硬件的变化和增减对软件进行修改。
(2) 系统实时性强。许多嵌入式系统对外部事件要求在限定的时间内及时作出响应,具有实时性。根据实时性的强弱,通常将嵌入式系统分为实时嵌入式系统和非实时嵌入式系统,其中大部分为实施嵌入式系统。
(3) 软硬件依赖性强。嵌入式系统的专用性决定了其软硬件的互相依赖性很强,两者必须协同设计,以达到共同实现预定功能的目的,并满足性能、成本和可靠性等方面的严格要求。
(4)处理器专用。嵌入式系统的处理器一般是为某一特定目的和应用而专门设计的。通常具备功耗低、体积小和集成度高等特点,能够将许多在通用计算机上需要由板卡完成的任务和功能集成到芯片内部,从而有利于嵌入式系统的小型化和移动能力的增强。
(5) 多种技术紧密结合。嵌入式系统通常是计算机技术、半导体技术、电力电子技术、机械技术与各行业的具体应用相结合的产物。通用计算机技术也离不开这些技术,但它们相互结合的紧密程度不及嵌入式系统。
(6) 系统透明性。嵌入式系统在形态上与通用计算机系统差距甚大。它的输入设备往往不是常见的鼠标
(7) 系统资源受限。嵌入式系统为了达到结构紧凑、高可靠性和低成本的目的,其存储容量、1/O设备的数量和处理能力都比较有限。
【数据库案例分析】
该系统投入使用后,初期用户数量少,系统运行平稳。6个月后,用户数出现了爆炸式增长,系统暴露出诸多问题,集中表现在:
1.用户执行读写操作时,响应时问均变得很慢;
2.随着系统功能的扩充,原有数据格式发生变化,又出现新的数据格式,维护困难;
3.数据容量很快超过系统原有的设计上限,数据库扩容困难;
4.软件系统不断出现宕机,整个系统可用性较差。
分析问题产生的原因:
其原因主要是:
(1)用户响应时间慢。大型社交网络系统要根据用户个性化信息来实时生成动态页面和提供动态信息,所以基本上无法使用动态页面静态化技术,因此数据库并发负载非常高,往往要达到每秒上万次读写请求。关系数据库应付上万次SQL查询还勉强可以,但是应付上万次SQL写数据请求,硬盘1/0就已经无法承受了。特别是涉及到多表连接操作,会导致响应变慢。
(2)数据格式变化。大型社交网络系统随着用户的使用,会不断地增加新的功能,导致原有数据格式发生变化,甚至出现新的数据格式。但关系数据库中采用元组方式组织数据,难以使用新型数据格式,难以维护。
(3)数据容量超过设计上限。对于大型社交网络系统,往往会在很短时间内产生海量数据。关系数据库多采用中央数据存储,使得数据容量受限于 前期设计的上限,很难实现数据容量的横向扩展。
(4)系统可用性差:关系数据库采用中央数据存储,容易成为系统的性能瓶颈,单点故障很容易导致系统崩溃,负载过高往往导致系统出现宕机现象。
解决办法:NoSQL数据库
【问题2】 答案:
针对问题(1),NoSQL数据库支持高并发数据访问,性能较高。
针对问题(2),NoSQL数据库的数据存储结构松散,能够灵活支持多种类型的数据格式。
针对问题(3),NoSQL数据库能够支持海量数据的存储,且易于横向扩展。
针对问题(4),NoSQL数据库基于分布式数据存储,不存在单点故障和性能瓶颈,系统可用性高。
该系统采用NOSQL数据库时可能存在的问题有:
【问题3】答案:
(1) NoSQL数据库的现有产品不够成熟,大多数产品处于初创期。
(2)NoSQL数据库并未形成一定的标准,产品种类繁多,缺乏官方支持。
(3NoSQL数据库 不提供对SQL的支持,学习和应用迁移成本较高。
(4)NoSQL数据库支持的特性不够丰富,现有产品提供的功能比较有限。
【分布式系统设计案例题】
分布式中间件优点:
(1)构件管理支持:现有分布式基础设施一般通过构件容器为构件提供基本的运行环境;具体功能一般包括管理构件的实例及其生命周期、管理构件的元信息等。
(2)互操作支持:现有分布式基础设施均提供了 高层通信协议以屏蔽节点的物理特性以及各节点在处理器、操作系统、程序设计语言等方面的异构性;基于互操作支持,开发人员在开发与调用分布式对象时,均不需自己编写处理底层通信的代码。
(3)公共服务支持:现有分布式基础设施通常将针对分布式软件的通用支持集成于一身,以公共服务的形式提供给应用程序;其提供的常见公共服务包括命名服务、事务服务、安全服务、持久性 服务等。
分布式对象调用的详细步骤:
【问题3】答案:
(1)存根/桩 (2)框架
或(1)代理 (2)存根
一次远程调用的过程如下:
①客户程序将调用请求发送给客户端桩,对于客户程序来说,桩就是服务程序在客户端的代理。
②客户端桩负责将远程调用请求进行编组并发送给通信总线。
③调用请求经通信总线传送到服务端框架。
④服务端框架将调用请求解组并分派给真正的远程对象实现(服务程序)。
⑤服务程序完成客户端的调用请求,将结果返回给服务端框架。
⑥服务端框架将调用结果编组并发送给通信总线。
⑦调用结果经通信总线传送到客户端桩。
⑧客户端桩将调用结果解组并返回给客户程序,客户程序得到调用结果。
【嵌入式软件架构案例分析题】
GOA(General Opened Architecture)
通用开放架构开放架构应具有以下4个基本特点:
①可移植性。各种计算机应用系统可在具有开放架构特性的各种计算机系统间进行移植,不论这些计算机是否同种型号、同种机型。
②可互操作性。如计算机网络中的各结点机都具有开放架构的特性,则该网上各结点机问可相互操作和资源共享。
③可剪裁性。如某个计算机系统是具有开放架构特性的,则在该系统的低档机上运行的应用系统应能在高档机上运行,原在高档机上运行的应用系统经剪裁后也可在低档机上运行。
④易获得性。在具有开放架构特性的机器上所运行的软件环境易于从多方获得,不受某个来源所控制。
【Web MVC】
MVC模式的作用:
(1)允许多种界面的扩展,视图的变更与增加,与模型无关;
(2)易于维护,控制器和视图随着模型的扩展而扩展,只要保持公共接口,控制器和视图的旧版本可以继续使用;
(3)可支持功能强大的用户界面。
【问题2】
从设计模式的角度来说,整个XML表现层解析的机制是一种策路模式。在调用显示GUI时,不是直接调用特定的表现技术的API,而是装载GUI对应的XML配置文件,然后根据特定的表现技术的解析器解析XML,得到GUI视图实例对象。
对于GUI开发人员来说,GUI视图只需要维护一套XML文件即可
【信息安全】
【问题1】
(1)基于口令的认证方式实现简单,但由于口令复杂度及管理方面的原因,易受到认证攻击;而在基于公钥体系的认证方式中,由于其密钥机制的复杂性,同时在认证过程中私钥不在网络上传输,因此可以有效防止认证攻击,与基于口令的认证方式相比更为安全。
(2)按照需求描述,在完成用户身份鉴别后,需依据用户身份进一步对业务数据进行安全保护,且受保护数据中包含用户私有的终端机数据文件,在基于口令的认证方式中,用户口令为用户和认证服务器共享,没有用户独有的直接秘密信息,而在基于公钥的认证方式中,可基于用户私钥对私有数据进行加密保护,实现更加简便。
(③)基于公钥体系的认证方式协议和计算更加复杂,因此其计算复杂度要高于基于口令的认证方式,但业务环境的总用户数在100人以内,用户规模不大,运行环境又为局域网环境,因此基于公钥体系的认证方式可满足平台效率要求。
对称加密?流加密?
【问题2】
答案:
应采用流加密方式。因为需求中提及“单个敏感数据文件可能会达到数百兆的规模”,文件数据量较大,使用流加密方式可以获得更高的加解密效率。
数据加密与解密过程如下:
其加密过程为:首先生成一个对称密钥,使用用户公钥加密这个对称密钥后存储在文件头,然后用生成的对称密钥加密文件数据存储;
其解密过程为:用户首先使用自己的私钥解密被加密的对称密钥,再用该对称密钥解密出数据原文。
【问题3】
目前数据库管理系统提供的基本数据加密支持主要有以下两种:
(1加解密APl:数据库管理系统提供可在SQL,语句中调用的加解密API,应用可以利用这些API构建自己的基础架构,对数据进行加密保护。
(2)透明加密:安全管理员为数据库敏感宇段选择加密方式及密钥强度,应用访问受保护数据时只需使用口令打开或关闭密钥表,对数据的加密和解密由数据库管理系统自动完成。加解密APl方式的灵活性强,但构建和管理复杂;而透明加密方式管理简单,应用程序负担轻,但灵活性较差。用户要求尽可能减少安全管理与应用程序的负担,因此应选择透明加密方式。
【软件架构】
数据流图和流程图的区别
数据流图作为一种图形化工具,用来说明业务处理过程、 系统边界内所包含的功能和系统中的数据流。
流程图以图形化的方式展示应用程序从数据输入开始到获得输出为止的逻辑过程,描述处理过程的控制流。
两者的区别主要包括:
1. 数据流图中的处理过程可并行;流程图在某个时间点只能处于一个处理过程。
2. 数据流图展现系统的数据流;流程图展现系统的控制流。
3. 数据流图展现全局的处理过程,过程之问遵循不同的计时标准;流程图中处理过程遵循一致的计时标准。
4. 数据流图适用于系统分析中的逻辑建模阶段;流程图适用于系统设计中的物理建模阶段
高质量数据流图设计时应考虑的三个原则:
(1) 复杂性最小化原则。DFD分层结构就是把信息划分为小的且相对独立的一大批子集例子,这样就可以单独考查每一个DFD。如果要了解某个过程更加详细的信息,可以跳转到该过程的下一层;如果要知道一个DFD如何与其他DFD相关联,可以跳转到上一层的DFD进行考查。
(2)接口最小化原则。接口最小化是复杂性最小化的一种具体规则,在设计模型时,应使得模型中各个元素之间的接口数或连接数最小化。
(3) 数据流一致性原则。一个过程和它的过程分解在数据流内容中是否有差别 是否存在有数据流出但没有相应的数据流入的加工 是否存在有数据流入但没有相应的数据流出的加工。
【应用系统开发架构】
Java企业级应用框架一般被划分为3个层次,请用150字以内的文字说明都有哪3个层次?功能分别是什么?
(1) 表现层。对应视图(View)。用于为从客户端发来的请求服务的对象及其行为,用于展现数据以及负责view组件实现模式、组件在View品示粒度、页面跳转,以及事件触发等功能。
(2)业务逻辑组件层。对应控制器(Controller)。用于支持由表现层发起的(某些情况下也可能由持久层直接
发起)业务数据的逻辑处理。
(3) 持久层。实现持久化存储,对应模型(Model)。用于支持外部资源通信。例如,与数据库交互数据等。
请用200字以内的文字叙述Struts、Spring和Hibernate开源框架特点和结合方式。
(1) Struts框架的组件在页面中品示的粗粒度,以及框架类的限制在很多情况下会表现得过于死板,给表示层的开发会带来一些额外的代码开销。
(2) Spring框架采用依赖注入使得它可以很容易地实现Bean的装配,提供了简洁的AOP并据此实现事务管理等,但是它不具备处理应用分布式的能力。
(3) Hibernate是一个开源的O/R Mapping框架,它对JDBC进行了非常轻量级的对象封装,可以应用在任何使用JDBC的场合,可以在应用EJB的J2EE框架中取代CMP,完成数据持久化的重任。Hibernate使用Java反射机制而不是字节码增强程序来实现透明性;使用简单;映射的灵活性很出色,它支持各种关系数据库,从一对—(1:1)到多对多(m:n)的各种复杂关系。其缺点是限制所使用的对象模型(例如,一个持久性类不能映射到多个表)。
请用200字以内的文字说明基于Struts、Spring和Hibernate的轻量级框架与基于EJB的重量级框架解决问题的侧重点有什么不同?
轻量级框架侧重于减小开发的复杂度,相应的它的处理能力便有所减弱(如事务功能弱、不具备分布式处理能力),比较适用于开发中小型企业应用。
重量级框架的EJB框架则强调高可伸缩性,适用于开发大型企业应用。在EJB体系结构中,一切与基础结构服务相关的问题和底层分配问题都由应用程序容器或服务器来处理,且EJB容器通过减少数据库访问次数及分布式处理等方式提供了专门的系统性能解决方案,能够充分解决系统性能问题。
【软件体系结构风格】
结合你的系统架构经验,请用400字以内的文字简要讨论C/S和B/S两种架构风格各自的优点和缺点。
【问题1](8分)
C/S架构风格的优点:
①客户机应用程序与服务器程序分离,二者的开发既可以分开进行,也可以同时进行;
②技术成熟,允许网络分布操作,交互性强,具有安全的存取模式;
③/网络压力小,响应速度快,有利于处理大量数据;
④模型思想简单,易于人们理解和接受等
C/S架构风格的缺点:
①客户机与服务器的通信依赖于网络,服务器的负荷过重:
②无法实现快速部署和安装,维护工作量大,开级困难;
③开发成本较高,客户端程序设计复杂,灵活性差;
④用户界面风格不一,软件移植和数据集成困难;
⑤数据库的安全性因客户机程序直接访问而降低等
B/S架构风格的优点:
①易于部署、维护和升级;
②具有良好的开放性和可扩充性,可以应用在广域网上,方便了信息的全球传输、查询和发布;
③可跨平台操作,无须开发客户端软件;
④通过JDBC等数据库连接接口,提高了动态交互性、服务器的通用性与可移植性等。
B/S架构风格的缺点:
①数据的动态交互性不强,不利于在线事务处理(OLTP)/应用;
②数据查询等响应速度较慢;
③系统的安全性较难以控制等。
结合你的系统架构经验,请用600字内的文字简要说明该工程项目采用C/S和B/S相结合的混合架构风格的设计要点及其优点。
【问题2】(7分)
①在该企业总部局域网上部署财务Web服务器及其相关的数据库服务器,两种服务器之问采用C/S架构:总部局域网上提供C/S和B/S两种井存的架构凤格,根据不同的应用需求和客户需求进行灵活的选择。
②若项目资金充裕,则在各分支机构局域网中也采用类似于企业总部的部署风格;若项目资金不足,则在各分支机构财务部门局域网中采C/S架构,部署应用服务器及相关的数据库服务器,然后将集中处理的后期财务数据通过VPN技术上传至总部局域网的相应服务器中。
③在外出差的员工和各分支机构的普通员工通过VPN技术访问企业总部局域网上的Web服务器,查看相关的信息。
采用C/S和B/S混合架构的优点如下(包含但不限于以下内容):
1、充分发挥了B/S与C/S体系结构的优势,弥补了二者的不足。
2、客户请求和信息发布采B/S架构,保持了客户端的优点,客户机只利用浏览器即可完成所有的应用需求。
3、数据库的请求和响应操作采C/S架构,通过在Web应用程序和数据库之间建立ODBC/JDBC连接来完成数据库的连接和请求响应,能完成大量数据的批量录入请求。
4、系统的部署、维护及数据更新方便,不存在完全采用C/S结构带来的客户端维护工作量大等缺点。
5、将服务器端划分为Web服务器和Web应用程序两部分。Web应用程序采用组件技术实现三层体系结构中的商业逻辑部分,达到封装源代码、保护知识产权的目的。
6、对原基于C/S架构的应用,只需开发用于发布的Web界面,就能升级到这种混合架构系统中,从而最大限度地保护了原有投资。
为保证各分支机构可靠、高效地向数据中心汇总业务数据,避免单点故障,对该企业总部数据中心架构设计时,应该采用哪些相关的技术?
【问题3】(9分)
包含但不限于以下内容:
①采用双链路连接internet的备份方式。
②对数据中心的数据库服务器采用双机冗余热备方式(或多机集群Cluster和数据库并行处理技术等)。
③对存储设备采用RAID10级别(或全冗余的SAN结构,或全冗余的存储结构)等。
–end–