VSTO 2005 版为基于 Microsoft Office Excel 2003 和 Microsoft Office Word 2003 的业务解决方案的开发提供重大的增强。根据该版本 VSTO 提供的基础,Visual Studio 2005 Tool for Office 将解决 Office 解决方案开发人员目前面临的一些最大的难题,包括数据和视图元素的分隔、Office 解决方案程序集的部署、服务器端和脱机方案以及与 Visual Studio 工具集的无缝集成。
VSTO 2005 的主要目标之一是在 Office 文档中分隔“数据”和“视图”,以便简化基于 Office 的解决方案的创建。目前,Excel 电子表格和 Word 文档,由单元格值/文本(表示数据)以及字体等与数据有关的描述性信息(表示视图)组成。因为 Word 和 Excel 不具有内置的编程数据概念,所以开发人员将受到文档中存储的数据有效开发解决方案的能力的制约。
VSTO 2005 将通过使数据能够作为 XML 数据岛嵌入来在 Office 文档中分隔数据和视图。这提供了一种开发人员在编程时可依靠的,易于理解且易于解决的结构。开发人员能够分隔视图和数据,因而能够直接更新数据,而无需考虑视图代码的编写。类型化数据集用来于提供面向架构的编程模型,该编程模型用于与数据岛进行交互以确保编写对托管代码的智能感知支持。将在数据岛和视图之间使用数据绑定,以使这两个实体保持同步。开发人员还能向数据添加独立于文档视图组件的验证代码。
借助于基于 XML 架构的模型直接对数据进行编程,开发人员可以显著提高工作效率。处理数据的代码无需考虑 Excel 和 Word 对象模型。这简化了在生成 Office 解决方案的过程中涉及的大量代码,并且使解决方案保持对文档中更改的弹性。产生代码的易损坏性降低了,因为它不需要过度依赖于对最终用户可以任意移动的特定单元格、范围和表的引用。相反,托管代码直接访问 XML 数据岛。
在 Office 文档中,使数据成为透明的、可直接访问的组件能够带来新的服务器端机遇。首先,无需启动 Office 应用程序即可操作该文档中嵌入的数据岛。与当前模型(为使代码能够操作文档、Excel 或 Word 的内容必须按照该模型运行)相比,这是一项巨大的转变。这一限制使很多客户无法实现从 ASP.NET 应用程序内创建 Office 文档的常见解决方案要求。
相比之下,VSTO 2005 运行库将支持服务器上的实例化,而无需运行 Excel 或 Word。这样,就可以从服务器端代码操作文档中的数据岛。当打开关联的 Office 文档时,视图与数据岛重新同步,并且将自动向用户呈现经过更新的数据。在该模型中,不需要使用 Excel 和 Word 对服务器上的数据进行写操作,而只需使用它们查看客户端上的数据。这一经过更新的模型将为客户提供所需的可伸缩性,以及对包含服务器上数据岛的文档执行高性能批处理的能力。
将数据存储到数据岛中还能够提供一种机制,以实现可靠的脱机方案。当从服务器首次请求文档或用户首次打开文档时,将用最新的数据填充数据岛。然后,在文档中缓存该数据岛并使其可以脱机使用。用户和代码无需活动连接即可操作这些数据。当用户重新连接时,可将对数据进行的更改回传到服务器数据源。
除根本改进数据编程模型以外,VSTO 2005 版还引入对开发人员以编程方式访问用户界面或视图、元素(例如,范围、列表和书签)方式的增强。即使开发人员目前可以编写代码来操作上述元素,他们仍然会受到 Office 对象模型公开事件、属性和方法的程度的影响。例如,Excel 对象模型提供 WorkSheet_Change 事件,但没有为单个单元格或范围提供类似的事件,因此需要编写附加代码来处理对特定元素进行的更改。VSTO 2005 在视图元素领域引入了对 Excel 和 Word 对象模型的增强。元素(例如,单元格、范围、列表和书签)将成为可在代码中轻松访问的一流控件。每个控件都将唯一标识,都将启用数据绑定,并且都将提供更为完整的事件模型。
VSTO 2005 还将 Excel 和 Word 与 Visual Studio 进行集成,从而在生成 Office 解决方案时,削弱目前存在的障碍。目前,开发人员在 Visual Studio .NET 中编写托管代码。然后,他们必须切换到 Excel 或 Word 来创建用户界面。在 VSTO 2005 中,Excel 和 Word 将直接作为设计器驻留在 Visual Studio 2005 IDE 中(图 17)。开发人员能够使用 Excel 和 Word 中的完整 Windows 窗体控件集合,仅通过从工具箱中拖放托管控件(包括第三方控件)在 Visual Studio 环境中设计 Office 文档。按照预期,双击 Excel 或 Word 中的托管控件将调用代码视图,从而可在该控件的自动生成事件处理程序中编写自定义。
驻留在 Word 和 Excel 文档中的托管控件与 Visual Studio IDE 中的 Excel 和 Word 集成相结合,将减少目前在 Office 解决方案开发以及基于 Windows 和 Web 的解决方案开发之间存在的差异。
SQL Server 2005 解决方案开发
Microsoft 计划将其开发人员工具的未来版本与重要的平台里程碑进行协调,作为该计划的一部分,Visual Studio 2005 将为 SQL Server 2005 提供深度的集成和支持。SQL Server 2005 将 CLR 功能合并到其数据库引擎,以便带来数据库和工具之间新的集成级别,从而减少在开发数据中心应用程序时的代码和工作量。
首先,SQL Server 2005 将引入在托管代码中创建数据库对象的功能。这使开发人员能够使用 Visual Basic、Visual C++ 和 Visual C# 等语言生成 SQL Server 过程化对象,包括函数、存储过程和触发器。此外,开发人员能够使用托管代码来生成 SQL Server 2005 中引入的新 SQL Server 对象,包括用户定义的类型和聚合。因此,使用 Visual Studio 2005 的开发团队不仅可创建和调试分布式应用程序的表示形式和中间层,而且可以创建和调试组成数据层的数据库对象。此外,.NET 语言将在很多方面比传统的 Transact-SQL 更为丰富,并且通过 SQL 开发人员以前不可用的构造和功能提供了增强的编程模型。
其次,用托管代码编写的数据库对象将提供增强的安全性。因为这些数据库对象将在数据库引擎中承载的 CLR 环境中运行,所以它们将在细粒度的 CLR 安全模型的上下文中进行操作。本质上,该模型比较低版本 SQL Server 中提供的扩展存储过程更为安全。它还赋予管理员更大的控制权,以便在试图访问或操作 SQL Server 2005 内部或外部资源时,为代码定义一组允许的操作。
最后,使用托管语言生成 SQL Server 2005 数据库对象通常会在性能和可伸缩性方面产生可观的收益。由于 Visual Studio 2005 语言编译器和执行模型中内置的优化,用托管代码编写的数据库对象(例如,存储过程、函数和触发器)将在很多情况下能提供比 T-SQL 更好的性能。