摘要:                    
概述 在软件系统中,经常面临着“一系列相互依赖的对象”的创建工作;同时由于需求的变化,往往存在着更多系列对象的创建工作。如何应对这种变化?如何绕过常规的对象的创建方法(new),提供一种“封装机制”来避免客户程序和这种“多系列具体对象创建工作”的紧耦合?这就是我们要说的抽象工厂模式。 意图 提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。 模型图 逻辑模型: 物理模型: 生活中的例子 抽象工厂的目的是要提供一个创建一系列相关或相互依赖对象的接口,而不需要指定它们具体的类。这种模式可以汽车制造厂所使用的金属冲压设备中找到。这种冲压设备可以制造汽车车...                阅读全文
            
        随笔分类 - [01].NET技术
艾伟_转载:ASP.NET底层的初步认识与理解
2011-08-29 00:20 by 狼人:-), 120 阅读, 收藏,
摘要:                    
最近在国外的网站乱走一通,发现一些比较好的文章,收集整理加于自己的理解,作为笔记形式记录下来,让以后自己有个回忆。 ASP.NET是一个非常强大的构建Web应用的平台,它提供了极大的灵活性和能力以致于可以用它来构建所有类型的Web应用.绝大多数的人只熟悉高层的框架如WebForms和WebServices-这些都在ASP.NET层次结构在最高层.在这篇文章中我将会讨论ASP.NET的底层机制并解释请求(request)是怎么从Web服务器传送到ASP.NET运行时然后如何通过ASP.NET管道来处理请求. ASP.NET是一个请求处理引擎.它接收一个发送过来的请求,把它传给内部的管...                阅读全文
            
        艾伟_转载:解惑答疑:C#委托和事件
2011-08-29 00:20 by 狼人:-), 196 阅读, 收藏,
摘要:                    
相信很多人一直为C#委托和事件所困惑,尤其是C#的初学者,学到这一部分会感觉比较困难,很有可能就放弃了,而且.NET对委托和事件封装得挺好,一般都不怎么用到自定义的委托和事件,所以放弃学习该技术就有了借口! 网上也有不少此类的文章,最具代表性的是张子阳的C#中的委托和事件这篇,写得的确很好,得到很多读者的赞赏,但我
看评论,还是发现了些问题,因为有不少读者是看了一遍又一遍,每次感觉都蛮好,可是隔一段时间,对“委托和事件”又迷糊了,于是又来看!我真搞不懂,为什
么会出现这种情况!后来想想,文章虽好,但总结的地方没有把重点列出来;再者,读者跟着作者的思路,的确能把文章看懂,但是读者自己不得...                阅读全文
            
        艾伟_转载:一个.NET委托的故事:彼得,老板和宇宙
2011-08-29 00:20 by 狼人:-), 157 阅读, 收藏,
摘要:                    
紧耦合 从前,在南方一块奇异的土地上,有个工人名叫彼得,他非常勤奋,对他的老板总是百依百顺。但是他的老板是个吝啬的人,从不信任别人,坚决要求随时知道彼得的工作进度,以防止他偷懒。但是彼得又不想让老板呆在他的办公室里站在背后盯着他,于是就对老板做出承诺:无论何时,只要我的工作取得了一点进展我都会及时让你知道。彼得通过周期性地使用“带类型的引用”(原文为:“typed reference” 也就是delegate??)“回调”他的老板来实现他的承诺,如下: Code highlighting produced by Actipro CodeHighlighter (freeware)...                阅读全文
            
        艾伟_转载:.NET设计模式:建造者模式(Builder Pattern)
2011-08-29 00:20 by 狼人:-), 178 阅读, 收藏,
摘要:                    
概述 在软件系统中,有时候面临着“一个复杂对象”的创建工作,其通常由各个部分的子对象用一定的算法构成;由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合在一起的算法确相对稳定。如何应对这种变化?如何提供一种“封装机制”来隔离出“复杂对象的各个部分”的变化,从而保持系统中的 “稳定构建算法”不随着需求改变而改变?这就是要说的建造者模式。 本文通过现实生活中的买KFC的例子,用图解的方式来诠释建造者模式。 意图 将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。 模型图 生活中的例子 生成器模式将复杂对象的构建与对象的表现分...                阅读全文
            
        艾伟_转载:浅析IHttpModule和IHttpHandler
