开源框架范文

2024-05-17

开源框架范文(精选7篇)

开源框架 第1篇

EJB的体系结构是Jave EE的基础和核心, Java EE定义了整个标准的应用开发体系结构和一个部署环境, 基于EJB的框架一度成为人们开发Java企业应用的首选。但是随着Java开源项目阵营的不断发展壮大, 一些开源的框架也被越来越广泛地引入到Java企业应用的开发中来。于是有的人就提出这样一种说法:我们不用EJB也能做出很好的企业级应用, 比如采用开源的Struts+Spring+Hibernate框架。这种观点并不完全准确。本文主要对目前企业应用这两种类型的流行框架进行细节比较, 最后针对Java企业应用的系统框架选择提出作者的观点。

一、EJB技术

EJB 3.0中的组件分为三个主要类别:会话Bean、消息驱动Bean和实体Bean。根据Bean处理状态、事务和持久性的方式这些类别还可以进一步细分, 如会话Bean可分为无状态会话Bean和有状态会话Bean;实体Bean可分为CMP (Container Mangement Persitence) 方式的实体Bean和BMP (Bean Mangement Persitence) 方式的实体Bean。

会话Bean用于实现业务逻辑, 它可以是有状态的, 也可以是无状态的。每当客户端请求时, 容器就会选择一个会话Bean来为客户端服务。消息驱动Bean是EJB中引入的新的企业Bean, 它基于JMS消息, 只能接收客户端发送的JMS消息然后处理。MDB实际上是一个异步的无状态会话Bean, 客户端调用MDB后无需等待, 立刻返回, MDB将异步处理客户请求。实体Bean是域模型对象, 用于实现O/R映射, 负责将数据库中的表记录映射为内存中的实体对象。创建一个实体Bean对象相当于新建一条记录, 删除一个实体Bean会同时从数据库中删除对应记录, 修改一个实体Bean时, 容器会自动将实体Bean的状态和数据库同步。

二、开源框架

Java EE的体系结构有三层:表示层、业务逻辑层和数据持久层。开发一个SSH (Struts, Hibernate, Spring) 项目, 要遵循这三层模式。分别用SSH实现这样的目的:用Hibernate来完成数据的持久层应用, 用Spring的Bean来管理组件 (主要是DAO、业务逻辑和Struts的Action) , 而用Struts来完成页面的控制跳转。

我们将配置持久层和用Hibernate为我们的领域对象定义“对象-关系”映射。然后, 我们将定义和配置我们的业务对象。在有了这些组件后, 我们就能讨论用Spring把这些层连在一起。最后, 我们将提供一个表现层, 它知道怎样和业务服务层交流和知道怎样处理从其它层产生的异常。

三、EJB技术与开源框架比较

设计和性能是实际框架选择的两个基本点, 善于平衡才是框架选择的主要宗旨。开源框架和EJB解决问题的侧重点是不同的。

开源框架侧重于减小开发的复杂度, 相应的它的处理能力便有所减弱 (如事务功能弱、不具备分布式处理能力) , 因此开源框架就比较适用于开发中小型企业应用。开源社区提供了良好的设计和许多快速构建工具以及大量现成可供参考的开源代码, 这有利于项目的快速开发。例如目前Tomcat+Spring+Hibernate已经成为许多开发者开发J2EE中小型企业应用偏爱的一种架构选择。

EJB框架则强调高可伸缩性, 适合开发大型企业应用。在EJB体系结构中, 一切与基础结构服务相关的问题和底层分配问题都由应用程序容器或服务器来处理, 且EJB容器通过减少数据库访问次数以及分布式处理等方式提供了专门的系统性能解决方案, 能够充分解决系统性能问题。

总结

通过以上的分析, 我们可以看出, 开源框架的产生并非是对EJB的否定, 甚至在某种程度上可以说二者是互补的。开源框架在努力发展以开发具有更强大, 功能更完备的企业应用;而EJB3.0则在努力简化J2EE的使用以使得EJB不仅仅是擅长处理大型企业系统, 也利用开发中小型系统。对于大型企业应用以及将来可能涉及到能力扩展的中小型应用采用结合使用开源框架和EJB也不失为一种较好的解决方案。

因此针对目前百花齐放的Java企业应用的系统框架, 选择时不可盲目的追求流行, 首先需要明确所要实现的应用系统的系统处理能力需求, 然后在熟悉比较各种框架细节的基础上从设计以及开发效率方面进行考虑。

摘要:EJB3.0是JavaEE的重头戏之一, 但是有人认为:我们不用EJB也能做出很好的企业级应用, 比如采用开源的Struts+Spring+Hibernate框架。针对该观点, 本文中将EJB和开源框架进行了简单的比较。

关键词:EJB,开源框架,Struts,Spring,Hibernate

参考文献

[1]詹因强、张礼平:《J2EE平台上运用设计模式对系统重构》, 《计算机工程与应用], 2004 (22) 。

[2]许晓曼、唐文忠:《Java企业应用系统框架的比较与选择》, 《计算机与信息技术], 2006 (09) 。

[3]王鹏飞、贺智明:《三种流行开源软件在MVC开发中的应用》, 《江西理工大学学报》, 2006 (06) 。

[4]周彩兰、李素芬、孙琳:《Hibernate在Spring中的研究与应用》, 《计算机技术与发展》, 2006 (10) 。

基于开源框架的Web应用架构设计 第2篇

基于Web的企业应用系统改变了企业的生产模式、人们的工作方式及管理理念, 显著提高了企业的经济效益和社会效益[1]。以前系统逐个定制开发的方式已无法满足企业快速发展的需求, 需要企业应用框架解决这一问题。这一框架包含从大量的企业应用系统中精选出“不变项”, 因此具有很强的实用性和适用性[2]。开发人员在面对不同的需求时都可以基于此框架进行系统开发, 开发过程只需关注个性化业务功能的实现, 而一些通用的基础功能和服务都可以从框架本身得到复用, 这样便大大节省了项目的开发成本, 缩短了项目开发周期, 降低了项目管理的风险和难度, 提升了产品质量, 从而有利于增强软件企业市场竞争力。

