Microsoft .NET框架程序设计读书笔记(一)

本文解释了DLLhell问题及其产生的原因,并介绍了.NET框架的核心组成部分,包括通用语言运行时(CLR)和.NET框架类库(FCL)。此外还讨论了序列化的重要性及.NET框架提供的两种序列化技术。

1.什么是DLL hell?由什么引起的?

  • DLL hell DLL灾难是由COM组件升级引起程序不能运行的情况。
  • COM对象常常编译为dll文件。由于COM对象可以重用,这样多个程序可能使用同一个COM对象,如果这个COM组件升级了,就可能出现某个使用这个组件的应用程序不能正常运行。
  • DLL hell问题的根本原因在于为一个新应用程序所安装的组件覆盖了一个现有应用程序正在使用的组件,而其结果往往会导致现有应用程序出现问题,甚至不能正常工作。

2..NET框架主要包含两个部分

  • 通用语言运行时(Common Language Runtime)CLR,它是一个可以被各种不同的编程语言所使用的运行时。可以使用任何支持CLR的编程语言来创建源代码文件,然后用相应的编辑器来做语法检查和源代码分析,但是不管使用何种编译器(C#编译器、Basic编译器、J#编译器等),最后生产的结果都是一个托管模块(managed module)。托管模块是一个需要CLR才能执行的标准Windows可移植可执行(Portable executable,PE)文件。
  • .NET框架类库(Framework Class Library)FCL

3.什么是序列化(serialization)?为什么要有序列化?

  • 序列化是将对象的状态信息转换为可以存储或传输的形式的过程。在序列化期间,对象将其当前状态写入到临时或持久的存储区,以后可以通过从存储区中读取或反序列化对象的状态,重新创建该对象。与序列化相对的是反序列化,它将流转换为对象。这两个过程结合起来,可以轻松地存储和传输数据。
  • 序列化的目的是以某种存储形式自定义对象持久化;将对象从一个地方传递到另一个地方;使程序更具维护性。

4..NET Framework序列化的方法是什么?

.NET Framework提供两种序列化技术:

  • 二进制序列化:保持类型保真度,对于在应用程序的不同调用之间保留对象的状态很有用。例如,将对象序列化到剪切板,可以在不同应用程序之间共享对象。
  • XML序列化:不保持类型保真度,仅仅序列化对象的公共属性和字段。仅仅只是使用数据,而不限制该数据的应用程序时,XML序列化很好用。由于XML是一个开放式标准,因此对于通过Web共享数据而言是一个很好的选择。

5.什么是托管?

托管(Collocation),是.NET的一个专门概念,它是融于通用语言运行时(Common Language Runtime,CLR)中的一种新的编程理念。

那么什么是通用语言运行时CLR?

通用语言运行时CLR:是.NET框架应用程序的执行引擎。它提供了许多服务,包括:代码管理(装入和执行)、类型安全性验证、元数据(高级类型信息)访问、为管理对象管理内存、管理代码等。

托管由三部分组成:

  • 托管代码:.NET环境提供了许多核心的运行服务,如:异常处理和安全策略。为了使用这些服务,必须要给运行环境提供一些信息代码(元数据),这种代码就是托管代码。除C++编译器生成的是非托管代码外,其余的编译器生成的都是托管代码。必须在C++的编译器中使用命令行选择项才能产生托管代码。
  • 托管数据:与托管代码密切相关的是托管数据。托管数据是由公共语言运行的垃圾回收器进行分配和释放的数据。
  • 托管类:可以使用_gc关键字将类标记为托管类。它表示类实例的内存由垃圾回收器管理。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值