.net essential读后感(一)

一、CLR是一个更好的COM

组件技术主要强调独立开发和部署程序之间的关系。
COM将组件约定表示为类型定义。
关于COM:
1·COM的组件约定是物理的,COM对组件间的调用有着严格的要求,表现为精确的偏移量,明确的堆栈规则等。它带来了过度关注细节和版本控制困难的缺陷,尽管这将产生高效代码,但是难以接受。(缺少元数据,无法逻辑约定,无组件依赖关系描述)
2·COM的约定描述格式缺乏扩展性
3·COM的交换格式有两种:接口定义语言IDL,类型库TLB,不同构。
 
CLR也关注组件间的约定,并且这些约定也是基于类型的。
1·完全规范的格式来描述组件之间的约定——元数据
2·可扩展性、定制特性——attribute
3·约定被描述为类型的逻辑结构。CLR推迟确定任何数据的内存表示,直到运行时类型被首次加载。约定虚拟化,CLR通过名字和签名来引用field and method,not offset。

 

IL使程序具有平台无关性。IL+metadata,实现了约定虚拟化。当IL翻译成本机代码,任何数据类型和方法的实际内存形式都将用于本机代码,从而受益于高性能的物理耦合方式。C++和COM在形式阶段就考虑这一种物理耦合方式,造成类型更匹配开发者自己的机器。
 
CLR尤其强调类型中心,一切都是类型。在Managed的情况下,CLR是万能的。CLR程序员被鼓励放弃非managed的方式。CLR编程模型很依赖metadata,CLR内外的程序均可访问metadata,这独立于metadata被用来将IL代码翻译成本机代码的事实。
CLR是组件软件的一个发展阶段,它支持基于强类型的组件的集成。这些约定都是逻辑结构的,虚拟化。组件约定通过metadata描述。
metadata是一种可扩展的、机器可读的交换格式。

 

 

 

 

 

posted @ 2012-08-31 21:32  zzq417  阅读(215)  评论(0编辑  收藏  举报