本文在目前流行的开源框架基础上, 设计了一个适合信息管理类系统开发的高效、稳定、安全、灵活、易于扩展和维护简单的Web应用基础框架, 内置权限管理、机构管理、区域管理等基础模块及缓存、日志、定时任务、Excel导入导出等基础功能, 采用了Spring、Hibernate、BootStrap、Ehcache、Log4j、Shiro、Quartz、JSP等相关技术。

1 框架需求分析

企业应用系统是一组处理企业信息、为企业内部和企业外部客户提供增值服务的系统。典型的企业应用系统包括企业资源计划 (ERP) 系统、办公自动化 (OA) 系统、电子商务 (EC) 系统、财务系统、客户关系管理 (CRM) 系统等。通过对上述系统具体应用实例分析, 提炼出它们的共性需求[3]作为本框架的需求, 主要包括用户登录模块、区域管理模块、机构管理模块、用户管理模块、角色管理模块、菜单管理模块、日志管理模块以及其它基础组件。

2 框架设计

为了满足框架的上述需求, 在框架设计阶段需要确定架构模式、完成技术选型、接口设计等工作。

本框架采用MVC架构模式, 模型层分为业务层和持久层, 共分为4层, 分别为持久层、业务层、控制层、表示层 (见图1) 。分层结构满足了系统的安全性、重用性及可维护性要求。它把请求分派、业务逻辑处理、用户界面展示及数据访问分开, 使开发人员可以专注于应用系统核心业务逻辑的分析、设计与开发, 实现了“高内聚、低耦合”的设计目标, 把问题从不同层面划分开来解决, 易于控制、扩展, 也方便资源分配。

开发过程中, 系统开发人员借助控制层和持久层功能, 只需专注于业务逻辑的实现, 极大简化了应用系统的开发, 提高了开发效率。

2.1 持久层设计

本框架持久层采用Hibernate+Spring JDBC, Hibernate在开发效率及数据库移植性上有一定的优势, Spring JDBC在数据库执行效率上有明显的优势, 两种持久层框架技术混合使用, 可扬长避短。本框架在设计时封装了通用DAO接口, 引入泛型, 并为每个实体类设计专门的DAO, 本框架DAO的设计类图如图2所示。

由于一般的实体类对应DAO都必须拥有CRUD操作, 为了避免在每个实体DAO接口中重复定义这些方法, 提供了一个通用的DAO接口IBaseDao。同时, 为了避免对实体进行查询操作时指定实体类型及强制进行类型转换, 在接口中引入了泛型。实体DAO接口通过继承IBaseDao, 并指定泛型对应的实体类, 就拥有了各种通用的数据操作能力。如果实体DAO的数据操作仅是一些常见的CRUD操作, 可以不用编写任何代码, DAO类的编码生产率得到了极大的提高。

2.2 业务层设计

在处理业务层与持久层之间的交互时, 采用了面向接口编程和Spring的依赖注入原理[4]。服务类中引用了一个实体类DAO接口, 使业务层根据需要选择不同实现技术对DAO进行注入。

业务层利用AOP技术[4], 拥有事务管理、缓存管理、日志管理等功能, 业务方法完全从事务、缓存、日志等代码中解脱出来, 代码的复杂度大大降低, 开发人员也因此可以更加专注于业务逻辑的实现。图3展示了本框架基于AOP的业务层设计。

2.3 控制层设计

本框架控制层采用Spring MVC技术实现, 由于来自用户的请求可能不安全, 例如恶意登录, 所以控制层整合了Shiro安全框架[5]保证Web应用的安全性。

在核心控制器截获用户请求后, 安全模块会执行身份认证流程, 验证用户身份是否合法;身份认证通过后, 在调用处理器执行操作前, 安全模块又会进行拦截方法调用, 执行授权验证流程, 验证用户是否具有执行操作的权限。

2.4 表示层设计

单纯使用HTML、CSS和JavaScript进行页面开发往往会导致页面呈现风格不统一、不美观、页面代码多样化、不容易维护、代码实现复杂等问题, 现存的UI框架很好地解决了这些问题, 如EasyUI、ExtJS、DWZ、BootStrap[6]等。ExtJS比较庞大、复杂, 学习成本较高且收费;EasyUI加载速度较慢, 浏览器兼容性不好;DWZ的文档不详细, 出了问题很难解决, 且三者的界面风格很一般, 用户体验不好;而BootStrap却不存在这些问题, 从易用性、稳定性、兼容性、美观性、免费及性能等各方面因素考虑, BootStrap都是最优选择。

为了JSP页面开发方便, 在BootStrap的基础上还采用了如下技术: (1) 采用SiteMesh对页面进行装饰, 使页面外观更加一致; (2) 选择jQuery Validation验证插件在表示层进行表单验证, 缓解服务器处理请求的压力, 提升Web应用及用户交互体验效率; (3) 使用标签技术, 如:JSTL标签、自定义标签、Spring标签等。

3 结语

针对基于Web应用框架开发应用系统面临的共性问题, 分析了中小企业对应用架构的共性需求, 基于开源框架技术提出了一个适合中小企业信息管理系统的架构设计方案。该设计方案以Spring为核心, 通过其IoC容器管理各层组件及组件间关系, 通过Spring JDBC及Spring集成的Hibernate完成持久层的数据访问, 通过Spring AOP实现业务逻辑和横切逻辑的分离, 通过Spring内置的MVC框架实现请求的处理, 通过BootStrap实现页面的展示。各层框架技术各司其职、协同工作, 为实现企业应用系统搭建了一个基础骨架。

摘要:针对基于Web应用框架开发面临的共性问题, 通过对企业应用系统进行分类, 分析了中小企业对应用架构的共性需求, 采用Spring+Hibernate+Spring JDBC+BootStrap等开源框架技术, 提出了一个适合中小企业信息管理系统开发的架构设计方案, 该设计方案具有一定的复用性, 有利于中小企业快速开发Web应用系统。

关键词:Web应用,开源框架,中小企业信息管理系统

参考文献

[1]郭欣.企业信息管理系统的实现[J].制造业自动化, 2011, 33 (15) :19-21.

[2]刘天北.理解企业应用框架[J].程序员, 2004 (5) :47-49.