2011-08-29 00:20 by 狼人:-), 171 阅读, 收藏,
摘要:                    
最近开发中涉及到一些使用IHttpModule和IHttpHandler,只是储备不够,抓紧查询MSDN学习了一下,将学习点滴记录一下。
一、IHttpModule
查看这个接口的代码可以发现,它是由两个方法组成:
public interface IHttpModule{ void Dispose(); void Init(HttpApplication context); }
看到两个方法及方法标签,就明白这个IHttpModule接口有什么作用了,Init方法中传入了一个HttpApplication参数,它提供对 ASP.NET 应用程序内所有应用程序对象的公用的方法、属性和事件的访问                阅读全文
            
        艾伟_转载:ASP.NET模板引擎技术
2011-08-29 00:20 by 狼人:-), 213 阅读, 收藏,
摘要:                    
以前听我朋友说起php的模板引擎技术的时候似懂非懂哪时感觉真的很强,一直在想asp.net有这种技术吗?我不知道我的理解是不是对的.其实 asp.net的模板引擎技术就是先建好一个静态的html页面我们称它为模板页,你如果有不同形式的页面哪就得建立不同的静态模板页,然后在后台用文件操作往这个文件里写东西然后在把这个模板页另存到一个静态页面的目录,不好意思可能我的理解太俗,如果有更好的理解和想法可以在apolov发文章告诉我谢谢。现在我附加一下代码 Default.aspx这个页面只有几个textbox控件和两个按妞控件 Code highlighting produced by Ac...                阅读全文
            
        艾伟_转载:.NET设计模式:观察者模式(Observer Pattern)
2011-08-29 00:20 by 狼人:-), 139 阅读, 收藏,
摘要:                    
概述 在软件构建过程中,我们需要为某些对象建立一种“通知依赖关系” ——一个对象(目标对象)的状态发生改变,所有的依赖对象(观察者对象)都将得到通知。如果这样的依赖关系过于紧密,将使软件不能很好地抵御变化。使用面向对象技术,可以将这种依赖关系弱化,并形成一种稳定的依赖关系。从而实现软件体系结构的松耦合。 意图 定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时, 所有依赖于它的对象都得到通知并被自动更新。[GOF 《设计模式》] 结构图 图1 Observer模式结构图 生活中的例子 观察者定义了对象间一对多的关系,当一个对象的状态变化时,所有依赖它的对象都得到通...                阅读全文
            
        艾伟_转载:浅析ASP.NET页面缓存的几点体会
2011-08-29 00:20 by 狼人:-), 161 阅读, 收藏,
摘要:                    
前几天遇到个问题,百思不得其解。后来查阅了一些资料心里才有了点思路。把自己遇到的问题记录下来希望能给其他的园友一些帮助吧。 事情是这样的。我的一个ASP.NET页面用window.open导航后再次访问时没有得到更新,确切的说是再次访问时根本就没有访问服务器。可是这个现象在我的机器上并没有出现,而项目组中其他的机器都有此问题。当时我这个郁闷呐,因为不方便调试,最后就在页面上输出好多alert。终于在几次试验之后发现了问题的所在。 其主要问题就是IE缓存了页面,当服务器端出现更新时IE并没有检查到。我的机器没有问题是因为我的ie设置为每次访问页面都要检查更新,他们的则是自动检查更新。...                阅读全文
            
        艾伟_转载:DataTable.NewRow 内存泄漏问题
2011-08-29 00:20 by 狼人:-), 231 阅读, 收藏,
摘要:                    
昨天做了一个自动生成Insert 语句的小工具,今天测试发现存在严重的内存泄漏问题,代码看了好几遍,没发现问题。后来用 .Net Memory Profiler 跟踪(跟踪方法见 用 .NET Memory Profiler 跟踪.net 应用内存使用情况--基本应用篇) 发现有数千个DataRow 没有释放,最后定位是DataTable.NewRow 的问题。 先看一下有问题的代码 Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->...                阅读全文
            
        艾伟_转载:HttpRuntime的认识与加深理解
