12 2012 档案

摘要:我们知道,CLR要求每个类型最终都从System.Object类型派生。而Object类提供了几个实例方法:Equals(),GetHashCode(),ToString(),GetType(). 当我们new一个对象时,CLR所做的工作如下:(1)计算类型及其所有基类型中定义的所有实例字段需要的字节数,其中包括两个额外的成员:“类型对象指针”和“同步索引块”;(2)从托管堆上分配指定类型所要求的字节数,从而分配对象的内存,分配的所有字节都设为0;(3)初始化对象的“类型对象指针”和“同步索引块”(4)调用类型的实例构造器,构造器负责实例化类型中的字段,并最终调用System.Objec... 阅读全文
posted @ 2012-12-23 17:00 Samguist 阅读(226) 评论(0) 推荐(0) 编辑
摘要:介绍 这篇文章介绍了WCF,我们将试图了解WCF背后的基本概念,并试着实现一个小的WCF服务。同时,给出一些例子演示一个WCF服务是如何被调用和运行的。背景 Web服务应用程序之间的通信协议是非常重要的,web services提供了一个有效的方式来促进应用程序之间的通信,但是它也有一些局限性。第一个是应用程序之间只能基于Http的方式进行通信;第二个局限就是web service仅提供了单向通信,没有提供半双工或全双工的通信方式。 使用WCF,我们可以定义我们的服务一次,然后配置它,就能够通过Http,Tcp,IPC,甚至MSMQ. 下面的表格展示了web service和WCF的不... 阅读全文
posted @ 2012-12-16 18:34 Samguist 阅读(799) 评论(0) 推荐(0) 编辑
摘要:两种程序集,两种部署 CLR支持两种程序集:强命名程序集和非强命名程序集(为了与前者对立,我们称为"弱命名程序集").这两种程序集在结构上完全一致,都是PE文件格式、PE32(+)头、CLR头、元数据、清单表以及IL。区别:强命名程序集使用发布者的公钥/私钥对进行了签名,它唯一的标识了程序集的发布者。 一个程序集可以采取两种方式来部署:私有或全局。”私有部署的程序集“是指部署到应用程序基目录或者一个子目录中的程序集。弱命名程序集只能以私有方式部署。”全局部署的程序集“是指部署到一些已知位置的程序集,CLR在查找这些程序集时,会检查这些位置。强命名程序集既可以私有部署,也可以 阅读全文
posted @ 2012-12-16 13:08 Samguist 阅读(348) 评论(0) 推荐(0) 编辑
摘要:元数据概述 在剖析元数据之前,先给出以下几行代码: public sealed class Program { public static void Main() { System.Console.WriteLine("Hi"); } } 应用程序定义了一个名为Program的类型和Main方法,Main方法中引用了另外一个名为System.Console的类型。而System.Console是Microsoft已经实现好的一个类型,这个实现好的类型的各个方法的IL代码存储在MSCorLib.dll文件中。当我们使用C... 阅读全文
posted @ 2012-12-09 21:30 Samguist 阅读(251) 评论(0) 推荐(0) 编辑
摘要:CLR CLR(Common Language Runtime),即公共语言运行时是一个由多种编程语言使用的“运行时”,它的核心功能(比如内存管理、程序集加载、异常处理和线程同步)可由面向CLR的所有语言使用。任何一种实现了“运行时”的语言编译器,编程人员就可以使用该语言来开发代码。 面向“运行时”的语言编译器包括:C#,VB、IL(Intermediate Language,中间语言)汇编器等。当编程人员用一种CLR的语言来创建源代码文件时,由对应的编译器检查语法和分析源代码,然后生成一个托管模块(managed module)。托管模块是一个标准的32位可移植执行体PE32文件(Por.. 阅读全文
posted @ 2012-12-08 15:14 Samguist 阅读(660) 评论(0) 推荐(0) 编辑
摘要:介绍 这篇文章首先试着让我们理解delegate(暂时翻译为"委托")能解决什么问题,然后我们将创建一个简单的委托并尝试着解决问题,下一步我们 将试着理解多播委托(multicast delegate)的概念以及事件(event)是如何封装(encapsulate)委托的,最后我们会明白事件和委托之 阅读全文
posted @ 2012-12-08 12:13 Samguist 阅读(3616) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示