程序集、映射、受管和微软的.NET策略

     程序集、映射、受管
2.1  Assembly
    程序集(assembly):一个应用程序(就是指带有主程序入口点的模块)或者一个库文件。 但是程序集实际上可以是由一个或者多个文件组成(dlls, exes, html等等), 代表一组资源, 以及类型的定义和实现的集合。 一个程序集也可以包含对其它程序集的引用。所有这些资源、类型和引用都在一个列表(manifest)中描述。这个manifest也是程序集的一部分,所以程序集是一个自我描述的,不需要其它附加的部件对其描述!
程序集的特性:
    1、.Net环境下类型标识的一部分,也可以说是基本单位。因为,区分一个类型的标识就是包含这个类型的程序集名字加上类型名本身。举个例子,程序集A定义了类型T, 程序集B也定义了同名类型T,但是.Net把这两个类型认为是不同的类型。总之,记住程序集名加上类型名唯一标识一个运行时类型。
    2、是.Net框架用于安全策略的基本单位,许多安全策略都是基于程序集的。

2.2  Reflection
    映射(reflection): 所有的.Net编译器在产生模块(Modules)的目标代码时都会产生有关类型的元数据(metadata), 这种元数据被捆绑在模块目标代码上(多个模块组成assemblies, 一个assembly是.Net下安全控制的基本单位,也是类型对象识别的基本单位), 这种元数据可以通过.Net环境下的reflection对象访问. System.Reflection名字空间下包含了可以访问这种数据的多种类.
使用reflection访问.Net元数据和使用ITypeLib/ITypeInfo访问COM对象的类型库数据非常类似. 例如, 决定类型数据的大小, 通过(程序上下文/进程/机器)边界列集数据传递.
    所以, 可以使用Reflection对象动态引用方法(可以查看System.Type.InvokeMember), 甚至还可以动态地在运行时产生类型(System.Reflection.Emit.TypeBuilder)。

2.3  Managed
受管(managed):
    1、受管代码: .Net环境提供了许多核心的运行时服务, 比如异常处理和安全策略。为了能使用这些服务, 必须要给运行时环境提供一些信息, 这种代码就是受管代码. 所有的C#, VB.NET, JScript.NET缺省都是受管的。
    2、受管数据: 所有由受管代码管理的数据都是受管数据, 这些数据都通过.Net垃圾自动处理器来管理. 但是即使使用了/com+命令行选项,VS7 C++数据也不是受管的, 必须加上_gc关键字才是受管的.
    3、受管类: 通常就是指在ME(Managed Extensions)下的C++类, 加上_gc关键字, 就是一个受管类了. 这就意味着什么呢?
    第一: 这种类的实例是由垃圾自动收集器管理的。
    第二: 除了上面一点, 还有由.Net带来的益处和弊处. 比如, 这种类可以和其它语言交互访问, 比如, ME C++可以从VB类中继承. 这就是益处. 但是受管类只能从一个基类继承, 这就是弊处。

             微软的.NET策略
1  .NET是软件成为一种服务的转移:
    .NET在这个方面的意义是最被广泛接受和理解的。“软件就是服务”的历年最初是在
1997年左右由Oracle的CEO Larry Ellison以及SUN的CEO Scott McNealy在网络计算机的概念大行其道的时候提出的。不过Oracle和SUN并没有真正将这个概念变为现实,他们的视角更多的集中于资源集中化方面。

2  .NET是一个新的编程模型——也就是说是Internet平台:
    Micorsoft正在趋向于将.NET看作一个系统。在表面下,它包含了两种不同的编程模型:一个是Web服务编程模型,另一个是系统编程模型。
    Microsoft开始把.NET系统编程模型作为.NET整体的一个组成部分。计划最终以此代替现有的组件对象模型(Component Object Model,COM)以及Windows应用程序编程接口(APIs),这个现在还没有最终正式定名的模型使用一系列新的基础类。
    .NET系统编程模型是Microsoft私有的。.NET架构(.NET Framework )则包含了Microsft的通用语言运行时(Common Language Runtime , CLR),CLR实现了这种新的编程模型。它还包含了类以及各种机制可以把一个应用程序包装为一个Web服务,这样可以简化Web服务的开发。

3  .NET是Microsoft新的公司战略

4  .NET是对抗法院的拆分命令的一个方法