2011-08-29 00:20 by 狼人:-), 175 阅读, 收藏,
摘要:                    
下面最先介绍HttpRuntime的Web.config里的配置
Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--><httpRuntimeexecutionTimeout="number"maxRequestLength="number"requestLengthDiskThreshold="number"useFullyQualifiedRedirectUrl="[                阅读全文
            
        艾伟_转载:探索.Net中的委托
2011-08-29 00:20 by 狼人:-), 189 阅读, 收藏,
摘要:                    
废话
我本来以为委托很简单,本来只想简简单单的说说委托背后的东西,委托的使用方法。原本只想解释一下那句:委托是面向对象的、类型安全的函数指针。可没想到最后惹出一堆的事情来,越惹越多,罪过,罪过。本文后面一部分是我在一边用SOS探索一边记录的,写的非常糟糕,希望您的慧眼能发现一些有价值的东西,那我就感到无比的荣幸了。
委托前世与今生
大家可能还记得,在C/C++里,我们可以在一个函数里实现一个算法的骨架,然后在这个函数的参数里放一个“钩子”,使用的时候,利用这个“钩子”注入一个函数,注入的函数实现不同算法的不同部分,这样就可以达到算法骨架重用的目的。而这里所谓的“钩子”就是“函数指针”。这个功能                阅读全文
            
        艾伟_转载:.NET重写URL浅谈
2011-08-29 00:20 by 狼人:-), 230 阅读, 收藏,
摘要:                    
最近小项目要求重写url找了下资料用到了MS的2个dll,微软的例子写得太不明显了。后来终于改好了。
ActionlessForm.dll------用来处理回发
URLRewriter.dll----- 是微软封装好了的一个URL重写组件
添加引用----
具体的使用说明请去看
http://msdn.microsoft.com/zh-cn/library/ms972974.aspx#XSLTsection123121120120
比我说得好得多。
具体使用方法:
首先web.config的配置: Code highlighting produced by Actipro CodeHigh.                阅读全文
            
        艾伟_转载:Socket开发探秘--基类及公共类的定义
2011-08-29 00:17 by 狼人:-), 193 阅读, 收藏,
摘要:                    
Socket开发是属于通信底层的开发,.NET也提供了非常丰富的类来实现Socket的开发工作,本篇不是介绍这些基础类的操作,而是从一个大的架构方面阐述Socket的快速开发工作,本篇以TCP模式进行程序的开发介绍,以期达到抛砖引玉的目的。
要掌握或者了解Socket开发,必须了解下面所述的场景及知识。
1、TCP客户端,连接服务器端,进行数据通信
2、TCP服务器端,负责侦听客户端连接
3、连接客户端的管理,如登陆,注销等,使用独立线程处理
4、数据接收管理,负责数据的接受,并处理队列的分发,使用独立线程处理,简单处理后叫给“数据处理线程”
5、数据处理线程,对特定的数据,采用独立的线程进行                阅读全文
            
        艾伟_转载:趣味问题:你能用Reflection.Emit生成这段代码吗?(答案)
2011-08-29 00:17 by 狼人:-), 170 阅读, 收藏,
摘要:                    
在上一篇博客中我提出了一个问题:如何用.NET的Reflection.Emit生成等价于下面VB代码的三个类型: Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->Class A Implements B.IEnd ClassClass B Inherits A Interface I End InterfaceEnd Class 这个问题的难点在于三个类型有循环依赖关系:A实现了接口B.I,因此A依赖于I;B是A的子...                阅读全文
            
        艾伟_转载:趣味问题:你能用Reflection.Emit生成这段代码吗?
