电子商务的理想设计模式-CMP

原创 2004年10月10日 10:50:00
                                                      电子商务的理想设计模式-CMP

                                                            
 作者:abin    时间:2004.10.10  出处:http://blog.csdn.net/abinstudio     
  
        电子商务网站往往要求具有很高的灵活性,因为电子商务网站面对的是挑剔的顾客,是销售的最前沿。传统基于组件的设计模式(Component-Managed Persistence 托管组件式持久性)在设计电子商务网站的时候显得有点笨拙,每一数据库数据结构的修改都要导致从新编译底层组件,为了避开这个缺点,我将使用(Container-Managed Persistence  托管容器式持久性),也就是EJB中说的CMP。

       我并不会使用JAVA,但是从我阅读过的一些资料来看JAVA实现CMP要比.NET容易,而且更早提出这样的设计模式。从总的大局来说,CMP在开发的时候也比传统的托管组件式持久性来的麻烦,但是一旦完成,对以后的电子商务网站的维护将是很大的灵活性。
        CMP是这样一种设计模式:所有的数据操作无非就是CRUD(Create、Retrieve、Update、Delete)四种,CMP把CRUD映射到一个XML文件中(以后的设计中我将使用Web.config作为其托管),这种映射包括所有的数据库字段,字段数据类型,CRUD操作名称,存储过程名称(我将使用SQL Server开发这个电子商务网站,并全部使用存储过程)。下面是一个映射的片断:
<ContainerMappingId>CartContents</ContainerMappingId>                         // 映射唯一标识
<ContainedClass>CartContents</ContainedClass>
   <Delete>                                                                                                     //CRUD命令映射
    <CommandName>WebShop_Delete_ShoppingCart</CommandName>   // 存储过程名称映射
    <Parameter>
     <ClassMember>CartId</ClassMember>                                                 //数据库字段名称映射
     <ParameterName>@CartId</ParameterName>                                      //存储过程参数映射
     <DbTypeHint>Varchar</DbTypeHint>                                                   //数据类型
     <ParamDirection>Input</ParamDirection>                                              //数据操作方向(与存储过程对应)
     <Size>50</Size>                                                                                    //数据大小
    </Parameter>
   </Delete>
……
……
……

经过映射,以后的数据库字段变化,就不需要更改组件中的参数了,因为组件是从Web.config中读取这些参数的,只要同时更改Web.config文件对应的映射就可以了,不需要重新编译组件。由于CRUD命令也被映射,所以CMP的数据操作甚至都不需要了解数据访问方法,业务逻辑与数据访问层没有如何联系。

        总结一下,使用CMP的好处:首先,数据库变化不需要重新编译数据操作层,这个是最直接的体现,也是最好理解的。 其次,由于数据操作被封装再CMP中,业务对象数据访问没有如何联系,这样就可以很方便的使用多种数据来源,比如 XML,Access,SQL Server ,Web Services 。第三,我曾经写过一些自己经常使用的数据库操作层,用来执行存储过程的,这样在编写其他项目的时候只要稍微做一点修改,从新编译就可以使用,如果使用了CMP,根本就不需要编译,因为所以的数据定义都在Web.config做了定义,只要按照相应格式更改就可以直接使用。
    缺点:开发过程相对托管组件式持久性复杂,在Web Application中才被应用,Windows程序应用少。

设计模式之基础篇UML(类图)

在博文开始之前,还请大家原谅我的懒惰,这段时间一边忙着找工作,一边忙着几个项目的维护和增加功能,每天上完班回家都很疲惫,导致了博客一直没有更新。今天面试了一家外企 Garmin 公司,事先也没好好研究...
  • u012551350
  • u012551350
  • 2016年09月13日 21:53
  • 4498

《Java设计模式》之策略模式

策略模式属于对象的行为模式。其用意是针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。策略模式使得算法可以在不影响到客户端的情况下发生变化。 1,什么是策略模式...
  • u011225629
  • u011225629
  • 2015年08月20日 08:07
  • 1213

电子商务的概念及定义

一. 电子商务的概念及定义电子商务(e-business,e-comerce,e-trade)从英文的字面意思上看就是利用现在先进的电子技术从事各种商业活动的方式。电子商务的实质应该是一套完整的网络商...
  • yinzhaotun
  • yinzhaotun
  • 2006年07月16日 17:58
  • 2608

python3中替换python2中cmp函数

本文地址:http://blog.csdn.net/sushengmiyan/article/details/11332589 作者:sushengmiyan 在python2中我们经常会使用cmp函...
  • qq_24918869
  • qq_24918869
  • 2016年08月10日 20:20
  • 9586

电子商务研究方向 - 综述篇

1       前言经过4个月对电子商务相关内容系统的学习,我认识到电子商务涉及的层面相当广泛,从电子商务涉及的管理理论、法律问题,到关系电子商务系统实现细节的开发技术,每一个方面都值得深入学习,细心...
  • alvin_2005
  • alvin_2005
  • 2006年07月23日 09:20
  • 4341

sort()/qsort()函数的用法及cmp比较函数的写法

转自:白马王的博客 一、STL中的sort函数: 头文件:#include Tips:    STL中的sort函数有两种:    templateRanIt>        void sort...
  • Jessie_is_Gemini
  • Jessie_is_Gemini
  • 2016年03月01日 20:59
  • 2281

关于汇编语言中cmp指令的小笔记

cmp是比较指令,cmp的功能是相当于减法指令,只是不保存结果.cmp指令执行后,将对标志寄存器产生影响.其他相关指令通过识别这些被影响的标志寄存器来得知比较结果. cmp指令格式: cmp...
  • zer1123
  • zer1123
  • 2016年12月31日 12:38
  • 4358

OP AMP - 理想运算放大器和非理想放大器(一)

理想运放的特点是: 输入电流: Iin =0 输入偏置电压: Vos = 0 输入阻抗: Zin = Infinite 输出阻抗: Zout = 0 增益 : G=Infinite 几...
  • iamlvshijie
  • iamlvshijie
  • 2012年04月25日 18:43
  • 4585

C++ 中sort 函数及 cmp 自定义规则的使用

需要头文件 #include using namespace std; 这个函数可以传两个参数或三个参数。第一个参数是要排序的区间首地址,第二个参数是区间尾地址的下一...
  • u011521976
  • u011521976
  • 2013年11月30日 23:38
  • 4715

sort 和qsort函数cmp函数各种写法

用sort 函数,要加头文件以及using namespace std;另外文件的后缀要改为.cpp 用qsort函数,要加头文件这个是c里的,文件的后缀可以是.c   int型: sort函...
  • wyjwyl
  • wyjwyl
  • 2015年07月22日 21:48
  • 803
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:电子商务的理想设计模式-CMP
举报原因:
原因补充:

(最多只允许输入30个字)