本文总结了一些关于.NET 的常见问题与解答。这些.NET 常见问题对于想要了解.NET 整体概念的读者们会有一些帮助。 一 什么是.Net? 它主要包括什么?
.Net 是为简化在第三代因特网的高分布式环境下的应用程序开发,基于开放互联网标准和协议之上,实现异质语言和平台高度交互性,而构建的新一代计算和通信平台。
.Net 主要包括普通语言运行时 (Common Language Runtime) 和.Net 构架类库。
二 .Net 主要的优点有哪些?
.Net 的主要优点有跨语言,跨平台,安全,以及对开放互联网标准和协议的支持。
.Net 支持多种语言的互操作,即在一种语言下开发的组件,可在另一组件下通过面向对象的继承而得以重用,目前.Net 支持的语言达二十多种。
.Net 通过将各语言先编译成中间语言 (IL),然后再执行时用即时(Just In Time) 编译器将之编译成本地平台代码来实现异构平台下对象的互操作,目前.Net 支持的平台有 Windows,Linux 和 Unix 的支持正在开发中。
.Net 通过普通语言运行时 (Common Language Runtime) 来实现资源对象,类型的安全。
.Net 通过对 HTTP,XML,SOAP,WSDL 等 Internet 标准的强劲支持提供在异构网络环境下获取远程服务,连接远程设备,交互远程应用的编程界面.
三 .Net 中的普通语言运行时 (Common Language Runtime) 指什么? 它在.Net 中处什么位置?
CLR(Common Language Runtime)普通语言运行时是整个.net framework 构建的基础,是实现.Net 跨平台,跨语言,代码安全等核心特性的关键。它实际上是驻留在内存里的一段代理代码,负责在整个.net 整 个执行期间的代码管理工作,比较典型的有:内存管理,线程管理,远程管理,代码强制安全类型等。这些都可称得上.net framework 的生命线。实际上,普通语言运行时代理了一部分操作系统的管理功能。
四 .Net 构架类库是什么? 包括哪些内容?
.Netl 构架类库是基于运行时面向对象的特性而建造的,和普通语言运行时紧密集成的一族可重用类 (Class) 的集合。它大大简化了软件开发的难度,而且很容易与第三方组件无缝集成。
.Net 架构类库主要包括对一下编程模型的支持:
1. 控制台应用程序。
2. 脚本和宿主应用程序。
3. Windows Forms 应用程序(Windows 桌面 GUI 应用程序)。
4. ASP.Net 应用程序。
5. Web Services 应用程序。
6. Windows 服务程序
五 .Net 支持的开发语言有哪些?.Net 语言的互操作性是指什么?
.Net 声称支持市面上 20 多种语言,但目前只有微软官方发布的 C#,Visual Basic.Net,Managed C++,和 Jsript,其他厂商声称正在开发中的支持工具有 COBOL,Eiffel,Perl,Smalltalk,Python。
.Net 语言的互操作性是指遵循普通语言运行时 (Common Language Runtime) 规范的语言在对象继承方面的支持,即用一种语言在.Net 平台下开发的类可在另一语言中重用,这通过一种称作微软中间语言 MIL 来实现,即语言编译器首先将该语言编译成微软中间语言,再在相应平台下编译出本地代码。这一切都是在普通语言运行时的规范下进行。
六 .Net 支持的平台有哪些? 它的跨平台实现得如何?
目前支持.Net 的平台有 Windows 2000, NT4 SP6a, Windows Me 和 Windows 98。其声称支持的平台有 Unix,Linux 等,目前有三个项目正在开发 Linux 下的.Net 平台:Ximian 公司的 Mono 项目,DotGNU 以 及 Potable .NET.
七 .Net 与 COM 的关系是什么?.Net 是否意味着 COM 的终结?
COM 定义了组件对象间通信的二进制标准,.Net 通过组件内置的类型系统提供了类似的机制,它为此提供了另一个途经。.Net 并不意味着 COM 的终结,但必将大大减少开发人员对 COM 的依赖。.Net 支持 COM 和.Net 组件之间的互操作性,实际上可通过 Runtime Callable Wrapper(RCW)来实现在.Net 中获取 COM 组件,通过 COM Callable Wrapper(CCW)来实现在 COM 中获取.Net 组件。
八 .Net 中的中间语言 (IL) 是什么? 它在.Net 平台中起什么作用? 开发人员可以用中间语言 (IL) 编程吗?
.Net 中的中间语言是指可以在普通语言运行时规范下,. 执行时通过即时 (Just In Time) 编译器转化为本地代码的,与 CPU 独立的一族指令集合。它在.Net 平台中是实现语言互操作的一个核心环节,所有.Net 平台的语言都要先被编 译成中间语言 (IL)。程序员也可以直接利用中间语言(IL) 来编程,但不推荐那样做,中间语言对理解.Net 对象某些行为和程序的调试很有帮助
九 .Net 中的自动垃圾收集是什么? 它给.Net 平台下的编程带来什么变化?
.Net 垃圾收集器负责整个.Net 运行时受管代码的内存分配与释放任务。它通过一定的优化算法来选择收集的对象和时间。程序员只有在释放大 量受管资源时可以进行立即强制垃圾收集,在释放非受管资源时采用终止化 (Finalize) 操作来处理,需要在程序运行中释放的应该实现 Dispose()方法,并明确调用。其它时间将资源的回收交由.Net 垃圾收集起来做。
十 .Net 的受管 (Managed) 代码与非受管 (Unmanaged) 代码指什么? 他们的编码有什么区别?
.Net 的受管代码 (Managed Code) 是指符合普通语言运行时 (Common Language Runtime) 规范,在内存中受运行时代码代理进行内存管理,线程管理,远程管理,代码强制安全类型的代码。非受管代码指对内存,文件,数据库等非受管 资源进行操作的代码,他们通常不受运行时代码代理管理,是不安全的。对受管代码的编程只需专注于编程的逻辑,对于内存等资源的管理交由普通语言运行时 (Common Language Runtime)来负责,而对非受管代码的编程,则要开发人员精心负责各种非受管资源的分配和回收工作。
以上十条.NET 常见问题,希望看了之后会增进你对.NET 平台的认识。