.NET与Microsoft Shared Source CLI Microsoft.netASP.netVB.NETF#
1. .NET
.NET本质上是一个新的开发框架,为传统Windows操作系统(尤其是Windows2000)API和服务提供全新的编程接口,它同时还将Microsoft在90年代晚期开发的各种技术融合起来,这些技术包括COM+组件服务,ASP Web开发框架,对XML和面向对象设计的全面支持,对新的Web服务协议(如SOAP,WSDL,和UDDI)的支持,现在以Internet为中心,都集成在原来的DNA体系中。
.NET平台包括4个不同的产品群:
1 一组语言,包括C#和VB.NET;一套开发工具,包括Visual Studio.NET;一个创建Web服务,Web程序和Windows程序的综合类库;以及内置于框架中执行对象的运行期环境CLR(Common Language Runtime,公共语言运行期)。
2 一组.NET企业级服务器,即原先称为SQL Server 2000,Exchange 2000,Biztalk 2000等服务器产品,提供了关系型数据存储,电子邮件和B2B商务等各种专门功能。
3 一组商用Web服务,即最近发布的Hailstorm计划;开发者在付费后可以使用这些服务。
4 新的应用.NET的非PC设备,从手机到游戏机。
Microsoft .NET不仅支持语言无关性,而且支持语言的集成性。这意味着可以跨越不同语言继承类,捕捉异常并应用多态性。.NET框架通过所有.NET组件都需遵守的类型规范CTS(Common Type System,公用类型系统)实现了这一点。
而且.NET还引入CLS(Common Language Specification,公用语言规范),提供了语言继承必须的一系列基本规则。CLS规定了成为.NET语言的最低要求,符合CLS的编译器都可以生成彼此能互相操作的对象。整个FCL(Framework Class Library,框架类库)可以被符合CLS的任何语言使用。
在.NET中,程序并不编译为可执行文件,而是编译成Microsoft IL(Microsoft Intermediate Language,Microsoft中间语言)文件,而后由CLR去执行,C#生成的Microsoft IL文件与其他.NET语言完全相同,平台不会区分语言。关于CLR关键的一点在于,它是公用的,这个运行期系统既支持用C#,也支持用VB.NET。
C#代码在Build工程时将被编译为IL,在运行时,IL会使用即时(JIT,Just in time)编译器再次编译,这一过程常被称为JITing,生成的结果就是机器码,可以由机器的处理器执行。
2. Microsoft Shared Source CLI的运行引擎包括源代码,并支持remoting, context model, threading,和code access security。所有这些加在一起是一个包括9000多源文件的代码库。这是微软发布的最大的代码库。微软的这个代码库严格遵循CLI规范。Microsoft Shared Source CLI还包括完整的C#和Jscript编译器源代码。还有
ILASM,ILDASM,cordbg.exe, sn.exe, gacutil.exe, al.exe caspol.exe 和peverify.exe等。
Share Source CLI将源代码最终编译为5个文件:Mscorlib.dll, System.dll, System.xml.dll, System.runtime.remoting.dll和System.runtime.serialization.formatters.soap.dll。
Share Source CLI和商业CLR的差异:
Library |
What's Missing |
Public Classes |
Public Classes Missing |
System.dll |
Most of Microsoft.Win32 |
237 |
274 |
System.runtime.remoting.dll |
HttpRemotingHandler |
25 |
3 |
System.xml.dll |
No public classes changed |
212 |
0 |
Mscorlib.dll |
Microsoft.Win32.Registry Lots of System.Runtime.Interop-Services All of System.Security.Cryptography |
867 |
188 |
System.runtime.Serial-ization.formatters |
Nothing |
2 |
0 |
因为Share Source CLI是CLR的demo版,不是商业版,你找不到windows forms,ado.net 或者web service这样的服务。
Share Source CLI的class库层次
<shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"><stroke joinstyle="miter"></stroke><formulas><f eqn="if lineDrawn pixelLineWidth 0"></f><f eqn="sum @0 1 0"></f><f eqn="sum 0 0 @1"></f><f eqn="prod @2 1 2"></f><f eqn="prod @3 21600 pixelWidth"></f><f eqn="prod @3 21600 pixelHeight"></f><f eqn="sum @0 0 1"></f><f eqn="prod @6 1 2"></f><f eqn="prod @7 21600 pixelWidth"></f><f eqn="sum @8 21600 0"></f><f eqn="prod @7 21600 pixelHeight"></f><f eqn="sum @10 21600 0"></f></formulas><path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></path><lock aspectratio="t" v:ext="edit"></lock></shapetype><shape id="_x0000_i1025" style="WIDTH: 189pt; HEIGHT: 177pt" type="#_x0000_t75"><imagedata o:title="CLIProfiles" src="file:///C:%5CDOCUME~1%5CADMINI~1%5CLOCALS~1%5CTemp%5Cmsohtml1%5C01%5Cclip_image001.png"></imagedata></shape>
Share Source CLI的dll依赖:
<shape id="_x0000_i1026" style="WIDTH: 279pt; HEIGHT: 122.25pt" type="#_x0000_t75"><imagedata o:title="dependencies" src="file:///C:%5CDOCUME~1%5CADMINI~1%5CLOCALS~1%5CTemp%5Cmsohtml1%5C01%5Cclip_image003.png"><font size="3"></font></imagedata></shape>
运行时框架
Share Source CLI的运行时环境实行3个主要认为:
1 loading,实行代码
2 内存管理
3 安全管理
运行时的何姓包含3个类
ClassLoader(clsload.h) 管理IL,metadata的加载和监管什么时候如何运行JIT编译器。ClassLoader的运行涉及到EEClass对象(class.h和class.cpp)的事例维护。
FJit (fjit.h) 读取IL,生成x86机器代码。JIT用sscli/clr/src/fjit编译code。
GCHeap(gc.h)内存管理和garbage collection。
<shape id="_x0000_i1027" style="WIDTH: 369pt; HEIGHT: 148.5pt" type="#_x0000_t75"><imagedata o:title="coreclasses" src="file:///C:%5CDOCUME~1%5CADMINI~1%5CLOCALS~1%5CTemp%5Cmsohtml1%5C01%5Cclip_image005.png"><font size="3"></font></imagedata></shape>
下载Share Source CLI
http://msdn.microsoft.com/net/sscli/
建立build环境,调用env.bat文件,创建环境变量,和所需要到目录。之后巡行buildall.cmd文件。结果会生成\build目录包括30个 dll和23个Exe,还有一些其它支持文件。