TransactionScope Troubleshooting
只要涉及到数据库的操作,那么使用事务就是难免的。如果我们使用LINQ to SQL作为数据访问层,那么LINQ提供的SubmitChanges()方法自身就包含了对事务的处理。当然,我们也可以利用System.Data.Common.DbTransaction对...
PetShop之ASP.NET缓存
《解剖PetShop》系列之四四 PetShop之ASP.NET缓存如果对微型计算机硬件系统有足够的了解,那么我们对于Cache这个名词一定是耳熟能详的。在CPU以及主板的芯片中,都引入了这种名为高速缓冲存储器(Cache)的技术。...
.Net中的设计模式——Strategy模式
.Net中的设计模式——Strategy模式一、模式概述 “面向接口编程”是面向对象编程思想中最重要的一个原则。根据“封装变化”的原理,我们常常将易于变化的部分进行抽象,定义为接口。对于调用者而言,只需要知道接...
.Net中的设计模式——Decorator模式
讲解.Net Framework中的Decorator模式。请访问:.Net中的设计模式——Decorator模式一、模式概述一个场景是我们要为一个对象动态添加新的职责,这个职责并不修改原有的行为,而是在原有行为基础上添加新的功能,就...
PetShop数据访问层之消息处理
《解剖PetShop》系列之三三、PetShop数据访问层之消息处理在进行系统设计时,除了对安全、事务等问题给与足够的重视外,性能也是一个不可避免的问题所在,尤其是一个B/S结构的软件系统,必须充分地考虑访问量、数据...
PetShop的系统架构设计
《解剖PetShop》系列之一前言:PetShop是一个范例,微软用它来展示.Net企业系统开发的能力。业界有许多.Net与J2EE之争,许多数据是从微软的PetShop和Sun的PetStore而来。这种争论不可避免带有浓厚的商业色彩,对于...
职责链模式在开发中的应用
我在《软件设计精要与模式》第19章中介绍了职责链模式在实际项目中的应用,由于引入了该模式,使得对象在职责划分上有了更清晰的结构,然而由于项目场景的诸多限制,总有几分“为模式而模式”的生涩感觉。最近在开发...
在敏捷开发中采用演进式架构设计
在敏捷开发过程中,我们还需要对系统架构进行设计吗?事实上,Martin Fowler在《Is Design Dead?》一文中已经给出了答案,那就是我们同样不能忽略对系统架构的设计。与计划性的设计(Plann...
也谈瀑布模型与敏捷开发
最近在敏捷中国发起了一场关于瀑布vs敏捷的讨论,论者纷纭。虽然争得热闹,但我个人认为,这样一个题目对于瀑布模型而言,本身就是不公平的。这样的一种比较,就好像拿现在的好莱...
设计之道
来源:《软件设计精要与模式》 设计没有标准,只有目标。如果硬要制定一个标准,那么标准就是快捷、适用与优雅。如何从没有标准的设计中体验设计的乐趣,寻求问题的解决之道,成了我们软件设计者生命不可承受之重。...
实施TDD时的常见问题
在InfoQ最近发表的一篇文章《实施TDD时的常见问题》中, Chad Meyers提出了关于TDD实施的问题,如下所示: 1. 我该容忍多大限度的预先设计?你怎么知道应该何时停止(也就是说,“当人们开始讨论...
解开最后期限的镣铐
最后期限(Deadline)是软件从业人员必须面临的最大困难与挑战,准确地说,它是所有程序员包括项目管理者的可怕梦魇。当堂吉珂德看到郊野之上的数十架风车,风车的翅翼如巨人的胳膊,正耀武扬威地奚落着这位中世纪后...
印第安人的灵魂——敏捷回顾
印第安人在赶了3天路后,会停下来小憩一天,因为他要等着自己的灵魂跟上来。敏捷开发在经历了一次迭代或者冲刺(Sprint)后,也需要休整,以等待团队的灵魂跟上来,这一过程被称之为“敏捷回顾(Agile Retrospective...
不要和你的客户谈方法
我有这样的一个经验,当你拿着你的proposal去和你的客户洽谈,希望通过超强的技术拿下这个项目时,往往不能如你所愿。诚然,当你炒出一大堆概念,例如面向对象设计、设计模式、AOP、敏捷或者SOA,客户的谈判代表往往...