第7章 程序集
【简介】:程序集在.NET开发中有着重要的地位,它是.NET应用程序的基本构造块。本章主要介绍了程序集的基础知识、基于程序集实施组件化开发、互操作程序集等。
第一节 程序集的基础知识
1、程序集的生成与使用。
A 程序集(Assembly)是.NET Framework中基本的软件模块,它可以包含数目不限的类型,其载体为一个或多个DLL文件,也可以是一个可独立执行的EXE文件。通常使用Visual Studio提供的类库项目模板来创建程序集。
B 如果需要使用特定程序集中的类型,需要添加对此程序集的“引用”。
C using语句导入程序集中的命名空间。
2、程序集的内部结构。
|
A、 IL代码:在程序运行时将会被即时编译为本地代码。
B、 资源:比如图片文件或字符串常量等。
C、 类型元数据(Type Metadata):向外界说明“我拥有多少个类,每个类有哪几个方法和字段”之类的信息。
D、程序集元数据:一个程序集可能分布于多个文件中,因此必须有一个文件清单,声明“我分布在哪几个文件中”。
E、 由于元数据的存在,使程序集成为“自说明的”,不再需要注册表,直接拷贝即可完成安装。
第二节 程序集与组件开发
1、 组件的概念:
A、 组件:是指可以用于重用、发布和部署的软件模块。
B、 .NET平台上的组件化开发是基于程序集的,一个程序集就是一个组件。
C、 组件的一个重要特征:接口与实现相分离。
2、 组件化开发方法及步骤:
A、 重用已有组件
B、 开发部分新组件
C、 组合新旧组件搭建出新系统。
3、 组件化开发中的组件依赖性:
A、 先编译只被别人依赖,而不依赖别人的组件。
B、 大型的软件系统中,要尽量避免出现循环依赖的情况。
【感:】在代码日常积累时,要学会以组件进行代码的组织和管理,这样开发应用程序时自然很快。
第三节 Silverlight项目结构剖析
1、 Silverlight应用程序与宿主
当使用Visual Studio创建Silverlight项目时,默认情况下关联着一个ASP.NET Web Application,并且使用一个Silverlight项目名+TestPage.aspx承载Silverlight页面。
2、 xap包中的秘密
A、 它是一个Zip格式的压缩文件。
B、 其中有一个AppMainifest.xaml 文件,它被称为Silverlight应用程序清单。它指明了有哪些程序集与入口程序集的 名 字、类型等。
C、 所有的XAML页面将作为资源嵌入到程序集中。
3、 运行机理:
A、 当用户访问包含了Silverlight页面的.aspx网页时,浏览器从接收到的HTML代码中发现了有一个引用ClientBin/Silverlight项目名.xap的<object>元素,它就向Web服务器再次发出一个针对.xap文件的HTTP请求。
B、 浏览器收到web服务器发回的.xap文件后,它启动Silverlight插件,给Silverlight应用程序提供一个运行环境。
C、 Silverlight插件接着展开.xap文件的内容,找到并装载其中的Silverlight程序集,紧接着实例化一个App对象,App对象的构造函数从程序集资源中提取Silverlight页面的xaml代码并显示它。
第四节 互操作集与本地类型
1、.NET互操作程序集
A、.NET应用程序,通过互操作程序集作为桥梁,调用COM组件。(间接调用)
B、互操作程序集确定了.NET中的类型与COM组件中的类型之间的对应关系。
C、在.NET项目中添加这一互操作程序集的引用,就可以在.NET应用程序中创建这一程序集中所包含的各种类型的实例(对象),对这些对象的方法将会被转发给COM组件。
2、.NET互操作程序集特性:
A、本地类型新特性,其实就是将互操作集中的被用到的哪部分类型“打包”嵌入到.NET主程序中罢了。
B、若嵌入的类型是从一种称为“主互操作程序集”(PIA)中提取的,那么使用本地类型的.NET应用程序就脱离了对 COM组件的版本依赖。
C、互操作程序集中相同名称的类型,即使它们拥有的成员不一样,也应该是等价的,这就是.NET4.0所支持的本地类型等价性。
【感:】.NET4.0对COM组件的强有力的支持,使得我们可以充分调用大量基于COM技术的应用程序。如在silverlight程序中,可以将数据导出到excel中,在Excel中排版、打印等。