西安响应式网站建设,网站的mysql数据库放到服务器上服务器需要安装mysql吗?,上海做壁画的网站,站酷设计网站官网入口免费众所周知,DotNet框架是非常庞大的,光项目创建时的种类就有WPF,WCF,WF这三种最新的技术,还有以前的Web,WinForm,Service,Mobile等等. 这么复杂和庞大的框架,用文字来描述是远远不够的,所以我准备写一系列图文并茂的文章,把我所知道的所有Net框架中的东西全部串联起来,希望可以给…众所周知,DotNet框架是非常庞大的,光项目创建时的种类就有WPF,WCF,WF这三种最新的技术,还有以前的Web,WinForm,Service,Mobile等等. 这么复杂和庞大的框架,用文字来描述是远远不够的,所以我准备写一系列图文并茂的文章,把我所知道的所有Net框架中的东西全部串联起来,希望可以给大家一个DotNet框架的知识图,本人能力有限,难免有理解错误和表达不清的地方,望大家谅解并指教. 好,我们现在就开始第一张图的学习,再所有的文章写完后,大家将会得到一个完整的框架图。 下面我会做出对这个图的解释请大家对照图来一步一步的学习。 1.CTS 和 CLS : CTS公共类型系统。他是一个集合{类接口委托结构枚举类型成员基本数据类型}只有符合CTS的类型才能在CLR上运行。 简单点说就是VBC#C等DotNet支持的语言的类型集合。这些东西大部分都定义在System.dll中我们将在下一篇来讨论 system.dll。 CLS公共语言规范。从图上可以看出他是CTS的子集为什么他是子集呢因为在C#中有Ulong而VB中就没有。看以下代码 public class Test { public ulong Add(ulong a, ulong b) //如果某语言特有的类型,作为返回类型和参数则不遵循CLS { return a b; } public int Add(int a, int b) //但是作为局部变量则仍然遵循CLS { ulong x; return a b; } } 在默认.NET开发平台上是不会执行CLS检查的如果要开启可以在AssemblyInfo.cs中加入代码 [assembly:System.CLSCompliant(true)] 大家可能要问为什么要遵循CLS呢答案在后面给出。 2. CIL元数据和程序集清单 CIL公共中间语言。我们大家都知道在.Net中使用VB写一个DLL那么在C#的项目中也可以调用反之亦然。如何实现的呢就 是CIL了前面我们说过CLS的作用并且留下了为什么要遵守CLS的疑问就是因为.net编译生成的dll或Exe其实主要是CIL原数据和程 序集清单这三部分组成。那么要想VB和C#共享就要有一个通用的规范它就是CLS了呵呵现在明白为什么要CLS了吧如果你不去遵守CLS也是可 以的但是就不能保证你的dll的复用性了。 元数据.net的反射远程处理序列化这些东西都很神秘吧其实他们都是原数据的功劳你所定义的类方法方法的返回类型和参数属性字段都会被编译成元数据然后当你序列化或反射时拿这些原数据给你生成一个类。 程序集清单这个就容易理解了你添加的dll引用的信息全都在这里。下面是一个Dll中的信息。 原代码 using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace ConsoleApplication3{ class Program { static void Main(string[] args) { } } public class Test { public ulong Add(ulong a, ulong b) //如果某语言特有的类型,作为返回类型和参数则不遵循CLS { return a b; } public int Add(int a, int b) //但是作为局部变量则仍然遵循CLS { ulong x; return a b; } }} 使用.Net自带的 ILDisassembler.exe 察看的IL .class public auto ansi beforefieldinit ConsoleApplication3.Test extends [mscorlib]System.Object{ .method public hidebysig instance int32 Add(int32 a, int32 b) cil managed { // Code size 4 (0x4) .maxstack 8 IL_0000: ldarg.1 IL_0001: ldarg.2 IL_0002: add IL_0003: ret } // end of method Test::Add} 就是这三样东西组成的dll让.net实现了远程处理的remoting反射序列化和跨平台跨语言。关于跨平台的问题我们在下一篇讨论。。 转载于:https://www.cnblogs.com/hanmos/archive/2011/10/17/2215716.html