2011-08-29 00:17 by 狼人:-), 157 阅读, 收藏,
摘要:                    
众所周知,Reflection.Emit是非常强大的工具,可以在运行时动态生成各种程序集、类型和方法的IL代码,几乎无所不能。原先我也是这样认为的,但是看了某个人的博客之后我发现想要用Reflection.Emit做一些特殊的事情还是很需要技巧性的。假设你还没有看过那个人的博客(暂时先不公开……)可以尝试一下这个问题。下面的代码可以用vbc.exe正确编译(当然等价C#程序也可以经试验C#编译器无法处理该逻辑,各位参照VB的行为吧)。。。 Code highlighting produced by Actipro CodeHighlighter (freeware)http://www....                阅读全文
            
        艾伟_转载:WCF版的PetShop之一:PetShop简介
2011-08-29 00:17 by 狼人:-), 195 阅读, 收藏,
摘要:                    
本系列文章导航WCF版的PetShop之一:PetShop简介WCF版的PetShop之二:模块中的层次划分WCF版的PetShop之三:实现分布式的Membership和上下文传递 在《WCF技术剖析(卷1)》的最后一章,我写了一个简单基于WCF的Web应用程序,该程序模拟一个最简单的网上订购的场景,所以我将其命名为PetShop。PetShop的目在于让读者体会到在真正的项目开发中,如何正确地、有效地使用WCF。在这个应用中,还会将个人对设计的一些总结融入其中,希望能够对读者有所启发。Source Code从这里下载。 一、PetShop功能简介 PetShop前端是...                阅读全文
            
        艾伟_转载:预防SQL注入攻击之我见
2011-08-29 00:17 by 狼人:-), 140 阅读, 收藏,
摘要:                    
SQL注入攻击的本质:让客户端传递过去的字符串变成SQL语句,而且能够被执行。 每个程序员都必须肩负起防止SQL注入攻击的责任。 说起防止SQL注入攻击,感觉很郁闷,这么多年了大家一直在讨论,也一直在争论,可是到了现在似乎还是没有定论。当不知道注入原理的时候会觉得很神奇,怎么就被注入了呢?会觉得很难预防。但是当知道了注入原理之后预防不就是很简单的事情了吗? 第一次听说SQL注入攻击的时候还是在2004年(好像得知的比较晚),那是还是在写asp呢。在一次写代码的时候,有同事问我,你的这段代码防注入攻击了吗?什么攻击?这是什么呀。 后来到网上各种找,终于弄明白了是怎么攻击进来的了。注...                阅读全文
            
        艾伟_转载:完美解决在ModalPopupExtender中使用CalendarExtender时被层遮挡的问题
2011-08-29 00:17 by 狼人:-), 151 阅读, 收藏,
摘要:                    
ASP.NET AJAX Control Toolkit是一组非常不错的基于asp.net的ajax控件,它建立在asp.net 3.0的ScriptManager组件之上,提供了很多非常实用的效果和功能。大家可以去官方网站查看demo,ModalPopupExtender控件用来在网页中实现类似于模式对话框的效果,而CalendarExterder控件提供日期输入,它有几个很重要的属性: TargetControlID:日期输入的目标控件ID,一般来说都都是一个文本框。
Format:日期格式,如yyyy-MM-dd。
PopupButtonID:用户打开日期选择面板的控件ID,如按钮...                阅读全文
            
        艾伟_转载:WinForm界面开发之酒店管理系统--开篇
2011-08-29 00:17 by 狼人:-), 524 阅读, 收藏,
摘要:                    
星移斗转,时光似箭,不知不觉中,酒店管理系统的开发从开始到现在的结束,已经2个月了,2个月的业余时间,2个月的生活情趣,都寄托在这个软件当中,经历了各种艰苦和困惑,终于得以修成正果---深田之星酒店管理系统的顺利发布。 技术的历程是一个开拓进取、攻克难题的历程,其中有困惑也有兴奋,有苦涩也有甜蜜,在这个过程中,再一次检阅了我的Database2Sharp代码自动生成的开发工具的,再一次从“深田之星送水管理系统”进行升华,技术从来没有尽头,只有不断完善,以及不断的超越和创新。在这个过程中,总会产生一系列的Q&A,碰到了一个难题,如何寻找相应的解决方法,就是非常有趣的问题了。 写这个随..                阅读全文
            
         
                    
                 浙公网安备 33010602011771号
浙公网安备 33010602011771号