由于在PetShop中仅对订单的处理使用了异步处理方式,因此在消息接口IMessaging中,仅定义了一个IOrder接口.因此,如果是实例化如下的对象,将会调用PetShopQueue的Receive()方法,而不是子类Order的Receive()方法:PetShopQueuequeue=newOrder();queue.Receive();从设计上来看,由于PetShop采用"面向接口设计"的原则,如果我们要创建Order对象,应该采用如下的方式:IOrderorder=newOrder();order.Receive();考虑到IOrder的实现有可能的变化,PetShop仍然利用了工厂模式,将IOrder对象的创建用专门的工厂模块进行了封装.
接下来介绍MasterPage.master页面,这是一个默认的模板页面,好象一个支架一样,其他页面只要包含它就可以在这个支架上添加内容,从而简少了代码总量,并使得程序有统一的风格。我们来看一个完整的页面products.aspx,其中使用了MasterPageFile="~/MasterPage.master"命令使得页面的框架自动生成,我们要做的就是添加上需要的页面信息,这里添加了一个产品控件ProductControl,代码一共只有六行,明显很简单J。Product.aspx是点击一个产品类别是生成的页面,通过ProductControl控件生成产品的列表,并以定义好的格式显示;
其中的theme定义了控件的外观,styleSheetTheme定义了页面样式信息。第二句则是用户自定义控件的注册信息,注册了一个导航控件,它的实现在Src属性中定义,感兴趣的可以去看看实现。记住,以<asp:Name....开头的是vs2005自带的控件,以<PetShopControl:Name....开头的是用户自定义的控件,经过注册后可在页面中使用。这个控件定义了一个输入框,用户可以输入要搜索的内容,然后点击搜索按钮控件就可以执行搜索。查看这个控件的定义:发现它使用了一个Repeater控件,这个控件能将重复得将信息显示在导航栏中,并生成超链接。
昨天说到了Default.aspx页面今天来讲Products.aspx页面,该页面由有一个母版页和一个用户控件组成。其中的用户控件中只包涵了一个CustomList自定义控件它继承至DataList并实现分页:publiceventDataGridPageChangedEventHandlerPageIndexChanged;overridepublicobjectDataSource{set{try{dataSource=(IList)value;//非泛型列表的基接口,避免用户将没有继承Icollection的类型传递进来如int型之类的。ItemCount=dataSource.Count;//获取dataSource中元素的数量}catch{dataSource=null;ItemCount=
PetShop4.0采用了三层的架构,表示层业务逻辑层和数据访问层。表示层展示用户看到的界面,包含在web项目文件里;业务逻辑层(BLL:BusinessLogicLayer)处理后台的操作,比如定单的处理,用户信息的修改,物品的信息都在这里得到加工;
我是asp.net的新手,刚下了这个宠物商店的源代码,准备边研究代码边学习asp.net的基本语法。我准备先从整体架构,再到实现的细节,一步一步得学习这个示例,并把学习心得写下来,希望对刚学习PetShop4.0的新手们有点帮助(老鸟们就权当看闲情小说拉)。
Petshop4.0超级详细介绍(一)今天辞职了,看了一下petshop4.0,通俗的把代码解释一下,希望能给初学者提供一些帮助,写的不好的地方还请大家理解!现在开始吧。我们从启始页Default.aspx开始,微软的启始页当然是Default.aspx啦,该页面有一个用户控件NavigationControl先来说说它,从简单入手嘛。从它的Page_Load事件开始:protectedvoidPage_Load(objectsender,EventArgse){GetControlStyle();//设置<td>的样式,在webconfig中已经配置了网站的全局样式App_Themes中有它的详细配置资料,在这里进行样式的选择BindCategories();//这里对Repeater控件进行了绑定,请看BindCategories()方法;//让它选择了连接会变颜色stringcategoryId=Request.QueryString["categoryId"];if(!string.IsNu
NetPetShop4.0的层次结构。从这一点来说,B/S结构可认为是三层结构----数据库服务器层、WEB应用服务器层和客户端浏览器一层。数据访问层直接访问和操作数据库,商务逻辑层调用数据访问层,表现层调用商务逻辑层。比较Duwamish7.0与PetShop4.0,后者项目众多,但使用工具生成的代码很少。当数据库的表结构更改后,使用代码生成器产生的代码通常要重新产生,因次如果对这两个项目中的代码做了手工的改动,在重新生成代码时,改动的代码将会丢失。
策略模式属于对象行为型模式,主要针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。策略模式中有三个对象:(1)环境对象:该类中实现了对抽象策略中定义的接口或者抽象类的引用。(2)抽象策略对象:它可由接口或抽象类来实现。利用策略模式构建应用程序,可以根据用户配置等内容,选择不同有算法来实现应用程序的功能。在PepShop4.0中的应用,PetShop4.0中可以使用同步和异步两种不同的算法来实现定单的处理,根据这一需求,使用策略模式是相当好的一种解决方案。
petshop4.0设计说明一、项目名称及描述:(实现步骤为:4-3-6-5-2-1)1、WEB=表示层2、BLL=业务逻辑层3、IDAL=数据访问层接口定义4、Model=业务实体5、DALFactory=数据层的抽象工厂(创建反射)6、SQLServerDAL=SQLServer数据访问层/OracleDAL=Oracle数据访问层。二、项目引用关系1、Web引用BLL。2、BLL引用IDAL,Model,使用DALFactory创建实例。5、DALFactory引用IDAL,通过读取web.config里设置的程序集,加载类的实例,返回给BLL使用。6、SQLServerDAL引用Model和IDAL,被DALFactory加载的程序集,实现接口里的方法。
序号项目名称程序集名称assemblyname...
petshop4.0中的sqlhelper文件。
要上班了,不能再随便忽悠,开始好好看看petshop,结果碰上了一些以前没有的问题(以前也安装过petshop,只是没有好好看:-(),记录下碰上的问题。
今天从网上下了petshop4.0,想看看里面的代码,没想到安装数据库的时候就碰到了一些有意思的麻烦,遂将收获记录在下:(1)建库脚本(以及删除库的脚本)里大量使用了osql和aspnet_regsq...
MSMQMessaging模块中,Order对象实现了IMessaging模块中定义的接口IOrder,同时它还继承了基类PetShopQueue,其定义如下:publicclassOrder:PetShopQueue,PetShop.IMessaging.IOrder方法的实现代码如下:publicnewOrderInfoReceive(){//ThismethodinvolvesindistributedtransactionandneedAutomaticTransactiontypebase.transactionType=MessageQueueTransactionType.Automatic;return(OrderInfo)((Message)base.Receive()).Body;}
在PetShop中,系统需要处理的数据库对象分为两类:一是数据实体,对应数据库中相应的数据表。第二类数据库对象则是数据的业务逻辑对象。这里所指的业务逻辑,并非业务逻辑层意义上的领域(domain)业务逻辑(从这个意义上,我更倾向于将业务逻辑层称为"领域逻辑层"),一般意义上说,这些业务逻辑即为基本的数据库操作,包括Select,Insert,Update和Delete。然而,当我们利用配置文件和反射功能时,具体工厂的创建就显得有些"画蛇添足"了,我们完全可以在配置文件中,直接指向具体的数据库对象实现类,例如PetShop.SQLServerDAL.IOrder。
微软推荐的分层式结构一般分为三层,从下至上分别为:数据访问层、业务逻辑层(又或成为领域层)、表示层,如图所示:如果在表示层中需要增加一个功能,为保证其设计符合分层式结构,可能需要在相应的业务逻辑层和数据访问层中都增加相应的代码。在数据访问层(DAL)中,仍然采用DALInterface抽象出数据访问逻辑,并以DALFactory作为数据访问层对象的工厂模块。图七中BLL是业务逻辑层的核心模块,它包含了整个系统的核心业务。也正因为此,PetShop将核心的业务逻辑都放到了一个模块BLL中,并没有将具体的实现和抽象严格的按照模块分开。
在程序实现上就用Assembly.Load(AssemblyName).CreateInstance(typeName)在程序运行时动态创建实例.PetShop4.0中多次应用了与配置文件相强合的反射注入技术。下面就介绍一下反射注入技术在PetShop4.0多层应用程序和应用。PetShop.执行Assembly.Load(AssemblyName).CreateInstance(typeName)进行动太创建实例其实PetShop4.0中实现反射注入技术都是上面的那种思想。所以下面就省去配置文件中的信息和实现的代码实现信息,只是统计反射注入技术在PetShop4.0中应用的位置信息。publicstaticPetShop.PublicstaticPetShop.
汉化petshop4.0汉化的petshop没什么特别的只是注释什么的还有标题汉化英语不好的可以看看帮助学习参考一下吧我安装的时候使用时有时有问题不能预览但我发现先安装英文版的petsho...
摘要:我对Petshop4.0中反射注入技术的学习,请多多指教!
摘要:我对petshop4.0中策略模式的学习,请多多指教!
抽象工厂模式知识,以及简单工厂模式在Petshop4.0中的应用!
做了一个小blog,基本是petshop4.0的项目结构。项目列表:Web.SQLServerDALDALFactoryDBUtilityMODEL.
四.PetShop4.0Q&A:Q:PetShop4.0的下载地址?Q:PetShop4.0有哪些新特性?Transactions是.NETFramework2.0下出现的一个事务控制的命名空间,它是处理替代COM+来处理分布式事务的一种新的途径。Q:PetShop4.0中用到的一些设计模式。
Q:PetShop4.0有哪些新特性?5.使用了ASP.NET2.0中的MasterPages,WizardControl等6.使用SqlCacheDependency缓存处理策略。Q:PetShop4.0中用到的一些设计模式A:常用的有抽象工厂、外观模式、策略模式等,可以参考BruceZhang的。
经过近一天的努力,初步实现了PetShop4.0的大部分功能(CheckOut暂时还没做),WebForm95%以上的代码沿用PetShop4.0,从使用的角度没有任何区别。能做到这样,基本上是由NBear框架里的ServiceInterfaces与PetShop4.0中的BLL之间接口做个映射关系,但采用NBear后代码量明显减少。代码下载v0.1PetShop4.0安装文件下载安装数据库的脚本文件安装方法:1、数据库的安装方法a.如果没有安装过PetShop4.0,可以从上面的链接处下载并安装。