题干:
试题二
阅读以下关于软件系统设计的叙述,在答题纸上回答问题1至问题3.
【说明】
某软件企业受该省教育部门委托建设高校数字化教育教学资源共享平台,实现以众筹众创的方式组织省内普通高校联合开展教育教学资源内容建设,实现全省优质教学资源整合和共享。该资源共享平台的主要功能模块包括:
(1)统一身份认证模块:提供统一的认证入口,为平台其他核心业务模块提供用户管理、身份认证、权限分级和单点登录等功能;
(2) 共享资源管理模块:提供教学资源申报流程服务,包括了资源申报、分类定制、资料上传、资源审核和资源发布等功能;
(3)共享资源展示模块:提供教育教学共享资源的展示服务,包括资源导航、视频点播、资源检索、分类展示、资源评价和推荐等功能;
(4) 资源元模型管理模块:依据资源类型提供共享资源的描述属性、内容属性和展示属性,包括共享资源统一标准和规范、资源加工和在线编辑工具、数字水印和模板定制等功能;
(5) 系统综合管理模块:提供系统管理和维护服务,包括系统配置、数据备份恢复、资源导入导出和统计分析等功能。
项目组经过分析和讨论,决定采用基于Java EE的MVC 模式设计资源共享平台的软件架构,如图2-1所示。
图2-1 资源共享平台软件架构
【问题1】(9 分)
MVC架构中包含哪三种元素,它们的作用分别是什么?请根据图 2-1 所示架构将JavaEE 中 JSP、Servlet、Service、JavaBean、DAO 五种构件分别填入空 (1)~(5) 所示位置。
参考答案:(1)JSP (2)Servlet (3)Service (4)JavaBean (5)DAO
【问题2】(6 分)
项目组架构师王工提出在图2-1所示架构设计中加入EJB构件,采用企业级JavaEE架构开发资源共享平台。请说明EJB构件中的Bean (构件)分为哪三种类型,每种类型Bean的职责是什么。
参考答案:
EJB中的Bean分三种类型:Session Bean、Entity Beans 和 Message-Driven Bean。
Session Bean的职责是:维护一个短暂的会话
Entity Beans 的职责是:维护一行持久稳固的数据
Message-Driven Bean的职责是:异步接受消息
【问题3】 (10分)
如果采用王工提出的企业 JavaEE架构,请说明下列(a)-(e) 所给出的业务功能构件中,有状态和无状态构件分别包括哪些。
(a)Identification Bean (身份认证构件)
(b)ResPublish Bean(资源发布构件)
(c)ResRetrieval Bean(资源检索构件)
(d)OnlineEdit Bean(在线编辑构件)
(e)Statistics Bean(统计分析构件)
参考答案
有状态:(a)、(d)
无状态:(b)、(c)、(e)
本题考点 一,MVC架构包含:视图、控制器、模型
视图(View):视图是用户看到并与之交互的界面。视图向用户显示相关的数据,并能接收用户的输入数据,但是它并不进行任何实际的业务处理。
控制器(Controller):控制器接受用户的输入并调用模型和视图去完成用户的需求。该部分是用户界面与Model的接口。一方面它解释来自于视图的输入,将其解释成为系统能够理解的对象,同时它也识别用户动作,并将其解释为对模型特定方法的调用;另一方面,它处理来自于模型的事件和模型逻辑执行的结果,调用适当的视图为用户提供反馈。
模型(Model):模型是应用程序的主体部分。模型表示业务数据和业务逻辑。一个模型能为多个视图提供数据。
二,应用的无状态和有状态
什么是有状态和无状态 ?
场景:
当用户登录时,将session或者token传给应用服务器管理,应用服务器里持有用户的上下文信息,这时应用服务器是有状态的 .同样用户登陆时,我们将session或token存储在第三方的一些服务或者中间件上,比如存储在redis上。此时应用服务器不保存上下文信息,只负责对用户的每次请求进行处理,然后返回处理的结果即可,这时应用服务器是无状态的.
无状态和有状态的优缺点:
有状态
缺点:服务间数据需要同步 主从同步 副本同步等 扩容复杂 双机热备等 宕机容易丢失数据
优点: 不需要额外的持久存储;通常,为低延时优化。
无状态
优点:服务间数据不需要同步 扩容快速 热备冷备切换容易 容易水平扩展。
缺点: 需要额外的持久存储
构建无状态:
将内存中的会话数据,如session,存放在第三方的一些服务或者中间件上,如使用redis做缓存将业务数据放在统一的数据库中,如mysql数据库,如果性能扛不住,可以进行系统拆分,功能拆分,读写拆分,aop拆分,模块拆分,使用分布式数据库对于文件,照片之类的数据,存放在统一的对象存储里面,通过CDN进行预加载对于非结构化数据,可以存在在统一的搜索引擎里面,例如solr