您的位置:首页 > 其它

微软Visual Studio2005开发工具路线图详解(2)

2006-05-12 14:25 316 查看

Visual C++

  Visual C++ 2005 将为面向 Windows 和 .NET Framework 的系统和应用程序开发人员提供比其较低版本更多的功能和更细粒度的控制。 人们计划在该产品的所有领域(包括语言、编译器和核心库)进行关键改进。这些增强功能将使 C++ 开发人员能够更有效地面对 CLR、优化代码的性能、面对 64 位 Windows 以及提高应用程序的安全性。此外,Visual C++ 2005 将 使开发人员能够直接在 Visual Studio 2005 IDE 中为移动设备生成本机 C++ 应用程序。(有关嵌入式 C++ 开发的详细信息,请参阅 “基于设备的开发”一节)。

  通过 Visual C++ .NET 2002 版和 2003 版,托管扩展使开发人员能够显式利用 CLR 和 .NET Framework。在 Visual C++ 2005 中,现有的托管扩展语法将继续得到完全支持。此外,Visual C++ 将通过强大的新功能以及用于编写托管代码的更为优雅的语法为 CLR 和 .NET Framework 提供扩展支持。该语法现正在作为到 ECMA 标准化公共语言基础结构 (CLI) 的 C++ 绑定而进行 ECMA 标准化。这一新语法将称为 C++/CLI。

  C++ 语言的 C++/CLI 子集主要将在 Visual C++ 2005 中实现,并将为 Visual C++ 开发人员提供很多新功能。C++ 开发人员将第一次能够使用真正的 C++ 编程范型编写 .NET 连接的应用程序。例如,将为由 CLR 和垃圾回收器管理的代码和数据启用 C++ 模板和 C++ 样式的确定性终止。此外,C++/CLI 还为 C++ 提供很多 CLR 编程范型,包括泛型的 CLR 实现。

  C++/CLI 还简化了定义和使用托管数据类型的方式。新标准引入的关键字对于 C++ 开发人员而言,比当前托管扩展的下划线-下划线 关键字更为直观。在 C++/CLI 中,ref 关键字用来以与托管扩展 __gc 关键字类似的方式定义垃圾回收类:

ref class MyRefClass { /* ... */ };

  此外,C++/CLI 还引入一种新的类型 — 句柄,该类型用来表示自动垃圾回收的使用。句柄借用指针的语法,但使用加字符号 (^) 而不是星号 (*)。关键字 gcnew 用于创建上述垃圾回收对象,并且返回一个句柄:

MyRefClass ^ c = gcnew MyRefClass();

  通过 C++/CLI,开发人员还将能为句柄类型合并入传统的 C++ 样式确定性终止。这意味着可使用正常的 C++ 堆栈分配语法选择性地将引用类型作为对象进行实例化。这样,该对象将在脱离作用范围时自动调用它的析构函数。该功能启用了在其他面向 CLR 的语言中不可用的编程风格。

  除了 C++/CLI 支持以外,Visual C++ 编译器还将为面向 CLR 的代码提供多个代码生成增强功能。这些增强功能包括:能够指定不包含本机 x86 指令的“纯粹”图像,以及通过 CLR 验证过程的“安全”图像。而且,Visual C++ 2005 编译器能够比其他托管语言更好地优化 MSIL。

  为 Visual C++ 2005 中的 C++ 编译器规划了很多增强功能,其中之一便是 Profile Guided Optimizations (POGO)。POGO 技术使编译器能够测量应用程序的各种数据,并收集有关应用程序在运行时使用方式的信息。这些信息使 Visual C++ 能够基于真实的应用程序使用模式进一步优化生成的代码。目前,在免费下载的 Platform SDK (PSDK) 中附带有 64 位 POGO 技术的预发布版本。在 Visual C++ 2005 中,该技术将扩展到核心 32 位编译器,且有关的支持将集成到 IDE 中(图 7)。



图 7. Visual C++ 2005 中的 POGO 支持将通过规范和运行时分析来优化应用程序。
[align=left][/align]

该版本还将包含目前在 PSDK 中仅以预发布形式提供的 64 位 C++ 编译器。这些编译器使 Visual C++ 开发人员能够编写面向在 Intel 和 AMD 硬件上运行的 64 位版本 Windows 的非托管代码。对面向 64 位 Windows 的支持将完全集成到 IDE 中(图 8)。



图 8. Visual C++ 2005 中的平台支持范围被扩展以包括 64 位 Windows 以及各种移动设备。
[align=left][/align]

  除语言和编译器增强功能以外,Visual C++ 2005 还为核心 C++ 库(如 Microsoft 基础类库 (MFC)、标准模板库 (STL) 和 C 运行时库 (CRT))提供改进和增强。这些增强将使 C++ 开发人员能更好地支持 .NET Framework,并提供内置的应用程序安全性。

  首先,将引入新版本的标准模板库 (STL)。该版本的 STL 将被调整以与托管代码和数据进行交互。那些习惯于使用 STL 编写传统 C++ 应用程序的程序员将发现,他们能应用相同的编码技术来编写基于 CLR 的应用程序。其次,新版本带有增强安全功能的 C 运行库 (CRT) 将随 Visual C++ 2005 一起发布。作为 Microsoft 对“可信赖计算”倡议的持续承诺的一部分,该版本的 CRT 将有助于增强集成了 CRT 的应用程序的集体安全性。

  对于 Visual C++ 2005,开发人员将继续选择 Visual C++ 来生成最为苛求的应用程序和组件。Visual C++ 2005 通过提供令人兴奋的新增和改进功能,为具有控制和性能意识的 C++ 开发人员扩展了在 Visual C++ .NET 2003 版中提供的核心功能集。

