随笔 - 28  文章 - 4 评论 - 567 trackbacks - 54

摘要: 前一篇我们探索了类型的第一种成员:字段。字段在IL编译时,会生成MdToken和偏移量,因为对于类型来说,一个类型在编译时就已经确定了字段的个数,所以偏移量对于编译器来说是已知的,字段和偏移量分别由元数据表(Field和ClassLayout)来记录。 本篇我们来讨论类型中的另一种成员:方法.在本系列的第一篇探索CLR原理系列(1):类型中我们说到类型中只有两种成员:字段和方法.字段是用来描述类型的状态,而方法则提供了类型所具备的功能.首先我们来看看方法在IL中是如何描述的.先来定义一个类型.publicclassMethodClass{privatestringname="xule阅读全文
posted @ 2011-10-31 09:24 徐 磊 阅读(1725) 评论(15) 编辑
摘要: 本系列使用SOS来Debug示例代码,让我们一起看看自己编写的代码,编译后的程序集以及CLR运行时的真实面貌,从而更加深入的了解.net.本系列将围绕下面这张图,来和大家一起分享.net的真实世界.本人能力有限,难免会有理解错误的地方,欢迎大家指正. 由于某些媒体和个人喜欢拿来主义,所以笔者加了水印,见谅见谅。。。不影响大家看就是了,字比较小,可将浏览器放大。探索CLR原理系列(1):类型探索CLR原理系列(2):字段探索CLR原理系列(3):方法元数据和IL 探索CLR原理系列(4):继承关系中的方法探索CLR原理系列(5):方法表探索CLR原理系列(6):接口虚表与方法偏移探索C...阅读全文
posted @ 2011-10-12 11:16 徐 磊 阅读(1555) 评论(7) 编辑
摘要: 上一篇文章我们探索了类型,每一个类型在元数据的Typedef表中,会分配一个MdToken(类型标记),当你写的方法需要访问这个类型时,也是使用MdToken到相关Dll的元数据表去加载它到Load Heap,LoadHeap是用来存放类型的空间,它并不保存类型的实例.我们可以为类型定义一系列成员,包括:字段,属性,方法,事件和嵌套类,但我们跟踪类型的EEclass,发现类型中只有两类成员,字段(事件就是一个委托,而委托只是一个类型,所以事件就是一个字段而已,但表现有些特殊后续介绍)和方法(属性实际就是方法). 这篇文章就让我们一起来探索类型中很重要的一部分:字段.首先来说明一下为什么类型需.阅读全文
posted @ 2011-10-08 09:24 徐 磊 阅读(2127) 评论(21) 编辑
摘要: CLR是整个Dotnet的灵魂,CIL则是这个灵魂可以发挥其跨越平台,穿越语言,跳跃....的保证.其实有很多书籍和文章都介绍了什么是CLR,什么是CIL,CTS,CLS这样的一大堆概念,可是他们具体的表现形式,以及运作的原理是大部分人都想知道的秘密,却没有什么太好的途径来获取这些信息.本系列将从C#代码->CIL->CLR来探索我们编写的C#代码,最终如何成为本地机器语言,并且执行.过程中会使用...阅读全文
posted @ 2011-09-19 09:26 徐 磊 阅读(5175) 评论(91) 编辑
摘要: 一直很想写关于设计模式的具体使用的文章,可是一直没想好怎么去写,才可以通俗易懂,真正的让设计模式,应用到系统设计中.今天终于想到了,这个系列准备用实例去讲解如何使用(GOF)设计模式.阅读全文
posted @ 2008-08-25 11:13 徐 磊 阅读(4155) 评论(20) 编辑
摘要: 前面的客户端程序中,遍历部门时,有个对部门还是人员的判断,然后按照不同的类型输出不同的结果,这样增加了客户端的复杂度,如果出现另一种情况,那么就要修改客户端,因为客户端程序大部分都不是出现在一个调用中,所以这样的修改十分可怕,如果输出有所变化,比如多加几个字,或者显示员工福利工资,那么就不得不修改客户代码所有出现的输出的地方.那么我们如何来封装这个变化呢?阅读全文
posted @ 2008-08-22 09:39 徐 磊 阅读(2472) 评论(13) 编辑
摘要: 前面我们完成了复杂的Composite的创建的封装,但是那里面还有缺点:前面我们说了一个人可能身兼二职,尤其管理层的,更有这个可能,那么他就要出现在不同部门里,而我们现在的创建是一个节点一个对象,这样我们就要浪费内存了...怎么解决?阅读全文
posted @ 2008-08-21 09:03 徐 磊 阅读(2409) 评论(14) 编辑
摘要: 在前面的文章中,我们设计完成了员工工资,福利以及按照部门来区分员工,以及遍历统计部门人员成本等业务逻辑,这些设计基本上可以满足我们所设定的场景的变化,可是创建部门及人员树的时候太复杂了,而且这种创建很容易发生变化,比如加入分公司,或者部门层级变动添加了层级的时候,创建的代码一定就要修改.那么如何避免,封装这个创建时的变化呢?阅读全文
posted @ 2008-08-20 14:52 徐 磊 阅读(2226) 评论(13) 编辑
摘要: 前面我们设计完成了统计部门工资,这样的一个需求,但是在我们设计遍历员工信息的方法是固定不变的,也就是说是硬编码在PersonComposite类中的,由于Composite设计模式相当于一个树或者图的数据结构,那么他的遍历就会出现变化,比如在遍历部门和小组的时候采取不同的方法,以减少遍历的时间,那么如何去解决这个问题呢? 阅读全文
posted @ 2008-08-19 12:10 徐 磊 阅读(2968) 评论(17) 编辑
摘要: 前面我们设计了员工的工资,奖金,福利系统。今天客户又来增加需求了:"我们需要统计公司,部门,或者小组的薪资成本。"得到了需求,我们还是按照老套路来完成我们的设计。 阅读全文
posted @ 2008-08-15 14:47 徐 磊 阅读(2816) 评论(34) 编辑
摘要: 在前三篇中我们设计了员工的工资,绩效将金,以及员工福利,使用了Bridge(员工和工资的组合),Stratege(工资和绩效将金的设计)以及(Singleton)单件了这些算法,然后用Decorator(装饰)将员工进行职位的装饰.这些设计在我们前面所说的场景下,是符合设计模式的意图的,但是它仍然有一些漏洞. 阅读全文
posted @ 2008-08-14 08:40 徐 磊 阅读(3362) 评论(10) 编辑
摘要: 前面两篇中,完成了客户所提的"我们的系统要管理人员的工资.(为了模拟真实的开发场景,这里暂时先定义一个功能)人员分为实习员工和正式员工,他们的基本工资是不同的,工资包括基本工资和绩效工资."这样的一个系统需求.我们设计并完成了他,今天客户由于公司要给员工福利,而来追加需求"按照不同的职位,给与不同的福利,一个人可能身兼几个职位".阅读全文
posted @ 2008-08-12 11:51 徐 磊 阅读(3729) 评论(38) 编辑
摘要: 上一篇我们分析了员工,工资,以及绩效奖金三个类,并且使用了Bridge和Stratege两种模式,对他们之间的组合和行为进行了设计,但是我们的设计并不完善。我们知道员工的基本工资可能每年都不一样,甚至有可能随时地根据公司的制度发生变化,而设计的根本意图就是去封装变化,让我们的系统更加的长寿,不会因为变化而大量的重造,我们怎么去避免工资变化时,员工类不改变呢?? 阅读全文
posted @ 2008-08-11 13:57 徐 磊 阅读(3893) 评论(18) 编辑
摘要: 一直很想写关于设计模式的具体使用的文章,可是一直没想好怎么去写,才可以通俗易懂,真正的让设计模式,应用到系统设计中.今天终于想到了,这个系列准备用实例去讲解如何使用(GOF)设计模式. 阅读全文
posted @ 2008-08-07 14:52 徐 磊 阅读(6716) 评论(66) 编辑
摘要: 众所周知,DotNet框架是非常庞大的,光项目创建时的种类就有WPF,WCF,WF这三种最新的技术,还有以前的Web,WinForm,Service,Mobile等等. 这么复杂和庞大的框架,用文字来描述是远远不够的,所以我准备写一系列图文并茂的文章,把我所知道的所有Net框架中的东西全部串联起来(WPF,WCF,WF...),希望可以给大家一个DotNet框架的知识图,本人能力有限,难免有理解错误和表达不清的地方,望大家谅解并指教. 阅读全文
posted @ 2008-08-06 12:05 徐 磊 阅读(8778) 评论(33) 编辑
摘要: WCF是对于Webservice,.Net Remoting,Enterprise Service,WSE,MSMQ等技术的整合。那么他与Remoting和Webservice有什么关系呢? 阅读全文
posted @ 2008-08-05 15:19 徐 磊 阅读(10785) 评论(11) 编辑
摘要: WPF可以认为是MS利用原有.NET框架的一些特色,加上DirextX的产物。将原有的编程模型统一化. 阅读全文
posted @ 2008-08-01 16:17 徐 磊 阅读(4363) 评论(6) 编辑
摘要: 当服务器(ASP.NET)接收到一个 Http请求的时候,他会如何工作呢?阅读全文
posted @ 2008-07-31 16:27 徐 磊 阅读(5543) 评论(9) 编辑
摘要: 前面我们讲解了.net大体的运行框架,和一些常用的Dll,现在我们就要来学习具体的应用程序了,首先来讲解一下Winform的运行框架吧. 阅读全文
posted @ 2008-07-29 15:45 徐 磊 阅读(4776) 评论(7) 编辑
摘要: XML是一种标记语言,就应该有一种工具按一定的语法来分析和理解存储在文档中信息。这个工具就是XML分析器---一个组件用于读标记文本并返回指定平台的对象。.NET 框架支持两种不同的分析模式:XMLDOM分析器和XML阅写器。阅读全文
posted @ 2008-07-25 16:16 徐 磊 阅读(4166) 评论(8) 编辑
摘要: System.Reflection,.net中反射的解析.阅读全文
posted @ 2008-07-23 11:18 徐 磊 阅读(4724) 评论(15) 编辑
摘要: ADO.net类库有两种完全不同的方式来实现数据访问:连接式和断开式.ADO.NET没有提供单一的方式和不同的数据库进行通信,而是提供了多种数据提供器,这样的好处是可以将某种类型数据库的特性发挥出来.我们来看看ADO.NET中的核心类。 阅读全文
posted @ 2008-07-22 12:13 徐 磊 阅读(4070) 评论(10) 编辑
摘要: System.IO,要操作IO,就需要,确定储存媒介,打开,然后读取或者写入阅读全文
posted @ 2008-07-21 15:36 徐 磊 阅读(3986) 评论(5) 编辑
摘要: 前面我们学习了.net的运行引擎,知道了Appdomain要承载各种dll,那么我们就来学习一下最基本的system.dll,这个任何代码都要引用的大家伙. 阅读全文
posted @ 2008-07-21 11:35 徐 磊 阅读(4087) 评论(12) 编辑
摘要: 众所周知,DotNet框架是非常庞大的,光项目创建时的种类就有WPF,WCF,WF这三种最新的技术,还有以前的Web,WinForm,Service,Mobile等等. 这么复杂和庞大的框架,用文字来描述是远远不够的,所以我准备写一系列图文并茂的文章,把我所知道的所有Net框架中的东西全部串联起来(WPF,WCF,Silverlight,Remoting...),希望可以给大家一个DotNet框架的知识图,本人能力有限,难免有理解错误和表达不清的地方,望大家谅解并指教.阅读全文
posted @ 2008-07-21 11:34 徐 磊 阅读(6729) 评论(28) 编辑
摘要: 众所周知,DotNet框架是非常庞大的,光项目创建时的种类就有WPF,WCF,WF这三种最新的技术,还有以前的Web,WinForm,Service,Mobile等等. 这么复杂和庞大的框架,用文字来描述是远远不够的,所以我准备写一系列图文并茂的文章,把我所知道的所有Net框架中的东西全部串联起来(WPF,WCF,Silverlight,Remoting...),希望可以给大家一个DotNet框架的知识图,本人能力有限,难免有理解错误和表达不清的地方,望大家谅解并指教.阅读全文
posted @ 2008-07-21 11:34 徐 磊 阅读(5011) 评论(31) 编辑