[3]任振宇, 汪成曦.基于SSH框架的企业信息管理系统设计研究[J].科技资讯, 2012 (1) .

[4]陈雄华, 林开雄.Spring3.x企业应用开发实战[M].北京:电子工业出版社, 2012.

[5]The Apache Software Foundation.Apache shiro[EB/OL].[2014-04-10].http://shiro.apache.org/.

基于开源框架的高校排课系统的研究 第3篇

随着社会生产力迅速发展, 科学技术突飞猛进, 人们进行信息交流的深度和广度不断增加, 信息量急剧增长, 传统的信息处理与决策的手段已不能适应社会的需要。对于一个高等学校来说, 大量教师课程安排难以通过传统的方法进行管理, 这就迫切需要利用计算机技术来帮助学校管理者来处理教师课程安排的日常管理, 合理安排课程, 防止课程冲突。本文排课管理系统的开发主要研究基于开源框架Struts、Spring和Hibernate技术。

二、开源框架

1. 开源框架Struts、Spring和Hibernate

Struts是Ap a c he基金会J a ka rta项目组的一个开源框架, 它采用MVC模式, 能够很好地帮助JAVA开发者利用J2EE开发WEB应用。Struts实现的重点在C (Controlle r) , 包括Ac tionSe rvle t/Re q ue s t Proc e s s or和我们定制的Ac tion, 也为V (Vie w) 提供了一系列定制标签 (Custom Tag) 。通过一个配置文件, 即可把握整个系统各部分之间的联系, 这对于后期的维护有着莫大的好处。Sp ring框架是基于IOC和AOP的, 是相对于EJ B的轻量级企业应用框架。Hibernate是一种实现对象和关系之间映射 (Object Rela tion Ma p p ing, ORM) 的框架, 它对J DBC进行了非常轻量级的对象封装, 使得JAVA程序员可以随心所欲地使用对象编程思维来操纵数据库。

2. 框架的整合原因

在所有的ORM框架中, Sping对Hibernate的支持最好。Sp ring提供很多J OC特性的支持, 方便地处理大部分典型的Hib e rna te整合问题, 如Se s s ion Fa c tory的注入、Hib e rna te Te mp la te的简化操作及DAO支持等。虽然Struts不够完美, 但拥有极其稳定的表现, 经过长时间的检验, 有大量成功的应用可以参考。重要的是, 其开发群体相当活跃, 相关资源相当丰富。

三、基于开源框架的排课系统

1. 需求分析和系统功能

系统包括用户管理、教室基本情况查询、教师预约、数据录入及审核、排课规则、排课、课表查询和打印7个部分, 如图1所示。

用户管理:包括用户 (教师、学生和教务人员) 的注册和管理;

数据录入及审核:数据录入包括教室基本情况的录入、教学计划的录入、全校课表的录入, 是系统的输入部分;

教室基本情况查询:教室基本情况查询的功能为查询各教室的基本情况。

教师预约:教师预约模块的功能主要是授课教师可根据自己课程的要求和特点, 参照教室基本情况, 进行授课地点、授课时间的预约;

排课:排课模块是整个系统的核心模块, 它通过对各种数据以及各种约束条件进行分析, 把笼统的教学计划加工成具体的课程表, 以实现对教学资源合理高效的利用;

课表查询和打印:课表的查询和打印模块的功能是在排课完成后, 进行查询调整以及最终打印出课程表, 是系统的输出部分。

2. 系统体系结构

系统按MVC模式和J2EE分层设计, 采用的是典型的J2EE三层结构, 分为表现层、中间层 (业务逻辑层) 和数据服务层。三层体系将业务规则、数据访问及合法性校验等工作放在中间层处理。客户端不直接与数据库交互, 而是通过组件与中间层建立连接, 再由中间层与数据库交互。

表现层是传统的JSP技术, 自1999年问世以来, 经过多年的发展, 其广泛的应用和稳定的表现, 为其作为表现层技术打下了坚实的基础。

中间层采用的是流行的Spring+Hibernate, 为了将控制层与业务逻辑层分离, 又细分为以下几种。

We b层, 就是MVC模式里面的“C” (c ontrolle r) , 负责控制业务逻辑层与表现层的交互, 调用业务逻辑层, 并将业务数据返回给表现层作组织表现, 该系统的MVC框架采用Struts。

Se rvic e层 (就是业务逻辑层) , 负责实现业务逻辑。业务逻辑层以DAO层为基础, 通过对DAO组件的正面模式包装, 完成系统所要求的业务逻辑。

DAO层, 负责与持久化对象交互。该层封装了数据的增、删、查、改的操作。

PO, 持久化对象。通过实体关系映射工具将关系型数据库的数据映射成对象, 很方便地实现以面向对象方式操作数据库, 该系统采用Hibernate作为ORM框架。

Sp ring的作用贯穿了整个中间层, 将We b层、Se rvic e层、DAO层及PO无缝整合, 其数据服务层用来存放数据。

数据服务层用于提供数据存储和管理, 由数据库管理系统实现。

3. 系统框架整合的实现

(1) Struts与Spring整合。Struts与Spring整合的关键是当Struts接收到J SP页面的Ac tion请求时, Ac tion实例的执行转由Sp ring进行。

首先需要在Struts-config.xml的中, 将a c tion项的typ e属性设为org.s p ring fra me work.s truts.De le g a ting Ac tion Proxy, 此后De le g a ting Ac tion Proxy就获得Ac tion实例的执行权, 目标Action实例就作为了Spring的Bean来使用, 享受到反向控制、实例管理和事务管理等优点。最后, 在Spring Context的a p p lic a tion Conte xt.xml中, 将项的na me属性与Struts中项的path属性对应, class属性制定为Delegating Ac tion Proxy的目标Ac tion实例。

(2) Spring与Hibernate整合。在Spring中使用Hibernate框架完成数据持久化。主要继承了Spring的Hibernate Dao Support类来创建操作数据的User Dao Support类, 在类中编写完成数据库操作的方法。实现过程如下:

(1) 建立Spring的配置文件application Context.xml, 该配置文件用于完成数据源datasource和Local Session Factory Bean的配置。

