上一页 1 2 3 4 5 6 7 8 9 10 ··· 13 下一页
摘要: 定义:高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。问题由来:类A直接依赖类B,假如要将类A改为依赖类C,则必须通过修改类A的代码来达成。这种场景下,类A一般是高层模块,负责复杂的业务逻辑;类B和类C是低层模块,负责基本的原子操作;假如修改类A,会给程序带来不必要的风险。解决方案:将类A修改为依赖接口I,类B和类C各自实现接口I,类A通过接口I间接与类B或者类C发生联系,则会大大降低修改类A的几率。 依赖倒置原则基于这样一个事实:相对于细节的多变性,抽象的东西要稳定的多。以抽象为基础搭建起来的架构比以细节为基础搭建起来的架构要稳定的多。在C#中,抽象指 阅读全文
posted @ 2012-02-28 15:28 Rookier 阅读(341) 评论(0) 推荐(0) 编辑
摘要: 肯定有不少人跟我刚看到这项原则的时候一样,对这个原则的名字充满疑惑。其实原因就是这项原则最早是在1988年,由麻省理工学院的一位姓里的女士(Barbara Liskov)提出来的。定义1:如果对每一个类型为 T1的对象 o1,都有类型为 T2 的对象o2,使得以 T1定义的所有程序 P 在所有的对象 o1 都代换成 o2 时,程序 P 的行为没有发生变化,那么类型 T2 是类型 T1 的子类型。定义2:所有引用基类的地方必须能透明地使用其子类的对象。问题由来:有一功能P1,由类A完成。现需要将功能P1进行扩展,扩展后的功能为P,其中P由原有功能P1与新功能P2组成。新功能P由类A的子类B来完成 阅读全文
posted @ 2012-02-28 15:19 Rookier 阅读(226) 评论(0) 推荐(0) 编辑
摘要: 定义:不要存在多于一个导致类变更的原因。通俗的说,即一个类只负责一项职责。问题由来:类T负责两个不同的职责:职责P1,职责P2。当由于职责P1需求发生改变而需要修改类T时,有可能会导致原本运行正常的职责P2功能发生故障。解决方案:遵循单一职责原则。分别建立两个类T1、T2,使T1完成职责P1功能,T2完成职责P2功能。这样,当修改类T1时,不会使职责P2发生故障风险;同理,当修改T2时,也不会使职责P1发生故障风险。 说到单一职责原则,很多人都会不屑一顾。因为它太简单了。稍有经验的程序员即使从来没有读过设计模式、从来没有听说过单一职责原则,在设计软件时也会自觉的遵守这一重要原则,因为这是常识。 阅读全文
posted @ 2012-02-28 15:08 Rookier 阅读(175) 评论(0) 推荐(0) 编辑
摘要: 在Code First方法中,还可以通过Fluent API的方式来处理实体与数据表之间的映射关系。要使用Fluent API必须在构造自定义的DbContext时,重写OnModelCreating方法,在此方法体内调用Fluent API。如下面代码所示:public class BlogDbContext : DbContext{ public BlogDbContext(): base("name=BlogDB2005"){}protected override void OnModelCreating(DbModelBuilder modelBuilder){// 阅读全文
posted @ 2012-02-27 10:02 Rookier 阅读(407) 评论(1) 推荐(0) 编辑
摘要: 使用CLR线程池中的工作者线程,最灵活最常用的方式就是使用委托的异步方法,在此先简单介绍一下委托类。当定义委托后,.NET就会自动创建一个代表该委托的类,下面可以用反射方式显示委托类的方法成员。 1 class Program 2 { 3 delegate void MyDelegate(); 4 5 static void Main(string[] args) 6 { 7 MyDelegate delegate1 = new MyDelegate(AsyncThread); 8 ... 阅读全文
posted @ 2012-02-08 10:48 Rookier 阅读(420) 评论(0) 推荐(0) 编辑
摘要: 正则表达式是处理字符串的常用工具。在c#中,我们一般使用regex类来表示一个正则表达式。一般正则表达式引擎支持以下3种匹配模式:单行模式(singleline)、多行模式(multiline)与忽略大小写(ignorecase)。1. 单行模式(singleline)msdn定义:更改点 (.) 的含义,使它与每一个字符匹配(而不是与除 \n 之外的每个字符匹配)。使用单行模式的典型场景是获取网页源码中的信息。示例:我们使用webbrowser控件,从http://www.xxx.com/1.htm上获取了如下html源码,它存储在变量str中:<html><body> 阅读全文
posted @ 2012-02-07 15:02 Rookier 阅读(2619) 评论(8) 推荐(1) 编辑
摘要: 转自:http://blog.csdn.net/gueter/archive/2007/03/08/1524447.aspx Author :Jeffrey引言HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展。目前在WWW中使用的是HTTP/1.0的第六版,HTTP/1.1的规范化工作正在进行之中,而且HTTP-NG(Next Generation of HTTP)的建议已经提出。HTTP协议的主要特点可概括如下:1.支持客户/服务器模式。2.简单快速:客户向服务器请求服务时,只需传送请 阅读全文
posted @ 2012-02-06 15:38 Rookier 阅读(569) 评论(1) 推荐(0) 编辑
摘要: HttpApplication类的实例的事件HttpApplication 类的实例是在 ASP.NET 基础结构中创建的,而不是由用户直接创建的。HttpApplication 类的一个实例在其生存期内被用于处理多个请求,但它一次只能处理一个请求。这样,成员变量才可用于存储针对每个请求的数据。应用程序按照以下顺序执行由 global.asax 文件中定义的模块或用户代码处理的事件:BeginRequest在 ASP.NET 响应请求时作为 HTTP 执行管线链中的第一个事件发生。AuthenticateRequest当安全模块已建立用户标识时发生。PostAuthenticateReques 阅读全文
posted @ 2012-02-02 17:31 Rookier 阅读(1447) 评论(9) 推荐(4) 编辑
摘要: 其实扩展名为ashx与为axd基本上是一样的,都是用于写web handler,可以通过它来调用IHttpHandler类,它免去了普通.aspx页面的控件解析以及页面处理的过程。唯一不同的地方是:axd扩展名的必须要在web.config中的<httpHandlers>中进行注册,而ashx直接在项目中当成aspx那样添加使用即可。所以在项目的添加文件中,向导只有添加ashx文件的模板,而没有添加axd文件的模板。那微软为什么这么无聊搞两个后缀,全部使用ashx不就行了么?干脆利落。原来,如果你的web handler代码不在Web的项目中的话,那你就不能使用ashx了,因为如果 阅读全文
posted @ 2012-02-02 16:53 Rookier 阅读(484) 评论(0) 推荐(0) 编辑
摘要: VS2008 下的 WebDev.WebServer.EXE 路径:C:\Program Files\Common Files\Microsoft Shared\DevServer\9.0\WebDev.WebServer.EXE在微软.NET平台中,自从Visual Studio 2005 以后的版本编写Web程序的时候,可以在没有IIS的环境中编译和调试,每次调试的时候都会运行起一个 Asp.net Development Server 的服务,这个服务和IIS类似,可以说是IIS的简化版,虽然不如IIS完善和成熟但是用于提供一般的IIS服务已经足够了,作为单机服务还是不错的选择,这个服务 阅读全文
posted @ 2012-02-02 15:10 Rookier 阅读(1542) 评论(1) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 9 10 ··· 13 下一页