《Advertising Service Based on Spring Framework译文》由会员分享,可在线阅读,更多相关《Advertising Service Based on Spring Framework译文(6页珍藏版)》请在金锄头文库上搜索。
1、基于Spring 架构的广告服 务Marcin Mela, Bartosz Sakowicz, Jakub Chlapinski摘要:在本文中将描述广告服务的概念,它允许用户放置广告。该系统建成的是基于iBatis的数据映射与Spring框架集成的多层互联网应用。关键字: Java, Spring, iBatis, MVCI 引言本文中提出的服务已经发展到与其他广告门户竞争的程度,且维护所需的设备基础设施能够带来利润。本论文的主要想法是该服务作为一个免费放置任何形式的广告。它是能够获得新的用户的门户网站,特 别是在用户开始活动初期。该服务将保持漂浮分类广告。设计的假设之一是用于开发市面上唯一免
2、费的充值工具,对企业友好的许可(GPL,LGPL,BSD,Apache许可证),允 许他们在使用时通过免 费创造广告来获取利益。II技术Spring框架Spring应用程序框架是一个创建Java和J2EE应用程序的多层平台。Spring的源代码是被部署到Apache 2.0许可证。由于Spring 框架在 java编程世界中的通用性、灵活性和流行性,该框架也已经在Microsoft.NET平台上得到了实现。 Spring根据功能被分成几个模块。Spring应用程序框架的主要优势如下:1. 最完整的轻量级的IoC容器:它被集中配置在一个地方,它不需要依赖任何它管理的架构对象(即所谓的“ 非侵入性
3、 ”架构),它允许通过连接松散的POJO对象来构建复合型组件。此容器允许用简单的方法将组件作为单独的对象来进行开发和测试以确保测试能够在充分的环境下进行- 这大大减少了部件开发所需的时间,2. 事务管理的抽象层:支持JTA外部管理的事务,还支持通过JDBC,Hibernate, JDO实现事务。与通过EJB来实现事务的一个重要区 别是,Spring可以使事务不仅仅能够在J2EE服务器的环境下实现, 方便访问数据库:与JDBC连接操作相比,大大减少其与数据库之间进行操作以及处理操作异常所需的代码;数据通过集成接入平台,如:Hibernate ,TopLink,JDO或者iBatis , 面向方面
4、的编程:通过Spring对象可以完全免费配置来添加方面,方面也被Spring平台用来提供事务的管理机制,而不使用EJB 或者JTA, MVC框架 Spring平台是基于MVC 架构的一个高度可配置和可扩展的框架,可以使用任何技术的视图层(JSP ,Velocity,Tiles, iText 和 POI之间选择)。与其他的解决方案类似,可以集成到Spring 平台形式内置MVC框架。iBatis的数据映射iBatis的数据映射适用于Microsoft.NET 、Java和Ruby等编程语言的数据接入平台。其主要目的是使其参与创建的应用程序更容易访问数据库。 iBatis的 查询操作和存储过程在数
5、据库中的执行对 象使用语句等写在XML 文件-使用对象映射的形式查询。由于iBatis的所提供的功能,使得它 进行正确处理数据库操作所使用的代码量比JDBC进行操作大大减少。 iBatis的重要特点是“轻量级”和简化的配置,它可以使用 Hibernate或TopLink等技术来轻松完成,尤其是对于较小的项目。值得注意的是,与 Hibernate和其他相似机制-关系映射类似的机制相反, iBatis不隐藏SQL 查询 - 基于iBatis 的SQL查询,但却大大 简化其在处理应用程序中的代码,这些与JDBC 不同。iBatis 的平台使用XML技术来存储SQL查询语句。 XML格式在硬件和编程平
6、台之间是可移植的,而且使得编写和编辑的SQL 查询在它们被执行的表单中。III. 架构MVC模式在本文中提出的门户网站的开发使用MVC模式原则。MVC是一种软件开发过程中的设计模式。 这种标准是1979年施 乐实验室为编程语言Smalltalk80发明的语言标准库中的一部分。这个 标准用来将表示方法的数据模型和业务逻辑分离,在应用程序中使用的中介组件和控制器。MVC模式将程序的实现组件分为三个层次:一.模型 - 对象代表应用中的数据 - 例如,它可以是给定用户的广告服务信息或者用户信息,二.视图 负责向用户展示数据,即把数据从应用程序界面元素,例如将应用的表单或列表中的元素转换成为接口元素,三
7、.控制器 - 处理和响应事件,通常是用户操作(如点击网址或发送表单)。在该层中的对象是负责修改所存储的数据作为用户操作的结果。源代 码门户网站的源代码包根据他们在应用程序中的作用被分为几类。在包中有两个主要分支:core和 front。它有助于分离负责应用程序框架(core )和视图层(front)的类。包的层次结构,更容易控制这些分支类之间的关系,所以应用程序框架将不依赖于视图类(front类可以导入core类) -应用类不依赖于所使用技术的视图建设。此外,源代 码也被分成两个文件夹:java和test,含有相应组件的应用程序和单元测试。在这样的方式中,应用项目的开发成为最独立于该应用的数据
8、访问字段。它能申请免费的解决方案(例如:使用iBatis与Hibernate进行替换)。下面将创建两个服务对象对应于存储在数据库中的对象的相关操作: 数据访问对象DAO-它是负责与数据库进行通信或其他持久性机制的接口对象。采用依赖(在这种情况下,iBatis的 库 )技术。由于Spring平台更容易使用iBatis 的库类,因此 DAO对象继承Spring的类SqlMapClientDaoSupport。每个DAO类实现其创建的特定对数据进行操作的接口。此接口包含的所有数据操作方法规范,并且DAO类包含这些方法的 实现, 服务对象service 它的工作原理是应用程序和DAO对象通过DAO接口
9、调用它的方法。这个对象应该是在活跃在业务与数据库的合作部分,不像DAO对象集中在技 术层面上的合作。服务对象由IoC容器注入不同的组件,它们是前对象的数据库通信。服务对象也涉及与DAO 对象异常。DAO对象异常是基于基本Spring的类并且所有异常都继承DataAccessException类使其更加方便实现,更重要的是这些都是RuntimeException类型的异常,他们一般可以不被处理。对象提供数据库沟通的服务,使用DAO对象接口也 带来诸多好处: 服务对象易于测试,因为他们没有任何数据访问技术结合。在测试中,它有可能 给假的实现(即所谓的“ 模拟对象” ),而不是真正的DAO 对象。它
10、可以提供测试对象与数据库通信,而不与任何数据库的物理模型进行连接,这使得测试时间更短, 数据访问层中的服务类是不需要了解数据持久性(因为他们只看到DAO接口,而不是它的实现)。这就是为什么数据访问技术没有影响应用程序的结构。这样应用变得更加灵活,并且可以适用于该领域中的任何其他解决方案。IV. 功能门户网站的功能分为两个基本类别:用户和管理员。用户的一部分是公共的门户网站,提供管理账号、搜索和观看广告,当用户登录之后可以添加和管理广告。管理 员部分的主要功能是管理广告、用户账号和在网站上显示的广告模块。分配给用户的权限分为两种:一部分是所有游客的,另一部分是注册用户。未登录的用户可以搜索和查看
11、广告。广告搜索短语可以包含在标题或者是广告内容中,搜索结果可以搜索相应的类别。未登录的用户可以像登录用户一样使用相应的工具面板,但是当选择任何选项后,页面将被重定向到登录页面。没有门户网站账号的用户可以注册。在注册过程中,用户有责任给予:在门户网站服务的唯一的登录标识,密码和电 子邮件地址,另外( 虽然不是强制性),用 户可以给几个个人的信息,如居住地址、联系电话或者最常用的昵称等, 这些信息将 显示在网站上的广告上,以保证对该广告感兴趣的用户能够与广告发布人员更容易的建立联系;居住地也将是用户搜索广告的条件。它也需要通过全自动 区分计算机和人类的图灵测试- 它会阻止自动创建用户和产生不必要的
12、帐户。给定的 电子邮件地址将被 发送电子邮件确认注册服务的事实 - 它会通过点击邮件中生成的链接进行确认,然后该用户将变为激活状态。登录用户获得访问的门户网站的个性化内容。最重要的功能是添加广告,参看自己的广告,如果需要的话锁定当前 选择的广告。 发布广告后不可以进行修改 这将保护其门户网站不被滥用。系统管理员是确保系统正确工作比不可少的。管理账户,由于其特殊的角色和数量有限,并且出于安全原因,只能在数据库端创建。管理 员管理 门户网站上显示的广告 - 可以阻止内容并不适用于服务规则的广告,他也可以删除之间组织的广告。禁止的用户帐户是另一个管理角色。当一些用户打破服务规则,那么管理员将阻止这个
13、账户以及其发布的所有广告,当然将该账户解除阻止也是可以的。管理员角色的第二个重要任务就是管理服务网页上显示的广告内容。管理员添加广告模块,并决定这些模块将要显示的时间,并 为这些模块添加最合适的分类。管理 员对广告显示说做的更改将立刻被显示在用户新生成的页面上(行政面板无广告)。行政面板的一个重要组成部分管理广告类别。在管理类别的页面上,可以添加新的类别修改类别名称和在类别的层次结构中移动相关分支。在树上的操作是舒适和直观的“ 拖放”的方法。类别树模型在数据库中表述数据结构不是一个简单的任务,这里有几个解决方案,但是每个都有一些缺点。因此有必要设计如何在数据库中存储相应的树结构。清单1: 表C
14、ATEGORIES清单1中的数据结构是用来解决这个问题的。CATEGORIES表中的每一行存储更多的数据,让树 的层次结构中的行 进行分组: PARENT_ID字段 - 此字段显示当前节点的父节点。对于一个主类别,该字段为NULL, PATH字段 - 这个字段存储的是从主要类别给定节点包容性路径。 ID节 点之间用冒号分割。关系表中的类别树解决方案,是的对分层结构的操作更加简单,它是明确的,并且允 许使用一个SQL查询进行任何这种操作: 从清单中获取主分类 获取清单中的子节点 选取所有的子节点 定义子节点在树中的结点路径上面提到的解决方案也有它的缺点,当在关系表中修改树结构时,需要修改多条记录
15、的树结构变化的情况-但是这个操作是真的很少,所以我们可以忽略这个问题。更值得注意的是查询的效率问题,如当获取给定节点的所有后代时,因为它必须分析CATEGORIES表中的每一行的PATH字段。然而,此问题又不是那么重要,因为CATEGORIES这张表相对较小,并且可以使用缓冲查询结果和限制数据库操作的数量(iBatis的平台允许使用这样的机制)的方法来进行解决。V. 结论开发广告服务,使其能够与其他现有的门户网站竞争是不容易的,这也需要大量的时间。想要创建和开发这样一种网站服务需要计算机科学,软件工程,以及图形感和营销等多个分支的相关知识。典型的现代应用程序混合多种技术、编程语言、解决方案和概念等多个元素。整个技 术必须是高效,稳定,可靠的,同 时对用户也是友好的和有吸引力的。今天从 头到尾设计的应用程序,没有考虑到其演变方式是不可能的 - 每一个现代的应用程序必须不断跟上竞争对手的技术和功能的创新。