(2) 编写一个进行数据库操作的DAO类文件User Dao Support, 该类继承了Spring的Hibernate Dao Support类。定义一个添加方法, 其参数为Java Bean的实体类对象User, 然后通过get Hiberna te Te mp la te () 方法获得Hib e a na te的模板类, 通过这个类执行数据添加操作。

(3) 将该类配置到Spring的配置文件中, 同时为它的Sess ion Fa c tory属性注入数据源Da ta s ourc e, 具体设置如下。

(4) 在排课模块中定义一个实体类对象用于完成排课有关数据的添加、逻辑运算和输出等, 部分代码如下。

四、结束语

开源框架具有符合实际需求、容易实现和体现优秀软件设计思想等优点;Struts+Spring+Hibernate是一种优秀的开源框架配置, 发挥了各自的优点, 成本低廉。基于开源框架的排课系统, 可以降低手工排课的复杂性, 使教学资源更加科学、合理地利用, 提高了教学管理的工作效率。

摘要:介绍开源框架Struts、Spring和Hibernate的特点, 讨论框架整合的原因, 提出一种基于开源框架的高校排课系统的设计和实现方法, 对系统需求和主要功能进行叙述, 重点对系统体系结构和实现方法进行了介绍。

关键词:Struts,Spring,Hibernate,开源框架,排课系统

参考文献

[1]李刚.轻量级J2EE企业应用实践—St rut s+Spring+Hibernat e整合开发[M].北京:电子工业出版社, 2007.[1]李刚.轻量级J2EE企业应用实践—St rut s+Spring+Hibernat e整合开发[M].北京:电子工业出版社, 2007.

开源框架 第4篇

实验室是高校的重要组成部分,实验室信息化能够提高资源利用率和共享程度,它对深化教育改革和培养创新人才意义深远[1,2,3]。实验教学是高等院校教学中一个相当重要的教学环节,在整个教学过程中起到不可替代的作用[4]。如何充分利用实验室有限的教学资源,有效地提高实验室的利用率,成为实验室管理中亟待解决的一个重要问题[5]。

实验教学要求实验安排更为灵活,需要一个与实验室实际需求相适应的、现代化的实验管理手段[6,7,8,9]。将互联网应用于实验室管理,较之现有的非移动实验室管理有着不可比拟的优势。在这种情形下,开发一个基于Internet的实验室预约系统显得非常必要。

2 系统设计

2.1 系统需求分析

高校实验室的预约普遍采用人工方式。学生或者教师通过电话问询实验室空闲情况后进行预约,管理员将预约结果手动记录在借用申请表中,这种方式准确性低、不利于查询[10];有时学生去管理员办公室借用实验室,会出现预借用的时间段已经被预约的情况[11]。因此,需要开发一套实验室预约系统来完善实验室的使用。

2.2 设计思路

本文利用Python的Flask框架,搭建实验室预约系统。实验管理员在系统上发布实验室空闲时间段,申请人采用网上申请的形式进行预约。

本文采用类似于淘宝购物的思路,将商品目录对应于实验室名称列表;商品订购对应于实验室空闲时间段;加入购物车这一操作对应于预约某一个时间段;购物清单对应于预约实验室的多个时间段;结账明细对应于申请人预约信息详情。

对申请人而言,实验室预约过程类似于商品订购。但是,不同于淘宝购物的是:实验室某个空闲时间段是唯一的,只允许预约一次。本文采用“先到先得”的原则来决定预约结果,即假设预约系统显示区有实验室1星期一第1节,那么代表着这个时间段是空闲的,目前没有被任何人预约,此时若申请预约这个时间,那么会立即弹出预约成功信息,不必等待管理人员审核。管理员可以根据预约情况取消无效的预约。考虑到学生实验主要以教师为引导,所以学生预约实验室的几率小[12]。

2.3 数据库结构设计

该系统共设计了3个表,分别为注册信息表(users)、实验室信息表(rooms)和预约信息表(reservations)。其中,登录信息表中包含了教师的信息(ID、姓名、邮箱和密码)。实验室信息表(rooms)是实验管理员发布的可以预约的实验室信息(ID、实验室名字和描述)。预约信息表(reservations)包含了已经预约的实验室信息(日期、节数、申请人和实验室ID)。

2.4 功能设计

基于B/S下的实验室预约,在浏览器端完成实验室预约申请,其中涉及的功能有查看实验室空闲信息、预约申请和查看预约结果[13]。

若申请人预约金融实训平台某个时间段,则点击预约,查看实验室空闲时间段。假设上午有5节课,分别是第1、2、3、4、5节;下午有4节课,分别是第6、7、8、9节;晚上有3节课,分别是第10、11、12节。如图2。根据需求预约相应的时间段。

在图2中,深色表示可预约,浅色表示有课或者已预约。假设申请人需要预约2016年3月19日下午第6、7、8节,那么点击“可预约”,弹出登录对话框。若无账号,则需先注册。若登录成功,则可以进入预约界面,如图3:

申请人输入预约开始的节数6和结束的节数8,点击预约,弹出预约信息详情,查看我的预约记录,如图4:

3 展望与结束语

本文开发的预约系统基于目前国外开发极为活跃,使用相当普遍的开源框架。Web应用基于Python语言的Flask微框架,具有跨平台,轻量,易扩展的特性。该预约系统使用了大量现成的Flask扩展插件,不仅加速了系统开发的进度,而且大大提高了系统实现的安全性与稳定性。

开源框架 第5篇

关键词:Android,数据库,LitePal,ORM

Lite Pal是一款开源的Android数据库框架, 它采用了对象关系映射 (ORM) 的模式, 并将我们平时开发时最常用到的一些数据库功能进行了封装, 使得不用编写一行SQL语句就可以完成各种建表、増删改查的操作。并且Lite Pal很“轻”, jar包只有100k不到, 而且近乎零配置, 使用Lite Pal框架, 可以将我们从繁琐的数据库操作中解放出来。

一、传统的数据库操作方式