Visual C#

  在 Visual C# 2005 中,Microsoft 计划在 C# 中注入多种语言和代码编辑器功能,这些功能将为 C# 开发人员提供“专注于代码的 RAD”,从而提高创建业务框架和可重用的面向对象组件的工作效率。这些功能包括泛型、迭代器、匿名方法、不完全类型以及重构。

  随着项目的复杂性不断提高,程序员经常需要一种方式来更好地重用和自定义现有的基于组件的软件。为了达到这样一种高级代码重用,程序员通常利用一种称为泛型的功能。在 Visual C++ 2005 中,CLR 包含一个类型安全、高性能、编译时验证版本的泛型,与 C++ 中的模板以及为 Java 语言提供的泛型相比,该泛型的语法稍有不同,而实现则有很大区别。泛型使开发人员能一次性地创作、测试和部署代码,然后将这些代码重用于多种不同的数据类型,而性能影响可忽略不计。与其他强类型实现相比,CLR 的泛型实现还将减小代码膨胀,从而使源代码更加易于阅读和维护。

  下面的示例,创建一个一般性的 Stack 类,该类将接受为其创建的类型,并以本机方式存储该类型的数据,而不是强制与基类类型进行转换:

public class Stack
{
private ItemType[] items;

public void Push(ItemType data)
{
...
}

public ItemType Pop()
{
...
}
}

  一般性的 Stack 类使用的类型只在实例化时指定。在该示例中,通过在实例化语句中使用尖括号表示法将基元整数类型指定为参数,指示 Stack 类使用该类型:

Stack stack = new Stack;stack.Push(3);int x = stack.Pop();

  除通过泛型提高代码重用性以外,Visual C# 还将提供对迭代器的支持,以便消除与实现枚举数模式相关联的、频繁重复的事务性工作。基于研究型语言(如 CLU、Sather 和 Icon)中的类似功能,迭代器使类型易于声明 foreach 语句对其元素进行迭代的方式。C# 编译器会自动将迭代器代码转换为适当的类,而无需创建类和生成状态机,以便手动实现枚举数模式。

  匿名方法是实用的语言构造,让使用 Visual C# 2005 的程序员能够创建可封装在委托中且后期执行的代码块。它们基于称为 λ 函数这一语言概念,类似于 Lisp 和 Python 中对应的语言概念。匿名方法在其使用时动态定义,而不是作为特定类的命名方法预定义。匿名方法使某些类型的操作更加方便,尤其是方法签名或方法体在运行时需要更改的情况。

  该示例使用一个匿名方法直接修改窗体上的列表框,放弃为该类创建全新方法的做法,而是直接引用那里包含的可执行步骤。用于修改该列表框的代码存储在紧跟委托创建语句之后的执行范围内:

public class MyForm
{
ListBox listBox;
TextBox textBox;
Button button;

public MyForm()
{
listBox = new ListBox(...);
textBox = new TextBox(...);
button = new Button(...);
button.Click += new EventHandler(sender, e)
{
listBox.Items.Add(textBox.Text);
};
}
}

  Visual C# 2005 还使 C# 开发人员能够使用不完全类型将包含大量源代码的类型分割到多个不同源文件。不完全类型提供更方便的开发和代码维护,使开发人员能够分隔计算机生成和用户编写的类型部分,以便更有效地补充或修改由工具生成的代码。

  除扩展 C# 语言以外,Visual C# 2005 还为 C# 开发人员引入一些代码编辑器增强功能。其中一项增强功能是代码重构,即以规范的方式重新组织代码的过程(图 9)。通过重构,C# 开发人员可在编写代码以后改进代码的设计和效率。Visual C# 2005 包含下列重构类型:重命名、封装字段、更改方法签名、提取方法和提取接口。



图 9. 重构使开发人员能够有效管理组织混乱的代码。
[align=left][/align]

  其他 C# 代码编辑器增强功能包括:公共编码构造(如循环和 try/catch 块(图 10))的“填充空白”代码扩展、对于属性和泛型的改进的智能感知支持,以及一组丰富的、用于自定义 IDE 格式化 C# 代码的方式的选项。



图 10. 代码扩展为公共编码构造提供模板。
[align=left][/align]

  通过致力于语言革新,C# 仍将是很多框架设计人员和软件架构师首选的语言。通过用面向组件的功能、现代语言构造和代码编辑器增强功能来补充它的现代语法,C# 将继续信守与专注于代码的 RAD 有关的承诺。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