DotNetNuke在电子商务领域的应用
2009-12-29朱娜刘丽丽
中国市场 2009年6期
[摘要]DotNetNuke是国外的开源内容管理系统。本文分析了构成DotNetNuke系统的三层结构,并以实例的形式阐述了DotNetNuke在电子商务领域的应用。本文旨在分析这一开源系统的架构并对其中的一个关键技术做深入的研究和应用。
[关键词]DotNetNuke;DNN;系统结构;电子商务
[中图分类号]F308
[文献标识码]A
[文章编号]1005-6432(2009)06-0063-02
1 引言
DotNetNuke(简称DNN)是一个免费、开源、可扩展的内容管理系统。可广泛应用于商务网站、企业内网(Intranet)和外网网站、在线内容发布网站。是建立在微软ASP.NET平台之上的一套Web应用框架。笔者已应用该开源系统成功地搭建出多个企业门户站点和电子商务站点:Qdos;Macphees;Growboating。在2008年圣诞节前夕DotNetNuke 5.O版本发布了,这也算是自2008年11月以来DolNetNuke获得风险投资后DNN团队送给我们的一份圣诞大礼吧。DNN作为一个优秀的开源的内容管理系统,从出现到现在的5.O版本,它在中国已经有了相当一部分忠实拥护者。但是对其研究的水平也仅仅停留在应用的级别。
2 DNN概述
DNN是加拿大人Shaun Walker发起并创立的遵从BSD协议的开源项目。其前身是IBuySpy Portal。IBuySpyPenal是微软当初为了鼓励开发者使用.Net Frame Work1.O Beta这项新技术而创建的开源项目。Shaun Walker在此项目基础上开发和增加了新的功能使得在线建立网站变成了件容易的事情,并于2002年年底将其发布为IBuyspy WorkShop,此版本就是DNN的雏形。
DNN是一个伴随微软.NET技术不断发展的开源项目,其官方站点是http://www.dotnetnuke.com。目前最新的版本是DNN5.O.O。本文所阐述的内容是围绕DNN4.4.1展开的。
DNN的系统结构
系统采用B/S结构,其中服务器端可划分成Web服务器和数据库服务器。服务器端采用面向对象的三层结构,提高了系统的可维护性和扩展性。通过分析DNN架构方式可为我们构建类似项目提供了很好的参考模板。
其中Web服务器端按逻辑可划分成表示层(Prcsentation Layer);业务逻辑层(Business Logic Layer);数据访问层(Data Access Layer)。
2.1表示层(PL)
表示层直接面向用户,是客户访问DNN站点的接口。这一层由以下元素构成:
Web页面(Web Tabs):在DNN中Web页面跟常规的Web页面不同,它们是由存储在T_Tab表中的记录和与这些tabs相关联的modules(模块)组成。
皮肤(skins)和容器(Containers):这里的皮肤和容器分别指网页和模块的外观,DNN采用了装饰器模式使得内容和显示样式的功能分离,Default.aspx根据用户的设置加载相应的皮肤和容器。
模块(Module):模块是构成DNN的基本元素,它在表示层的呈现形式是模块(Moduie),Default.aspx通过加载模块用户控件为用户提供访问模块功能的接口。
2.2业务逻辑层(BLL)
业务逻辑层由三部分组成:自定义业务对象(CBO);CBO控制器(CBO Contr01);抽象类数据提供者(Data Provider)。CBO完全由属性构成,CBO控制器则完全由方法构成。Data Provider是数据访问层的父类,包含了一个工厂方法,通过反射技术调用数据访问层中具体的方法为CBO提供源数据。DNN采用DataReader这个ADO.NET中的组件作为数据访问层和业务逻辑层间的数据传输工具,DataReader是单向只读数据流。为了减少将DataReader中的每个字段值赋给CBO属性的代码量,DNN提供了名为CBO Hydrator的专门类,其中的方法FilIObject(ByVal dr As IDataReader,ByVal objType AsType)将DataReader数据流赋给单个CBO对象实例;FillCollection(ByVal dr As IDataReader,ByVal objType AsType)将DataReader数据流赋给一系列CBO对象实例。
2.3数据访问层(DAL)
数据访问层的数据访问类是业务逻辑层抽象类DataProvider的子类,是对Data Provider中的抽象方法的具体实现,提供了访问数据库的具体方法,是与物理数据库紧密耦合的一层。
3 DNN在电子商务领域的应用
在电子商务网站中,企业介绍等除了购物及结算部分完全可以用现有的DNN模块来实现,如:HTML editer模块,Search mput及Search result模块等。下面我们着重介绍购物结算模块,这些模块可以利用Module Defini.tions中一键安装完成:
3.1产品目录(eStore Catalogue product display editor)
eStore Catalogue product display editor提供了非常机动的添加产品及其介绍、图片、视频等一切产品属性的页面,而且用户可以自由地定制。在产品显示页面,可以以各种形式显示,包括:树状结构、下拉列表以及滚动列表。这个产品目录模块的数据结构可以满足囊括包括大宗商品,预订及租赁产品,票务产品,书籍杂志,电子产品等。
3.2购物车(eStore Shopping Cart)
购物车有迷你模式购物车和完全模式的购物车。购物车模块包括:会员和匿名结算;喜爱产品列表;快速结账;给好友推荐该产品等电子商务网站都有的功能,并且这些子模块都是可以定制的。
3.3结算模块(eStore Order Processing)
结算模块包括biHing子模块和shipping子模块。在这里,用户可以查看订购历史;可以自己定制确认E-mail的内容和格式;可以定制所有显示的文本;可以定制发票打印格式,信用卡备忘以及订购产品的项目;付款方式集成了Cash on Delivery;Cash In Advance,;Credit Card;Debitcards;PayPal等可以满足各种用户的需求。
3.4订购历史记录(Order history)
可以浏览用户所有的订购历史记录,可以很方便地打印订单。所有页面都可以用户自己定制为SSL协议页面。
4 结语
本文概述了开源内容管理系统DNN系统架构,并说明了DNN快速建站在电子商务领域的应