在Android的应用开发中, 传统的数据库操作方式是使用Android操作系统中集成的一个嵌入式关系型数据库SQLite来进行的, 它要求开发人员熟练的掌握SQL语法, 操作数据库基本是通过SQL语句来实现的。为了方便我们对数据库表进行管理, Android本身还提供了一个帮助类:SQLite Open Helper。这个类集创建和升级数据库于一身, 并且自动管理了数据库版本, 算是一个非常好用的工具了。

下面我们来看看SQLite Open Helper的用法吧。首先你要知道SQLite Open Helper是一个抽象类, 这意味着如果我们想要使用它的话, 就需要创建一个自己的帮助类去继承它。SQLite Open Helper中有两个抽象方法, 分别是on Create () 和on Upgrade () , 我们必须在自己的帮助类里面重写这两个方法, 然后分别在这两个方法中去实现创建、升级数据库的逻辑。

新建一个SQLLite Helper Util, 这样一个最基本的数据库帮助类的代码如下:

其中, 当数据库创建的时候会调用on Create () 方法, 在这里去执行建表操作就可以了。比如说我们想新建一张课程表course表, 其中有course Name, class Room, teacher, day Of Week这几列, 分别代表课程名, 教室, 任课教师, 周几, 那么代码就可以这样写:

我们把建表语句定义成了一个常量, 然后在上述SQL-Lite Helper Util类on Create () 方法中使用db.exec SQL (CREATE_COURSE) 去执行了这条建表语句, course表也就创建成功了。现在, 我们只要获取SQLLite Database的实例, 数据库表就会自动创建了, 如下所示:

二、Lite Pal的使用方法

2.1引入Jar包

首先, 我们需要将Lite Pal的jar包引入到项目当中, 下载好了jar包之后, 把它复制到项目的libs目录中就算是引入成功了, 如下图所示:

2.2配置litepal.xml

接着在项目的assets目录下面新建一个litepal.xml文件, 并将以下代码输入进去:

配置文件相当简单, <dbname>用于设定数据库的名字, <version>用于设定数据库的版本号, <list>用于设定所有的映射模型, 我们稍后就会用到。

2.3配置Lite Pal Application

由于操作数据库时需要用到Context, 而我们显然不希望在每个接口中都去传一遍这个参数, 那样操作数据库就显得太繁琐了。因此, Lite Pal使用了一个方法来简化掉Context这个参数, 只需要在Android Manifest.xml中配置一下Lite Pal Application, 所有的数据库操作就都不用再传Context了, 如下图所示:

仅仅三步, 我们的配置就已经完成了。

Lite Pal采取的是对象关系映射 (ORM) 的模式, 那么什么是对象关系映射呢?简单点说, 我们使用的编程语言是面向对象语言, 而我们使用的数据库则是关系型数据库, 那么将面向对象的语言和面向关系的数据库之间建立一种映射关系, 这就是对象关系映射了。

那么接下来我们就看一看Lite Pal中是如何建表的吧。根据对象关系映射模式的理念, 每一张表都应该对应一个模型 (Model) , 也就是说, 如果我们想要建一张course表, 就应该有一个对应的course模型类。新建一个course类, 如下所示:

现在模型类已经建好了, 我们还差最后一步, 就是将它配置到映射列表当中。编辑assets目录下的litepal.xml文件, 在<list>标签中加入course模型类的声明:

OK, 这样所有的工作就都已经完成了, 现在只要你对数据库有任何的操作, course表就会被自动创建出来。比如说Lite Pal提供了一个便捷的方法来获取到SQLite Database的实例, 如下所示:

SQLite Database db=Connector.get Database () ;

我们在操作Course表时只需要调用对象course.save或者course.find或者course.find All () 即可实现表格的保存和查询操作。

由于大多数的程序员都很擅长面向对象编程, 只有少部分的人才比较精通关系型数据库。而且数据库的SQL语言晦涩难懂, 就算你很精通它, 恐怕也不喜欢经常在代码中去写它吧?有了lite Pal, 你就可以从繁琐的数据库操作中解放出来, 专心处理事物逻辑了。

参考文献

[1]马获蕾.Android系统中SQLite数据库的研究.电脑知识与技术, 2013年, 28期

[2]王绍祥.手机与数据库的一种数据交互方法.郑州轻工业学院学报 (自然科学版) , 2011年, 06期

开源框架 第6篇

随着运维2.0时代的到来, 技术运维正在逐渐转变升级为服务运维, 向公司提供专业服务。Dev Ops在实际操作中, 其实际操作方法和项目管理的手段是什么样的即具体情况, 几乎无人能有一个完美的答案。Dev Ops在最初是让开发、运维、QA之间加强沟通, 通过不同的工具来消除隔阂。而隔阂的形成有两个原因, 一是信息不对称, 部分研发可能无法获取到运维的数据或者只能获取运维的部分数据而存在盲点, 同时运维无法解读代码的错误信息;二是不同的组织、集体和个人所秉持观点不同, 这直接导致了不同部门之间的目标有差异。而Dev Ops是倡导大家一起来面对问题、共同解决问题。实现开发环境和部署环境的快速迁移, 帮助产品快速上线。监控工具越来越多, 明确负载问题是计算资源不足的问题, 还是代码质量的问题。

该文旨在简要描述如何根据需求设计一款系统监控平台, 并通过该监控平台实现监控操作系统、数据库和中间件具体的运行情况, 实现基于指标判断不同的情况启动报警, 对数据集中展现和管理。

2 系统设计

2.1 设计思路

该运维监控平台采用C/S和B/S模式, 被监控端通过使用探针将数据上传至服务器, 服务器将收到的数据进行分析处理和备份;浏览器端将服务器端整合过的数据和分析结果进行拉取, 并将其可视化展现给运维管理人员。性能监控平台服务流程主要包括探针采集数据、数据分析、数据可视化、设置报警规则、监控报警等。这些模块彼此相互联系, 组成功能强大的监控系统, 实现对操作系统、数据库、中间件等服务和模块的性能监控和应急响应处理。

2.2 开发平台