5  .NET的用户体验
    在技术层面上,.NET平台的基础包括:扩展置标语言,也就是我们熟悉的XML;简单对象操作协议(Simple Object Access Protocol ,SOAP);以及将未来的Internet视为面向各种设备的服务的观念。这些高层次的描述主要是面向这个新的模型中最明显的方面——也就是实现Web服务的部分。
然而,在内部,.NET平台建筑于.NET架构之上,.NET架构提供了实现这些概念的API的底层机制。.NET架构也经历了.NET本身的问题——就是它被用于描述太多的事情了。特别是,.NET描述了两种新的不同的编程模型,他们构成了概念的基础:这就是Web服务编程模型(Web services programming model )以及系统编程模型(system programming model)。
    企业一定要认识到,组成.NET的是两个相互独立的编程模型。Web服务编程模型与底层的系统编程模型是相互独立的。这些编程模型可以也应该分别使用。

6  .NET Web服务编程模型
    .NETWeb服务编程模型大体上就是通过Internet的各种标准来实现各种接口。这是一组以Internet标准为基础的松散的模型,使用HTTP和其它的协议作为主要的通讯机制,同时,使用了XML,SOAP,Web服务描述语言(Web Services Description Language,WSDL),以及通用描述,发现,集成(Universal Description, Discovery, and Integration ,简称UDDI)。最初,多数这种编程模型的使用将采取请求/应答的模式。
    在2003年,Web服务的主要形式将是组件调用以及信息推送,这些在所有Web服务中占到75%以上。更长远的未来,我们认为“协调组织”了的工作流或者服务将成为Web服务的主力,很多这些编程模型已经出现了,比如SOAP和其它一些出现在.NET以前的技术,而且这些技术现在就是可用的,在正式的.NET产品以前就有了。
    作为日益增多的Web服务体系的一种,.NET架构提供了与底层的系统API以及组件模型无关的编程模型。
    这也体现了Microsoft和其它一些公司在上个世纪90年代对分布式计算的看法,并且通过一个简单的方法借助Internet得到了实现。服务以服务器上的程序的方式来实现,这些程序使用标准的协议与调用的程序进行对话。
    如果需要在一个系统中的一个进程中进行跨组件通讯,或者是跨越.NET架构系统或多个进程进行跨组件通讯,.NET架构可以使用SOAP或者或者是二进制协议进行通讯。如果进行跨系统环境(比如,和非.NET架构系统)进行组件通讯,.NET架构可以只使用SOAP。在一个系统上运行的程序和服务仍然使用COM,不过以后慢慢将会变成使用.NET中的新类。
    理论上,这些程序还可以是在UNIX上实现的Enterprise JavaBeans,不过Microsoft没有为此提供什么帮助。但是要记住.NET Web服务编程模型是不依赖.NET系统编程模型的。

7  .NET系统编程模型
    作为.NET平台的一部分,Microsoft也建立了新的系统编程模型,同样在.NET架构上得到了实现。.NET系统编程模型在长远看将最终取代COM以及Windows API,这个现在还没有定名的模型使用了新的基础类。
    .NET架构(.NET Framework )包含了Microsft新的通用语言运行时(Common Language Runtime , CLR),可以支持新的编程模型,并且首次将真正的面向对象的类结构作为了运行时环境的一部分。COM的界面为开发者提供的功能在.NET架构中也是可用的。
.NET系统编程模型是Microsoft私有的,虽然有些部分被开放,这要归结于欧洲计算机制造商联合会(European Computer Manufacturers Association , ECMA)在C#标准化方面的努力。.NET系统编程模型还包含了一些类和机制,可以将现存的程序转化为Web服务,这样可以简化Web服务的开发,虽然这样的设置并不是十分有必要。
  Microsoft的主席Bill Gates将这种向.NET平台的迁移比作和从DOS到Windows一样意义重大。不过我们觉得更加准确的比较应该是这种迁移类似于Win16向Win32的迁移。在向Windows的迁移中,DOS下的程序立刻成为了过去,而Win16的应用则在很大程度上和Win32兼容。
  另一个比较好的比较是把.NET比作当初Mirosoft实现自己的Java时的情况,当时Microsoft将Java类和组件包装为COM组件,Microsoft了解到了将两种模型相互映射的好处,现在Microsoft开始发展这个还没有名字的新的组件模型,他们再次将新旧模型进行了映射和包装,旧模型就是COM,Microsoft在这里的真正意图之一是去掉对Java的需求。
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值