题记:妈的,研究了PetShop之后才知道什么叫设计... 作为动态网页的开发人员,PetShop系统是必须要去研究的一个项目。...下面的图是PetShop系统的架构图,看得我两眼昏花,不过慢慢就好了,能尝试去明白。 下面这张图单单这样看实际看不太明白。
public Pet(int number,String variety,String color,int age,int price){
接下来我们先讨论一下整个PetShop的结构。...除了实现某种业务功能外,还有一个模块提供一些非业务功能的实现,比如异常处理(Exception Handling)、日志(Instrumentation)、审核(Auditing)、缓存(Caching...如果频繁调用,必然对性能有很大的影响,产品信息是相对稳定的信息,所以可以通过缓存的机制改善应用程序的性能。在PetShop中,我们通过AOP的方式提供对缓存的实现。...CachingCallHandlerAttribute采用基于参数的缓存机制,它的实现原理是这样的:当执行一个应用了CachingCallHandlerAttribute方法的时候,PIAB以传入方法的参数列表为...Key,判断缓存中是否有相应的结果,如果有则直接返回而无须执行方法体;如果没有执行方法体,将执行结果进行缓存。
PetShop.Model PetShop.Model 业务实体 3 BLL PetShop.BLL PetShop.BLL 业务逻辑层 4 DALFactory PetShop.DAL PetShop.DALFactory...数据层的抽象工厂 5 IDAL PetShop.IDAL PetShop.IDAL 数据访问层接口定义 6 SQLServerDAL PetShop.SQLServerDAL PetShop.SQLServerDAL...SQLServer数据访问层 7 OracleDAL PetShop.OracleDAL PetShop.OracleDAL Oracle数据访问层 8 DBUtility PetShop.DBUtility...缓存依赖类的工厂类 10 ICacheDependency PetShop.ICacheDependency PetShop.ICacheDependency 缓存依赖类接口 11 TableCacheDependency...PetShop.TableCacheDependency PetShop.TableCacheDependency 缓存依赖实现类 12 IBLLStrategy PetShop.IBLLStrategy
这两天 PetShop is Evil?等对PetShop 的讨论很多,我在这里也发一篇凑凑热闹。...我下面主要是对Asp.net 2.0新增的缓存管理方面的内容和PetShop 4的缓存处理的一个认识,大家一起来学习,交流才能进步,欢迎拍砖头。 ...MS PetShop4.0对 缓存的管理 在PetShop中,需要对数据表实现Cache。...我下面将配置文件和PetShop4的配置文件作个比较。 PetShop4的配置文件 <!
用户做比较的这个项目就是Petshop。正因为Petshop肩负着上面所说的重任,各方面必须是最优的,架构设计应该是经过慎重考虑的。所以其一经推出,便成为了开发者、架构师等人学习、研究的典范。...日前微软推出了基于.NET Framework 2.0开发的Petshop 4。...新的Petshop4实现了与Petshop 3相同甚至更多的特性,由于采用了Master Pages,Membership,以及Profile,SqlCacheDependency,但是代码量却减少了四分之一...的 public void Insert(PetShop.Model.OrderInfo order)。...10 ICacheDependency 缓存依赖类接口 11 TableCacheDependency 缓存依赖实现类 12 IBLLStrategy 同步/异步处理策略接口(实现在bll根据配置反射选择
用户做比较的这个项目就是Petshop。正因为Petshop肩负着上面所说的重任,各方面必须是最优的,架构设计应该是经过慎重考虑的。所以其一经推出,便成为了开发者、架构师等人学习、研究的典范。...日前微软推出了基于.NET Framework 2.0开发的Petshop 4。...新的Petshop4实现了与Petshop 3相同甚至更多的特性,由于采用了Master Pages,Membership,以及Profile,SqlCacheDependency,但是代码量却减少了四分之一...的 public void Insert(PetShop.Model.OrderInfo order) 。...工厂类 10 ICacheDependency 缓存依赖类 接口 11 TableCacheDependency 缓存依赖实现类 12 IBLLStrategy 同步/异步处理策略接口(实现在bll根据配置反射选择
petshop4充分体现了面向接口编程的思想,就是给你一个接口你别管我是怎么实现的,你只管用别说其他的。...namespace PetShop.BLL { /// /// A business component to manage products /// /// Interface for the Product DAL /// public interface...namespace PetShop.SQLServerDAL { public class Product : IProduct { //Static constants...后面还有一些消息队列MSMQMessage利用cache缓存以后达到异步处理购物车里订单的功能! 刚开始看应先从先从Product入口,关于Product的一些操作串联起来看一遍!
; using PetShop.CacheDependencyFactory; namespace PetShop.Web { public partial class ItemsControl...; using PetShop.IDAL; namespace PetShop.BLL { /// /// A business component to...specific libraries //PetShop busines entity library using PetShop.Model; namespace PetShop.IDAL...Possible values: PetShop.SQLServerDAL for SqlServer, PetShop.OracleServerDALfor Oracle. –>...; using PetShop.IDAL; using System.Collections.Generic; using PetShop.DBUtility; namespace PetShop.SQLServerDAL
下面来看.net petshop是怎么实现这个cart的 基本的实现主要是BLL里的Cart和Model里的CartItemInfo,而Web.ProcessFlow的CartControler则负责具体的实现
我一共把系统分了五大块,最后一块命名为"其他", 缓存依赖相关 CacheDependencyFactory 缓存依赖类的工厂类 ICacheDependency 缓存依赖类接口...缓存依赖在petshop4.0中就是把页面输出缓存和数据库中的表关联起来,如果数据库中的表有任何改动的话,缓存失效。...缓存的作用就相当大了,再加上个缓存依赖作用就相当“暴力”了。...等我以后分析了这块就明白了 2.profile相关 有个前辈在介绍profile的时候说:以人为本的profile.作用是让用户可以做一些个性化的选择.比如让用户选择所喜欢的网站风格,让用户选择是否弹出消息提醒等, 在petshop4.0...中主要是记录用户的购物车信息和意向清单. profile设置分为针对登陆用户和非登陆用户的.具体的设置办法将在后面分析 3.消息相关 消息队列在企业级应用程序中非常多见,以petshop4.0为例,消息队列的好处
8.3 ClientBase揭秘 8.3.1 ClientBase简介 8.3.2 ChannelFactory的缓存机制...功能简介 10.1.2 PetShop的物理结构 10.1.3 PetShop的模块划分 10.1.4 PetShop模块的层次划分... 10.2 PetShop设计原理 10.2.1 如何实现用户验证 10.2.2 上下文的共享及跨域传递 10.2.3... 异常处理 10.2.4 依赖注入在PetShop中的应用 10.2.5 AOP在PetShop中的应用 10.2.6 MVP...模式在PetShop中的应用
前面简单介绍了petshop4.0以及SQL2005的安装图解,那么下面我们就来介绍下petshop4.0的下载和petshop4.0的安装 petshop4.0下载 petshop4.0...aea6-46b9-8e11-810df5df1032/Microsoft%20.NET%20Pet%20Shop%204.0.msi 这个是官方的下载地址,要怎么下载应该不要教了吧 petshop4.0...安装 1、双击下载好的petshop4.0文件:Microsoft .NET Pet Shop 4.0.msi 2、进入petshop4.0安装欢迎界面(Welcome to the...Setup Wizard),单击“Next” 3、进入是否同意安装许可界面(License Agreement),后选中“I Agree”单选框,最后单击“Next” 4、此界面主要显示Petshop4.0...此界面让我们选择是仅安装代码还是安装数据库和代码 我们这里选择“Full Install(Source Code and Databases)”后单击“Next” 6、进入选择petshop4.0
配置一个Map POJO类 package com.xgj.ioc.inject.construct.utilSchema; import java.util.Map; public class PetShop..." class="com.xgj.ioc.inject.construct.utilSchema.PetShop"> <property name="pets" ref="pets" /...petShop = ctx.getBean("petShop", PetShop.class); petShop.petsInfo_Map(); } } 运行结果 ?...petShop = ctx.getBean("petShop", PetShop.class); logger.info("---------------Map-----------...---"); petShop.petsInfo_Properties(); } } 运行结果: ?
PetShop4架构设计分析(三) petshop4.0 详解之三(PetShop数据访问层之消息处理) 三、PetShop数据访问层之消息处理 在进行系统设计时,除了对安全、事务等问题给与足够的重视外...要提供整个系统的性能,还可以从数据库的优化着手,例如连接池的使用、建立索引、优化查询策略等等,例如在PetShop中就利用了数据库的Cache,对于数据量较大的订单数据,则利用分库的方式为其单独建立了Order...在PetShop4.0中,使用了Microsoft Messaging Queue(MSMQ)技术来完成异步处理,利用消息队列临时存放要插入的数据,使得数据访问因为不需要访问数据库从而提供了访问性能,至于队列中的数据...从模块化分上,PetShop自始自终地履行了“面向接口设计”的原则,将消息处理的接口与实现分开,并通过工厂模式封装消息实现对象的创建,以达到松散耦合的目的。...asynchOrder = PetShop.MessagingFactory.QueueAccess.CreateOrder(); public void Insert(PetShop.Model.OrderInfo
上一篇文章主要讨论的是PetShop的模块划分,在这一篇文章中我们来讨论在一个模块中如何进行层次划分。...} 113: } 114: } 115: } 注: 该DbHelper仅仅为演示之用,如果用于真正的开发中,应该进行一些优化,比如利用存储过程的参数缓存提高性能等...; 6: using Artech.PetShop.Orders.BusinessEntity; 7: namespace Artech.PetShop.Orders.DataAccess...; 5: using Artech.PetShop.Orders.BusinessEntity; 6: namespace Artech.PetShop.Orders.DataAccess...; 3: using Artech.PetShop.Orders.BusinessEntity; 4: using Artech.PetShop.Orders.DataAccess;
shop = ctx.getBean("petShop", PetShop.class); shop.petsInfo(); } } 运行结果 List List...shop = ctx.getBean("petShop", PetShop.class); shop.petsInfo(); } } 运行结果: 如果Map元素的...shop = ctx.getBean("petShop", PetShop.class); shop.petsInfo(); } } 运行结果 强类型集合...shop = ctx.getBean("petShop", PetShop.class); shop.petsInfo(); } } 运行结果 集合合并 Spring...shop = ctx.getBean("petShop", PetShop.class); shop.petsInfo(); } } 运行结果
通过上一篇了解了模块内基本的层次划分之后,接下来我们来聊聊PetShop中一些基本基础功能的实现,以及一些设计、架构上的应用如何同WCF进行集成。...在PetShop中,MembershipConfigData和服务契约一起定义在Infrastructures.Service.Interface项目中。...; 6: using Artech.PetShop.Infrastructures.Service.Interface; 7: 8: namespace Artech.PetShop.Infrastructures...比如在PetShop中,服务端进行审核(Audit)的时候,须要获取当前登录的用户名。而登录用户名仅仅对于Web服务器可得,所以在每次服务调用的过程中,需要从客户端向服务端传递。...在PetShop中,我们通过WCF的扩展实现此项功能。
; } }, } // 将内部对象 dog 的属性、函数 // 委托至暴露在外的 petShop 上 delegates(petShop, 'dog') .getter('name')...' // 修改内部对象属性 petShop.age = 2; console.log(petShop.dog.age) // => 2 // 同时访问和修改内部对象属性 console.log(petShop.sex...) // => '猛汉' petShop.sex = '公主'; console.log(petShop.sex); // => '公主' // 调用内部对象函数 petShop.bar(); //.../index'); const petShop = { dog: { name: '旺财', }, } delegates(petShop, 'dog') .fluent('name...'); // 不传参数,获取内部属性 console.log(petShop.name()); // 传参数,修改内部属性 // 还可以链式调用 console.log( petShop.name
PetShop4.0采用了三层的架构,表现层、业务逻辑层和数据层。...程序片段: using PetShop.IDAL; public class Product : IProduct{ } 说明Product 实现了在命名空间PetShop.IDAL...using System; using System.Collections.Generic; using PetShop.Model; namespace PetShop.IDAL{...( PetShop.SQLServerDAL ).CreateInstance( PetShop.SQLServerDAL.Product );利用反射特性动态加载 PetShop.SQLServerDAL.dll...,同时创建了 PetShop.SQLServerDAL.Product 对象的实例,最终 以接口PetShop.IDAL.
领取专属 10元无门槛券
手把手带您无忧上云