根据功能需求, 平台采用Flask框架进行开发。Flask是一个用Python语言编写的轻量级Web应用框架, WSGI组件采用Werkzeug, 模板渲染引擎采用Jinja2。数据库服务使用Mongo DB数据库。Mongo DB是一个基于分布式文件存储的数据库, 由C++语言编写, 旨在为Web应用提供可扩展的高性能数据存储解决方案。Mongo DB是一个介于关系数据库和非关系数据库之间的产品, 是非关系数据库当中功能最丰富、最像关系数据库的数据库。由于探针采集数据庞大, 数据交换频繁, 故选择最像关系型数据库的Mongo DB。

2.3 数据表的设计

根据功能, 设计数据表如下。

User数据表用来存储管理员和用户的信息, 同时起到划定部门职能等作用。该数据表的字段主要有: (1) _id域用来存储管理员用户的唯一性标识符, 其在该数据表中根据记录的不同而不同, 同时以自增的形式存在以便唯一地显示用户信息; (2) group域用来记录管理员或者用户所在的用户级别组, 在具体的应用中可以有针对性地为不同的用户设计不同的级别和小组, 再通过该字段予以显示; (3) profile用来保存管理员的个人详细信息 (如姓名、部门、头像等) , 在group的基础上进一步明确管理员或者用户的信息; (4) last_seen用于记录管理员或者用户最后一次登录的时间, 便于追查管理员和用户对系统信息的获取的同时也能在一定程度上保证行为安全。

Instance集合用于存储所有被监控的实例机探针取回的海量采样数据, 实例包括但不限于操作系统、中间件、数据库服务。该数据表的字段主要包括: (1) _id用来存储被监控实例的唯一性标识符, 用以区别不同的被监控实例; (2) owner_group[]列表用于存放所属的管理员组, 并且一个实例可以被多个管理员组所控制; (3) Data子集用来存放与实例相关的所有探针发回来的数据记录, 其中可以包括cpu_percent (通过百分比的形式以数字方式来反映CPU使用率的信息) 、lavg1 (表示每分钟的Load Average) 、lavg5 (按照5分钟的时间段来显示出来的平均值) 、lavg15、ip[] (实例有多个IP地址, 故用列表数据类型来存储) 、net_speed_r (描述网络数据包的下行速率) 、net_speed_t (描述网络数据包的上行速率) 、time (反应数据集的采样时间戳) 。

Dashboard表用于存放仪表盘展示页面上的仪表盘组件配置信息, 包括字段有: (1) instance_id作为与仪表盘绑定的数据源实例的唯一性标识符, 用于区别于仪表盘绑定的不同的数据源实例; (2) title用来表示仪表盘的大标题, 并且通过大标题显示内容的大致方向等; (3) module标记要显示的数据的来源模块, 以便区别来自于不同来源的数据以及信息等。

Event表存放着一切发生的事件, 如探针信号捕获与丢失, 警报出发时的状态等。其包括字段有: (1) _id为事件的唯一编号, 不同的事件记录拥有不同值, 同时该字段也是该数据表中任何一条字段所不可或缺的信息和记录; (2) level、title、content三个字段分别表示为触发的事件的安全等级、事件的大标题、事件的详细报告 (包含报警触发规则以及触发时实例的状态信息) , 从不同的角度来描述事件的发生、发展等; (3) created_at域记录事件第一次触发时的时间戳, 实质记录了对应事件发生第一次发生的时间; (4) updated_at对某些特殊事件, 随着事件的重复发生相应的刷新重复触发时间。

Strategy集合用于记录运维人员自定义的报警规则。主要包括: (1) _id为警报策略的唯一性标识符, 用以区别不同的报警策略的标志; (2) instance_id子集标记了警报所针对的所有实例编号, 区别警报同时根据不同的实例做出记载; (3) is_enable为Boolean数据类型, 标记警报策略规则的开启/关闭状态, 其值为整数型数据类型, 单数表示True, 双数表示False; (4) 域module标记所要监控的模块, condition存储警报触发条件, 合法的数据如lt (小于) 、gt (大于) 、gte (大于等于) 、lte (小于等于) 、ne (不等于) 等条件标志; (5) standard域标记着数据阈值, 这样根据采样得到的数据通过condition和standard来比较就能定制触发规则; (6) created_at记录规则被管理员创建的时间戳, created_by记录创建该规则的管理员用户编号, 这两个直接记录对应管理员针对此操作的实际行为信息。

需要注意的一点是由于Mongo DB不方便直接实现对Boolean类型数据的控制, 故is_enable列需要用单双数来判断规则开启情况, 进行切换操作只需要使用Mongo DB的API将is_enable加1即可进行下一步的操作。

2.4 功能设计

2.4.1 RESTFUL API设计

这个方面的设计涉及的内容主要有以下几方面。 (1) 向实例插入采集数据记录的口:http://example.com/rest/add_data, post递交的数据格式为JSON文件格式, 结构如数据集合instance中的data域; (2) 实例信号请求注册的接口:http://example.com/rest/add_info; (3) 拉取实例最近n条数据的接口:http://example.com/rest/get_latest_data/instance_id; (4) 拉取实例最近N个小时的数据的接口:http://example.com/rest/get_data_by_timedelta/instance_id; (5) 拉取实例配置信息的接口:http://example.com/rest/get_info/instance_id。

2.4.2 实例信息概览

该页面展现各个监控实例的基本信息, 如服务器实例的CPU使用率、IOWait和LOAD15等基础指标, 数据每秒进行一次更新。其页面显示可以以黑色为主要的色调, 同时界面上的字体以白色线条显示以示差别, 便于管理员和用户在实际操作中能够看清楚。并且以内容的概括性说法为大标题, 例如“实例”, 而细小的内容部分可以通过小一些的字来显示, 显示的内容可以使用实例的名字、状态、CPU使用百分率、IOWait、LOAD15、平台服务等来表示具体的信息含义, 再将信息的内容与含义一一对应地显示出来, 以便管理员或者用户能够获得对应的信息。

2.4.3 自定义仪表盘

随着现在业务的复杂化, 一个应用很可能会在多台服务器上部署, 故而需要同时监控多台服务器, 如果只需要看某一台服务器的某项指标, 可以使用仪表盘。用户可以在仪表盘页面自定义多个数据指标图表, 支持任意时间段数据查询, 默认显示最近30分钟内的数据, 用户可以自定义具体时间段。

2.4.4 报警策略

