第4卷第2期 2 0 1 0年6月 广州城市职业学院学报 Journa1 of Guangzhou Ci ty Po1ytechnic Vo1.4 NO.2 Jun.2 0 1 0 基于SubSonic和Nhibernate框架的 在线购书系统设计与实现 梁锦雄 (广州城市职业学院信息与汽车工程学院,广东广州510405) 摘要:为营造客户与销售商之间互动和谐的购物环境,设计了一个基于SubSonic+Nhiber- nate的ASP.NET架构的在线购书系统。论述了基于.NET技术的开源框架SubSonic和Nhiber- nate的技术特点,提出了系统的总体架构图,分析了系统的主要实现方法,最后介绍了系统的关 键技术。 关键词:SubSonic;Nhibemate;在线购书系统;用例图;时序图 中图分类号:TP 319 文献标识码:A 文章编号:1674-0408(2010)02_0o62-05 Design and Implementation of Online Book Shopping System Based on SubSonic and Nhibernate Framework LIANG Jin—xiong (School of Information and Automobile Engineering,Guangzhou City Polytechnic,Guangzhou 510405,China) Abstract:In order to establish an interactive and harmonious shopping environment between consumers and deMe ̄,an online book shopping system is devised,based on the SubSonic and Nhibernate famework.In this paper,the author discusses technical features of open source framework SubSonic and Nhibemate which are based on.NET technology,presents the overall construction diagram of this system,analy zes the main realization method of this system and introduces the key technologie8 of this system at last. Key words:SubSonic;Nhiberuate;online book shopping system;use case diagram;sequence diagram 一、引言 用户提供了更加周到的人性化服务。网上书店借 助于连接全球的互联网开展业务,在网络发达的 随着计算机科学的发展,网络技术和数据库 技术在互联网中的应用越来越广泛,为广大网络 收稿日期:2010-04-28 当今社会有着传统书店无以比拟的优点。它的24 基金项目:2008年广州市政府资助项目——中山大学软件工程师资“2+1”培养模式实训班的科研成果之一。 作者简介:梁锦雄(1979一),男,广州城市职业学院信息与汽车工程学院讲师、硕士,主要研究方向:计算机科学与 技术。 62 梁锦雄:基于SubSonic和Nhibernate框架的在线购书系统设计与实现 小时服务、送货上门、无店铺销售、检索图书快捷 方便、分类浏览人性化、管理模式灵活等优点,弥 将承载关键业务逻辑的应用程序服务器(或应用程 序服务器集群)和承载业务数据的数据库服务(或 补了传统出版发行业的不足,为读者提供了极大 数据库服务器集群)隔离开来 j。实现管理与数据 的方便。随着人们购物观念、购物习惯的改变以 及网上购物质量、信誉的提升,出版物在线销售将 有更大市场空间。 SubSonic是一个类似Rails的开源.NET项目。 你可以把它看作是一把瑞士军刀,它可以用来构 建Website和通过ORM方式来访问数据。作为一 个开发人员生产力工具,SubSonic通过从基础上支 持软件开发的迭代本质,自动化了数据驱动的应 用程序开发中重复性的、无趣的过程。通过这个 自动生成的Web.Based的数据操纵的“架子”,轻 量级和灵活的查询工具,以及一个不断丰富功能 的用于通用业务数据验证和转换需要的类库,Sub- Sonic让开发人员可以快速地构建他们的应用程 序,而不是一些支撑的基础系统。 NHibernate是把Java的Hibernate核心部分移 植到Microso ̄.NET Framework上。它是一个对象 关系映射工具,其目标是把.NET对象持久化到关 系数据库。NHibernate不仅仅管理.NET类到数据 库表的映射(包括.NET数据类型到SQL数据类型 的映射),还提供数据查询和获取数据的方法,可 以大幅度减少开发时人工使用SQL和ADO.NET 处理数据的时间…。 二、系统的设计 (一)系统功能描述及系统结构设计 网上书店系统的基本功能,包括客户管理、图 书出入库、书目检索、书目分类管理、购物车、订单 功能、会员帐户管理和收藏夹等功能。采用B/S 结构,所有用户通过浏览器登录信息平台,获取相 关信息资源并执行对应业务。WEB服务器与DB 数据库都放在内网中,然后通过电信网、科研网等 与外网连接,内网与公网通过硬件防火墙隔离。 在内网中的数据库服务器可以以集群服务的方式 提供数据存储及运算,这样可以充分满足海量数 据的安全存储需要,同时也可以对数据分析提供 高性能及时的运算服务。 为了使网上书城获得更好的安全性、扩展性和 更高的执行效能,整个系统采取分布式部署的方案, 的分离,便于管理和维护,系统结构如图1所示。 嘲 掣 WEB服 器一一 数据服务器 / \ 蓉户 1 2 3 (二)系统逻辑分层结构 系统采用了“三层”应用结构:表示层、业务逻 辑层、数据访问层。分层设计的优点如下:结构清 晰、耦合度低、可以降低层与层之间的依赖;便于 系统的扩展、利于各层逻辑的复用;可以很容易地 用新的实现来替换原有层次的实现;开发人员可 以只关注整个结构中的其中某一层;利于开发任 务同步进行;有利于标准化。系统逻辑分层结构 如图2所示。 图2逻辑分层结构图 1.表示层 该层主要完成两个任务:一是从业务逻辑层 获取数据并显示给用户;二是实现与用户的交互, 将有关数据回送给业务逻辑层进行处理,其中可 能包括数据验证、处理用户界面事件等。表示层 的价值在于,它把业务逻辑层和外部刺激(用户输 入、激发事件等)隔离开来。在系统中,ASP.NET 63 广州城市职业学院学报 2010年第2期 窗体、AJAX、用户控件、母版页、网站导航、用户管 为DAL(数据访问层),封装了SubSonic的代码,用 理控件(包括注册、登录、取回密码等界面)应用在 于与数据库的交互;中间层为BLL(业务逻辑层), 表示层中。 封装了购物车、图书相关等类,用于最上层的表现 2.业务逻辑层 层的接口;表现层主要是负责用户界面,为了进一 业务逻辑层包含了核心业务相关的逻辑,它 步封装,在表示层中采用了制作用户控件的方式, 们实现业务规则和业务逻辑,并且完成应用程序 将各个界面部分分块制作成用户控件,这样在as- 所需要的处理。作为这个过程的一部分,业务逻 px的表示层页面中可以像搭积木一样将各个需要 辑层负责处理来自数据存储或者发送给数据存储 的用户控件拖人界面;所有表示层的页面都采用 的数据。包括以下页面:User,Book,Order,Shop- 了母版技术,使其具有统一的风格L3 J。 pingCart,Publisher,Type,Role. (四)系统的用例图描述 3.数据访问层 整个系统采用多角色多权限的管理方式,在 数据访问层包含数据存储和与它交互的组件 开发中采用了asp.net 2.0的新特性,利用其Pro. 或服务,这些组件和服务在功能上与业务逻辑层 vider模型,采用Membership管理机制,很好地满 相互独立。在系统设计过程中,我们采用了sql- 足了需求规定的功能。本系统共分成系统管理 builder类来设计增、删、改查询语句,然后调用 员、销售人员、仓库管理员和客户四个角色,分别 Adohelper方法,sqlbuilder类采用单件,在构造的 赋予了不同权限,对用户权限的管理就是将用户 时候用工厂模式根据不同的配置来选择不同的数 加入到不同的角色从而获得不同的权限 】。其中 据库。 系统内置了一个Administrators角色成员admin,可 (三)技术框架 以通过后台进行多个用户权限的分配及用户的删 整个框架采用微软推荐的三层架构,最底层 除。系统用例图如图3所示。 图3系统用例图 (五)系统用例的时序关系设计 理”订单,点击某一订单条目,列出订单明细;也 系统功能完善,时序图也很多,现拿处理当 可以由销售人员输入“订单号”,按“查看”按钮 前订单时序图作为例子:选中“处理当前订单”, 列出订单明细;打开订单明细的同时,系统对比 由系统按时间顺序,从先到后列出所有“未处 每一本图书的订购数量与该图书的库存量,如 梁锦雄:基于SubSonic和Nhibernate框架的在线购书系统设计与实现 果有任一本图书的订购量高于库存量,标注该 图书“库存不足”,并且提示用户该订单暂时不可 处理 ;如果全部图书的订购量都低于库存量, 则订单可以处理,点击订单页的“出货”按钮,系 统自动根据订单中每一订单项的信息和订购数 量,更新相应图书的库存,只有全部订单项对应 的图书库存都已经成功更新,订单状态才能改为 “已处理”;如果任一项修改失败,则未完成的处 理取消,已完成的处理回滚(即将当前订单每一 订单项对应的图书减少了的库存量加回去),订 单状态仍为“未处理”,系统出现“处理失败”,如 图4所示。 图4处理当前订单时序图 (六)数据库设计 系统采用SQL SERVER 2005数据库,采用 ASP.NET 2.0内置成员角色管理模式,系统将包 括两个数据库:ASPNETDB(系统自动生成)和 BookShop(自建)。BookShop数据库的关系图如图 5所示。 ASPNETDB数据库是由ASP.NET 2.0内置成 员角色管理模式自动生成的一个关于成员和角色 管理的数据库,我们不直接对ASPNETDB数据库 进行操作,而是被封装后利用系统提供的Member. Ship类、MemberShipUser类、Profile等类来进行数 据库的操作。本系统中将利用Profiles机制来扩展 用户字段属性,用于保存用户可用的收货地址信 息,预设允许用户保存3组,不需要直接对数据库 操作,只需要在web.config中进行相应配置。 三、系统实现 (一)链接数据库的实现 <!一一和数据库的连接字符串设置一一> <connectionStrings> <remove name:”LocalSqlServer”/> <add name=”LocalSqlServer”connection— String ”Data Source=.;Database=aspnetdb;Inte— 图5 BookShop数据库的关系图 grated Security true”providerName=”System.Da一 65 广州城市职业学院学报 2010年第2期 ta.SqlClient”/> 面,可以方便用户把感兴趣的图书收藏。缺书登 <add name=”BookShopC0nnection” connec- 记是用于用户对无货的图书进行反馈的一种机 tionString ”Data Source:.;Database=BookShop; 制,当用户登陆后,点击缺书登记,将会记录到数 Integrated Security=true”/> 据库中。 </connectionStrings> (五)全局的程序异常捕获机制的实现 (二)前台显示数据的实现 对于一些可能出现重大错误的异常,并不是 提供对不同分类图书的显示、查询等工作。 采用try机制进行捕获,而是统一转向到一个友好 查询能够按照用户输人的多个关键字采用and or 的页面出错提示页面,同时把异常信息、出错代码 等方式的模糊查询,并采用了Ajax技术,实现了无 行通过E—mail发送到预定义的管理者邮箱。 刷新显示。并利用了Jquery技术,实现鼠标停留 在图书缩略图上时,图书大图的淡人淡出显示, 四、结束语 jquery.jS文件的部分代码如下: 在线购书系统的核心功能是网上购书。设计 jQuery.fn=jQuery.prototype={ 时采用了Jquery技术,实现鼠标停留在图书缩略 init:function(selector,context){ 图上时,图书大图的淡入淡出显示;然后通过动态 //Make sure that a selection was provided 服务器程序实现与用户的交互,最终完成动态的、 selector selector II document: 图形化的购物环境。“基于SubSonic和Nhibernate //Handle¥(DOMElement) 框架”所带来的好处是可以经常针对某个层进行 if(selector.nodeType){ 修改而不会影响到其他层,从而使系统不那么脆 this[O]=selector; 弱和更易于维护。同时,利用该技术设计的系统 this。length=1; 具有非常好的扩展性,与代码生成比较,Nhibernate return this; 更改数据表结构对代码的影响要远远小于代码生 } 成。该系统还可应用到网上鲜花买卖、网上服装 (三)购物车和订单模块的实现 店等电子商务系统,以加速此类行业的网络化、信 用户可以匿名使用购物车,当创建订单的时 息化进程。 候才转向登录页面,在用户选择加入购物车时,并 “在线购书系统设计”是2008年8月“中山大 不是转向购物车页面,而是在页面左边无刷新地 学软件工程师资‘2+1’培养模式实训班——. 显示新添加进的图书,这样不影响用户的购物体 NET课程”的科研项目,开发团队凭该设计被评为 验。但用户登录后,匿名购物车的内容就会转移 唯一的年度优秀团队(在该团队中,笔者主要担任 到当前用户的购物车,在确认订单后,会向用户邮 系统分析员、数据库维护技术员和程序员3个角 箱发送一封订单生成确认邮件。 色)。经过一年多的使用证明,该系统效率高、使 (四)收藏夹及缺书登记模块的实现 用方便,并具有良好的可扩展性、实用性和可维 收藏夹和购物车不同,是属于用户个人名下 护性。 的内容,所以当点击收藏夹的时候是转向登录界 参考文献: [1]CSDN下载频道.NH2.0中文文档[EB/OL].(2009・l1・2O)[2010-02—18].http://download.csdn.net/source/1831782. [2]季玉茹,王德忠.基于B/S模式的教学质量网络评测系统设计[J].电脑知识与技术,2009(6):1525—1526. [3]粱锦雄.基于web的E-learning系统设计[J].科技情报开发与经济,2007(18):199—200. [4]赵成日.高校就业网站建设与探索[J].今日科苑,2009(4):271. [5]贾兰兰,王秀义.基于Struts+Hibernate技术的网上选课系统设计与实现[J].福建电脑,2009(1):141,130. (责任编辑孙宁华) 66