.NET 与 Win32 相比的优势Microsoft? .NET(读作“Dot-Net”)Framework 精简版是一种用于 Microsoft Windows? for Pocket PC 和 Microsoft Windows CE .NET 的新型应用程序编程接口 (API)。这一新型 API 为移动设备和嵌入式设备带来的好处与完整的 .NET Framework 给基于 Windows 的桌面平台带来的好处相同。.NET Framework 精简版给程序员提供了两种编程语言选择:Microsoft Visual Basic? 的一个兼容 .NET 的增强版本,称为 Visual Basic .NET;以及 Microsoft Visual C#?(读作“see-sharp”),这是专门为 Microsoft .NET 开发的 C 和 C++ 语言家族中的一个新成员。 Windows CE 程序员可能会问:Windows CE 是否需要另一个 API?我们目前使用的 API 有什么问题?.NET 给 Windows CE 增加了什么?什么时候采用它更有意义?本白皮书将探讨这些问题。 Win32 有什么问题?Microsoft Win32? 是桌面 Windows(即 Microsoft Windows XP)以及嵌入式和移动版本的 Windows(这里指 Windows CE)的核心 API。但它并不是唯一的 API,原因是:它相对底层、古怪、容易出现内存泄漏,总的来说不太好用。 现在也有其他编程接口,包括适用于 C++ 程序员的 Microsoft 基础类 (MFC) 库以及 Microsoft Visual Basic 和 Microsoft eMbedded Visual Basic。这些 API 主要是为了解决 Win32 中的缺陷而创建的,但它们也有自己的缺陷和局限性。例如,MFC 实际上是 Win32 上覆盖的一个薄层。因此,尽管 MFC 修补和隐藏了 Win32 的许多瑕疵,但它仍然具有 Win32 的一些缺陷,尤其是其命名规则非常古怪,而且很容易发生内存泄漏现象。基于 Windows 的桌面平台上的 Visual Basic 及其 Windows CE 精简版 eMbedded Visual Basic 都仅限于用作标准的 API。事实上,随着 .NET Framework 精简版的推出,Microsoft 已宣布在未来 Windows CE 版本中,将不对 eMbedded Visual Basic 进行增强,也不会将它移植到新的 CPU 体系结构。 不管是否古怪,Win32 都有自己的地位。在内存有限的环境中,这是唯一的选择,因为 Win32 创建的可执行文件最小。(尽管在一个内存有限的环境中,必须加倍小心地避免内存泄漏!)对于某些类型的软件(主要是操作系统扩展),您别无选择,只能使用 Win32。这对于设备驱动程序、命令解释程序扩展、控制面板小程序、OEM 适配层 (OAL) 以及其他底层模块也都适用。在这样的情况下,Win32 是唯一的可用编程接口。 .NET 有什么优点?.NET 代表着使编程更加高效的一种系统化的努力成果。也就是说,.NET 不是简单的一个元素,而是许多元素的综合体。.NET 的每个元素都体现了如何简化代码的编写;总体来看,所有元素都代表着一种方向 - 有人称之为革命。对于 Microsoft 的长期客户来说,它代表着 Microsoft 以 Internet 为中心的重新塑造。而且,为 Windows 的任何版本(桌面或嵌入式)开发软件的人都需要评估 .NET 对他们有何影响,而不是是否会影响他们。 但是,为什么需要进行这些改变呢?这是因为软件开发目前仍然是一项人力密集度非常高的、容易出错的活动。相比之下,硅密度(以及用于在硅中设计复杂电路的工具)的进步已经使硬件产生了惊人的发展。而软件开发方面的进步要小得多。但是,考虑到软件的重要性(对于某些企业来说,软件是一个关键的增值领域),提高软件开发效率的努力很可能会产生巨大而持久的效益。 .NET 基础关于 .NET 的资料已经有很多,因此,本白皮书只讲述一些基础性的知识。为了便于理解 .NET Framework 精简版具备什么功能,我在此概要介绍一下适用于在 Pocket PC 和支持 Windows CE .NET 的设备上构建移动式和嵌入式应用程序的 .NET 关键元素。 .NET 包含了许多元素,限于篇幅,我将重点介绍一些关键元素,而有些元素在此不会提及。有关 .NET 的更详细信息,请访问 Microsoft .NET Web 站点。 .NET 应用程序类.NET 包含三个常规应用程序类: - Windows 窗体 - 在客户端系统上运行的传统 GUI 应用程序。.NET Framework 精简版支持桌面 .NET Framework 的一个子集,可用于创建基于 Windows CE 的 GUI 应用程序。
- Web 窗体 - 基于浏览器的应用程序(即基于 HTML 的应用程序),具有一个客户端组件和一个 Web 服务器端组件。尽管 .NET Framework 精简版本身没有内置对 Web 窗体的支持,但基于浏览器和 Windows CE 的应用程序仍然可以受益于基于 .NET 的 Web 服务器的强大灵活性。将 Microsoft Mobile Internet Toolkit (MMIT) 安装到这样的服务器上时,MMIT 会进一步增强支持各种便携式设备标记语言的能力,这些标记语言包括 HTML、Compact HTML (cHTML) 和无线应用协议/无线标记语言 (WAP/WML)。
- Web 服务 - 基于 Web 服务器的远程过程调用 (RPC) 机制。该机制使用以 XML 编码的数据报,而且这些数据报是按照 SOAP 协议生成、并通过 HTTP 协议进行传输的。.NET Framework 精简版支持创建 Web 服务客户端,但不支持创建 Web 服务服务器。要部署基于 Windows CE 的 Web 服务服务器的开发人员可以使用用于 Windows CE 的 SOAP 工具包来执行此任务,SOAP 工具包包含在带有 Microsoft Platform Builder 的 Windows CE .NET 中。
基于 Windows CE .NET 的应用程序将会从所有这三种应用程序类受益。但是,.NET Framework 精简版直接支持的类型只有两种:Windows 窗体和 Web 服务客户端。Web 窗体将支持 Windows CE 设备,但其所有逻辑都将基于服务器。就 Web 浏览器而言,正常的 HTML(或者 WAP 或 cHTML)是在基于 Windows CE 的设备和支持 .NET 的服务器(运行 Microsoft Mobile Internet Toolkit [MMIT])之间传输的。 .NET 体系结构使您能够将来自不同编程语言的代码连接在一起。我将体系结构中的这些部分称为“公共元素”,因为它们名称中都有“公共”一词。就此而言,公共意味着标准。下面是 .NET 的一些公共元素: - 公共语言运行库 (CLR) - 用于运行 .NET 可执行文件的运行时环境,具有加载程序、管理内存和其他操作系统核心功能。
- 公共类型系统 - 可从所有兼容 .NET 的编程语言中使用的标准类型。
- 公共语言接口 - 类、方法、接口、枚举和 .NET 的其他编程元素之间的标准链接。
- 公共中间语言 - 也称为“Microsoft 中间语言”或 MSIL,是一种独立于 CPU 的标准机器语言级代码,可以将所有 .NET 可执行文件转成该代码。
.NET Framework.NET Framework 是一种专门为易于使用而设计的面向对象的 API。.NET API 的用户界面经过精心设计,是“可发现的”,其目的同样是:一旦了解了基础知识,就非常容易进行编程。比较一下,您就会发现 Win32 函数仅仅具有最小限度的包装,它们基本上是分散在一组动态链接库 (DLL) 中的一组函数。当程序员编写 Win32 代码来创建和控制一个窗口(基本的用户界面对象)时,就需要使用 CreateWindow、MoveWindow 和 ShowWindow 等函数。尽管相关的文档有助于您找到它们和相关的函数,但 DLL 的结构设计使得很难找到所有函数。所有函数(Windows CE .NET 有 2,500 个函数,比 Windows XP 多两倍)都淹没在一个由文件、库文件和 DLL 组成的海洋中。要找到某个函数,您必须异常警觉,不放过任何有可能会有用的函数。 .NET 利用各种类型的容器来解决此问题。而且,事实上 .NET 具有各种代码容器和数据容器。让我们先看一下 .NET 代码容器。 函数被打包成类,而类又被打包成命名空间(这些命名空间又可以打包成其他命名空间)。例如,使用一个名为 Form 的类中的函数创建和控制窗口。Form 类包含在 System.Windows.Forms 命名空间中。可以将一个命名空间名称与一个类名称结合在一起来创建一个完全限定的名称。在刚刚举过的示例中,可以通过 System.Windows.Forms.Form 明确地引用 Form 类。在这个类中,您可以找到用于处理窗口的各种元素。 .NET API 还广泛使用容器来保留数据。例如,Form 类有一个名为 Controls 的容器对象,其类型为 ControlCollection。您可以通过调用 ControlCollection.Add 来添加控件,通过调用 ControlCollection.Remove 来删除控件,通过检查 ControlCollection.Count 属性来确定窗体上的控件数目,以及使用通过 ControlCollection.GetEnumerator 方法提供的枚举器来查看可用控件的列表。如这些示例所示,就象可以将命名空间名称与类名称连接在一起一样,也可以将类名称和成员函数名称连接在一起。 就象 Forms 类具有可以在 ControlCollection 集合对象中访问的枚举器一样,许多数据容器也都带有枚举器。枚举器使您可以获得集合内容的完整列表。在前面的示例中,通过请求 Controls 集合来提供列表,很容易查看窗口中的控件。 这种组织代码和数据的方法的所有方面都表明它是一个高度一致的 API。也就是说,一旦熟悉了命名空间的基本概念,您就会看到在必须使用以前未曾用过的某个对象时,命名空间如何帮助您找到相关的函数。而且,一旦您熟悉如何将数据对象放入容器中之后,就很容易了解如何添加、删除、枚举和处理对象的集合。这样,.NET 就提供了高度的一致性和易用性 - 这是 .NET 系统设计师的大量设计和思考的结果。所有这些都将帮助程序员提高效率。 公共类型系统公共类型系统 (CTS) 提供了大量预期的类型:有符号的整数和无符号的整数(8 位、16 位、32 位和 64 位)以及浮点数。另外,还有用于日期、时间和小数(精确的定点数)的类型(请参见表 1)。这组公共的类型简化了不同语言之间的互操作性。在 Windows CE 上,您可以使用两种不同的编程语言(C# 和 Visual Basic .NET)编写 .NET 程序。 表 1:公共 .NET 类型 | .NET Framework 类型 | C# 别名 | Visual Basic .NET 别名 | 大小 |
|---|
| System.Byte | Byte | Byte | 1 字节
|
|
|
|
|
|
标签NewsAbout错误:Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.
|
|
|
|