引入各种服务的报警事件, 也可以针对自身的主机监控和平台服务监控, 管理报警事件。当CPU利用率过高, 或者第三方API的可用性达到某个触底阈值时, 则会触发报警条件, 发出警报, 并且通过邮件、短信等多种渠道, 流转到具体的承责人员身上。

在具体报警策略的显示中, 按照与“实例信息浏览”页面类似的方式通过黑色的背景白色的字和内容来突出显示相关信息, 而对于按钮可以采用的色彩则以灰色和红色两种并且加以区分。内容采用状态、名称、创建人、指标、TAGS、最后触发值、最后触发时间等, 以便能够描述清晰对应的策略, 具体的信息和参数等则依然采用“实例信息描述”类似的方式与状态、名称、创建人、指标、TAGS、最后触发值、最后触发时间几种表示含义的一一对应再显示出来, 以便管理员或者用户获悉信息。

3 结语

性能监控的意义在于让运维变得高效、智能。团队沟通、协作的根本目的也在于通过一切方式提高效率。该自动化监视平台帮助大家一起来面对问题、解决问题, 通过可视化图表及报警功能及时发现性能问题。

然而系统运维从来都没有一劳永逸的解决方案。立足于业务需求, 制定出属于自己的一套方案, 为其他所有业务系统提供一个最为坚实的基础, 降低管理人员的工作强度, 提高工作效率, 建立一套系统科学的运维监控体系是路网平台集中运维模式下实现精细化管理的基础, 也是系统运维监控的最终目标。

本文的研究仅仅是一种建议, 实质上为众多运维监控系统设计中的一小部分, 其描述了一个基于开源框架的运维监控平台的设计过程。系统采用轻量级的Web服务器mod_wsgi (Apache) , 后端实现采用基于Python语言的Flask开源Web框架, 进而获得扩展性良好的优势, 数据库采用轻量级关系型数据库Sqlite3, 前端页面使用Bootstrap框架。然而本文所讨论的内容局限在设计过程, 对具体实现如何编码、编码过程中应该使用的具体技术等并没有加以讨论, 有待日后完善。

参考文献

[1]李淑娟, 赵泽宇, 宓泳.信息化校园应用的运维监控保障研究[J].实验技术与管理, 2008 (8) :11-14.

[2]王桂叔.基于ITIL的运维监控智能管理平台建设与应用[J].软件产业与工程, 2014 (1) :39-42.

[3]雷晓萍, 马君, 苏蔚.信息运维监控一体化平台的自主研发与应用[J].信息技术与信息化, 2015 (4) :214-216.

[4]马锐.基于监控平台的信息化运维管理平台设计[J].信息网络安全, 2013 (10) :161-163.

[5]管东升, 李俊安.信息化大运维监控管理平台的方案探讨[J].信息系统工程, 2013 (4) :113-117.

开源框架 第7篇

1.1 Struts体系结构

Struts是一种基于MVC经典设计模式的开放源代码的应用框架, 也是目前Web开发中比较成熟的一种框架。通过把Servlet、JSP、JavaBean、自定义标签和信息资源整合到一个统一的框架中, 为Web开发提供了具有高可配置性的MVC开发模式。Struts有其自己的控制器, 同时整合了其他的一些技术去实现模型层和视图层。在模型层, Struts可以很容易地与数据访问技术相结合, 包括EJB, JDBC和Object Relation Bridge。在视图层, Struts能够与JSP、XSL等这些表示层组件相结合。

Struts体系结构实现了MVC设计模式的概念, 它将Model、View和Controller分别映射到Web应用中的组件。Model由代表系统状态和商业逻辑Action来构建, View是由JSP和struts提供的自定义标签来实现, Controller负责控制流程, 由ActionServlet和ActionMapping来完成。Struts框架的基本组件结构图如图1所示。

1.2 Spring框架

Spring也是一个开源框架, 是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。从简单性、可测试性和松耦合的角度而言, 任何Java应用都可以从Spring中受益。Spring框架的目的就是解决企业应用开发的复杂性, 简单来说, Spring是一个轻量级的控制反转 (IoC) 和面向切面 (AOP) 的容器框架。

Spring框架是一个优秀的框架, 该框架具有以下几个特点:①轻量, 从大小与开销两方面而言Spring都是轻量的;②Spring框架实现了控制反转, Spring通过一种称作控制反转 (IoC) 的技术促进了松耦合。当应用了IoC, 一个对象依赖的其它对象会通过被动的方式传递进来, 而不是这个对象自己创建或者查找依赖对象;③Spring框架提供了面向切面编程的丰富支持, 允许通过分离应用的业务逻辑与系统级服务进行内聚性的开发。应用对象只实现它们应该做的——完成业务逻辑。它们并不负责其它的系统级关注点。 另外, Spring框架包含并管理应用对象的配置和生命周期, 在这个意义上它是一种容器, 通过Spring可以配置每个bean如何被创建以及如何相互关联。最后, Spring框架可以将简单的组件配置、组合成为复杂的应用。在Spring中, 应用对象被声明式地组合, 典型地是在一个XML文件里, 这样充分简化了Spring框架的配置步骤。

1.3 Hibernate框架

对象关系映射 (Object Relational Mapping, 简称ORM) 是一种为了解决面向对象与关系数据库存在的互不匹配现象的技术。本质上就是将数据从一种形式转换到另外一种形式。 这也同时暗示着额外的执行开销。如果ORM作为一种中间件实现, 则会有很多机会做优化, 而这些在手写的持久层并不存在。 更重要的是用于控制转换的元数据需要提供和管理, 这些花费要比维护手写的方案要少, 就算是遵守ODMG规范的对象数据库依然需要类级别的元数据。

Hibernate是一个开放源代码的对象关系映射框架, 它对JDBC进行了非常轻量级的对象封装, 使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。Hibernate可以应用在任何使用JDBC的场合, 既可以在Java的客户端程序使用, 也可以在Servlet/JSP的Web应用中使用, 最具革命意义的是, Hibernate可以在应用EJB的Java EE架构中取代CMP, 完成数据持久化的重任。

2 基于轻量级开源框架的科研论文管理系统的研究与设计

