《程序集与命名空间》

序言

   现阶段进入到三层的学习,由王继彬老师讲解,由一个三层登录的实例来具体分析三层的结构,其中提到了程序集(Assembly)和命名空间(namepace),然而详细内容并没有详细讲述,小编在这里浅谈一下两者。

assembly

定义:

经由编译器编译得到的,供CLR进一步编译执行的中间产物,在Windows系统中,呈现的形式为:.dll或者.exe的格式。值得一提的是,程序集必须依靠CLR才能顺利执行。

组成部分:

1. 程序集清单:和我们在淘宝买东西的配送清单一样就是说明里面包含了什么东东。

2.类型元数据:类型元数据是描述程序集中定义的类型的信息,由一些元数据表组成,包含 类、方法、属性、参数、返回值等。

3. MSIL代码:每一种类型的二进制代码,这些代码存储为与机器无关的MSIL代码。

4. 资源:程序的不可执行部分,比如图片等。

    由四部分组成,程序集清单和元数据说明了程序集是自我描述的,相当于自含本身所具有的功能;MSIL是微软中间语言,它是一种介于高级语言和基于Intel的汇编语言的伪汇编语言。程序集当中提供这些语言的代码。具体关于MSIL的内容可参考http://www.cnblogs.com/dwlsxj/p/MSIL.html

执行功能:

   程序集的作用具体分为八部分,同类合并之后可划分为3个层次,这几个作用分别体现在代码、限制性、单元等方面的信息。

   程序集可能在之前的学习中有所体现,如下图,感觉这里与程序集有一定的关联,但是具体的关系有待探索。

namespace

   VS.NET中的各种语言使用的一种代码组织的形式 ,通过名称空间来分类,区别不同的代码功能 同时也是VS.NET中所有类的完全名称的一部分。

   最初步的理解就是在命名空间可定义新类,具体的程序执行的代码体现其中。如下图是基于之前的学习对于命名空间的略知:定义一个新类UserInfo,这是数据访问层,提供相关数据的读和写。

各具特色

1.命名空间用于对类型进行逻辑分组;程序集则是程序的物理分组,对应于一个dll或exe文件

2.逻辑分组主要针对开发人员,而物理分组主要针对安装和部署。

相互交织

1. 从属于一个命名空间的各个类型可能在不同的程序集中实现。

例如:system.IO.FileStream类型是在MSCorlib.dll 程序集中实现的,而System.IO.FileSystemWatcher类型是在System.dll 程序集中实现的。事实上, .Net framework 甚至根本没有发布一个System.IO.dll程序集。(一个程序集内可能有多个命名空间,同一个命名空间可能存在于不同的程序集中.)
2. 在一个程序集中,也可能包含不同命名空间中的类型。

例如,System.Int32和System.Text.StringBuilder类型都在MSCorLib.dll程序集中。
3. 在.net framework SDk文档中查找一个类型时,文档会明确的指出类型所属的命名空间,以及实现了该类型的程序集。
(好比一个类型,它有两个身份证,一个是命名空间,一个是程序集)

PS:针对assembly与namespace的理解是少之又少,具体的实践来验证理论还有待学习,知识的理解不是浅尝辄止,而是精益求精。

 



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 37
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 37
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值