当前位置:编程学习 > asp >>

《.NET4.0 面向对象编程漫谈》读书笔记 ——第7章 程序集

第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中排版、打印等

补充:Web开发 , ASP.Net ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,