2.1 系统用例图

用例建模是UML建模的一部分, 主要是用来体现用户需求, 并且根据用户需求建立模型它也是UML里最基础的部分。用例建模的最主要功能就是用来表达系统的功能性需求或行为。用例建模可分为用例图和用例描述。用例图由参与者 (Actor) 、用例 (Use Case) 、系统边界、箭头组成, 用画图的方法来完成。用例描述用来详细描述用例图中每个用例, 用文本文档来完成。

2.1.1 科研人员部分的用例图

科研人员主要能够实现添加、修改论文信息, 论文资料上传, 论文快速查询, 个人资料修改等功能, 其用例图如图2所示。

2.1.2 学院、学校级别科研管理人员部分的用例图

本用例图代表了院、校两级科研管理人员的功能描述, 两级管理人员都能实现论文审核、论文统计、导出统计结果、论文快速搜索等功能, 其用例图如图3所示。

2.1.3 管理员部分的用例图

系统管理员能够实现权限管理和下拉列表选项的动态管理, 其用例图如图4所示

2.2 系统活动图

活动图是UML中用于对系统的动态方面建模的5

种图中的1种。一张活动图从本质上说可以看作1个流程图, 强调从活动到活动的控制流, 可视地表现了系统对象群体的动态特征。它在用例图之后提供了下一步系统分析中对系统的充分描述。本论文分别从3个不同的角色给出了其活动图。

(1) 系统管理员部分的活动图如图5所示。

(2) 普通科研人员部分活动图如图6所示。

(3) 科研管理人员部分活动图如图7所示。

2.3 类结构设计

类图 (Class diagram) 是显示了模型的静态结构, 特别是模型中存在的类、类的内部结构以及它们与其他类的关系等。类图不显示暂时性信息。类图 (Class diagram) 由许多 (静态) 说明性的模型元素 (例如类、包和它们之间的关系, 这些元素和它们的内容互相连接) 组成。类图可以组织在 (并且属于) 包中, 仅显示特定包中的相关内容。类图 (Class diagram) 是最常用的UML图, 显示出类、接口以及它们之间的静态结构和关系。它用于描述系统的结构化设计。类图 (Class diagram) 最基本的元素是类或者接口。本论文主要以论文管理模块为例进行类图设计, 其类图如图8所示。

2.4 控制结构设计

在Struts框架中, 控制器由ActionServlet类和Action类来实现。其中Action类来负责调用模型的方法, 更改模型的状态, 并帮助控制应用程序流程, 它充当用户请求和业务逻辑之间的适配器, 功能就是将请求和业务逻辑分开。

Action负责整个事件的流程控制。在本系统中, 包括与用户信息有关的事件、与论文信息有关的事件、与代码信息有关的事件, 系统设计使用DispatchAction, 所以在本系统中主要有3个Action:UserMngAction、PaperMngAction、CodeMngAction。Action映射决定了Action与其它Web组件之间的关联, 下图体现了系统部分Action的入口、传递给Action的ActionForm、Action的出口, 这是系统实现时的一个主题框架, 是系统的主流程控制。

2.5 系统架构设计

从图9中可以看出, 系统从整体逻辑上包含多个层次, 主要分为客户层、表示逻辑层、业务逻辑层、业务数据层, 下面从每一层的责任和技术实现上加以说明。

(1) 客户层:

通过运行于客户端的浏览器为用户提供业务功能, 是系统的人-机界面 (User-Interface) 部分。客户层主要包括客户机和PDA、手机等移动设备, 后者需要通过WAP协议转换同应用服务器进行交互。我们选用在桌面操作系统占据主流的Windows系列和IE浏览器。

(2) 表示逻辑层:

以Servlet、JSP或者JSF的形式存在于Java EE应用服务器的WEB容器中, 负责接收来自客户层的请求和数据, 并为浏览器创建应用界面。

(3) 业务逻辑层:

主要以EJB组件的形式存在于Java EE应用服务器的EJB容器中, 负责接收表示逻辑层的请求, 由本层的业务组件协作完成一个独立的业务功能。

(4) 业务数据层:

通过关系型DBMS持久化保存应用系统的业务数据, 位于业务逻辑层之后, 由持久化对象服务层与本层实现数据存取。

3 结束语

建设科研论文管理系统是提高科研部门工作效率、提高管理水平的有效途径, 是适应现代化科技发展水平的迫切需求, 是提高高校整体水平的重要机遇。作为科研管理信息系统的重要组成部分, 科研论文管理信息系统实现了对论文信息的集中统计、管理, 并能对相关数据进行统计、汇总, 能为相关管理部门决策提供参考依据, 实现数据网络信息化管理, 避免重复劳动和时间浪费, 从而有效提高科研效率。

本设计以济南大学科研部门为例, 分析、实现了其中的论文管理模块。在系统分析上, 采用了面向对象的分析方法为指导, 采用UML技术建立了系统的动静态模型, 为系统的后续工作做好了铺垫。在系统架构设计上, 我们采用了基于MVC模式的Struts架构, 系统的业务逻辑和页面分离, 使系统具有层次机构清晰、易于分工协作、代码重用率较高、维护扩展性较好等优点。在系统平台的选择上, 我们选择Tomcat和MySql, 它们功能丰富、性能优良、配置简单、操作使用方便, 为系统的开发提供了强有力的支持。

参考文献

[1]冯相忠.基于MVC设计模式的Struts框架及其应用的研究[J].计算机技术与发展, 2006 (8) .

[2]杜明, 李朝纯.Struts+EJB在J2EE平台上的设计与实现[J].计算机应用与研究, 2005 (3) .

[3]秦保华, 张永进, 孙毅.基于MVC设计模式和J2EE架构的Web信息系统框架研究[J].现代电子技术, 2005 (3) .

[4]孙卫琴.精通Struts基于MVC Java Web的设计与开发[M].北京:电子工业出版社, 2004.

[5]邱述威, 朱达荣, 张霖.基于MVC+Struts的科研项目管理系统的设计与实现[J].安徽建筑工业学院学报:自然科学版, 2006 (1) .

上一篇:社会化消防监督管理下一篇:曲轴连杆论文

全站热搜