65.9K
CodeProject 正在变化。 阅读更多。
Home

摘自 Microsoft Visual Studio 2010 Unleashed

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.92/5 (10投票s)

2010年9月22日

CPOL

63分钟阅读

viewsIcon

74035

本章涵盖了 Visual Studio 2010 的核心构成和功能。

visual-studio-unleashed.jpg

Mike Snell, Lars Powers
由Sams出版
ISBN-10:0-672-33081-4
ISBN-13:978-0-672-33081-0

本章内容

  • Visual Studio 产品线
  • 语言、框架和应用程序模板
  • 开发丰富的(更丰富)客户端
  • 创建 Web 客户端
  • 做出客户端选择
  • 云端编码
  • 处理数据
  • 编写连接的、面向服务的解决方案

Visual Studio 2010 和 .NET Framework 4.0 为已经功能齐全的工具集带来了许多新功能。最新版本旨在提高开发人员的生产力,同时为开发人员在构建解决方案时提供选择和灵活性。如果您长期从事开发工作,您应该知道 IDE 的新版本会带来先进的编程模型、更多的缩写词、一些新的项目类型以及改进的代码查看和组织方式。2010 版本也不例外。此版本的一些亮点包括:

  • 基于 WPF 的改进代码编辑器
  • Windows 7 开发支持
  • 改进了对 Microsoft Office 编程的支持,包括 SharePoint 开发
  • 多显示器体验更佳
  • 支持针对多核设备的简化并行编程
  • 支持 ASP.NET MVC
  • 支持使用最新版本的 Silverlight 构建 Web 应用程序
  • 一键式 Web 部署
  • 使用 Windows Azure 构建云应用
  • Windows Workflow 和 Windows Communication Foundation 的主要新增和改进
  • 增加了对 SQL Server 以及 Oracle 和 DB2 等其他数据库技术的数据库开发支持
  • 通过新的体系结构浏览器、UML 支持和 Premium 和 Ultimate 版本中内置的自动化测试改进,扩展了团队开发

本章涵盖了 Visual Studio 2010 的核心构成和功能。我们首先帮助您梳理 .NET 开发人员可用的产品选项。然后,我们比较了 .NET 编程语言。本章的其余部分涵盖了 .NET 程序员的众多可能性,包括构建 Web、Windows、云、数据和服务应用程序。我们希望在本章中为您提供足够的信息,以便您全面了解使用 Visual Studio 构建解决方案时可用的内容。

注意 - 第一部分“Visual Studio 2010 入门”分为三章。本章提供了 Visual Studio 所有内容的快照。第 2 章“Visual Studio IDE”介绍了如何安装、运行工具以及创建第一个项目。它还用于让您熟悉 IDE 的基本知识。第 3 章“.NET 语言”是 VB 和 C# 中编码构造的快速入门。它还涵盖了针对 .NET Framework 的通用编程。

Visual Studio 产品线

通过 Visual Studio 2010,Microsoft 简化了产品线。现在只有三种主要的工具版本:Professional、Premium 和 Ultimate。这应该更容易理解您需要哪种工具来满足您的开发需求和价格点。总体而言,这些工具的区分方式如下(每个版本都假定有 MSDN 订阅):

  • Professional - 包含 IDE 的基本功能,用于使用所有 .NET 语言构建各种类型的应用程序。包括编写、调试和测试代码的支持。
  • Premium - 在 Professional 版本的基础上,增加了许多面向企业开发人员的用于测试和验证代码的功能。还包括数据库开发工具。
  • Ultimate - 包含 Visual Studio 产品线及其周边产品的所有工具。它在 Premium 的基础上增加了额外的调试和测试支持、体系结构工具、实验室管理等。

注意 - 您可以在 http://www.microsoft.com/visualstudio/en-us/products 处查看详细的产品比较。

当然,Visual Studio 周围还存在一些外围版本和产品。这些包括 Express 版本、Test Professional 和 Microsoft Expression。我们将在接下来的部分中深入研究所有这些产品。

Express 版本

Microsoft 提供按语言(VB、C#、C++、Web、Windows Phone 和 SQL Server 2008 R2)划分的 Visual Studio Express 版本。这些版本是免费的、可下载的、入门门槛低的,直接面向新手、爱好者、学生或任何想要编写代码而不必花费太多钱的人。结合 Express 版本,Microsoft 提供了一些开发工具包,用于 Facebook 和 Windows Live 等。还有教程、视频、支持网站和有趣的演示项目。要开始,请访问 URL http://www.microsoft.com/express/Resources/ 。

Express 版本可以被视为 Microsoft 对当今开发人员可用的所有“免费软件”工具的回应。毕竟,如果您是一名大学生,想为朋友的网站做个网站,您更有可能寻找一种低成本的解决方案。当然,五年后,当您为公司做决策时,Microsoft 希望确保您有机会使用其产品。Expression 版本非常适合此细分市场。图 1.1 展示了 Visual Web Developer 2010 Express 安装中包含的 Web Platform Installer 的示例。此安装程序使您能够下载和安装用于创建 Web 应用程序的 IDE。此外,如图所示,它还使您能够安装许多可以用于您解决方案的基础 Web 应用程序,包括博客、电子商务、内容管理等的应用程序。

01fig01.jpg

图 1.1

Visual Web Developer 2010 Express 的 Web Platform Installer 使您能够安装许多应用程序模板以快速启动您的项目。

Express 版本故意不具备其专业祖辈的所有功能(类设计器、带有单元测试的测试驱动开发、企业模板、XSLT 支持、源代码管理等)。但是,它们确实拥有完整的语言支持(例如 LINQ)并可以访问 .NET Framework 项目,例如 WPF。

Express 版本还具有更简化的用户体验,不会暴露专业版本的全部复杂性(或功能)。但是,开发人员可以使用这些工具创建客户端/服务器基于窗体的应用程序、网站、数据驱动的解决方案,甚至 Web 服务。

注意 - 有关 Visual Studio Express 版本的更多信息或下载其中一个版本,您可以访问 Microsoft 网站: http://www.microsoft.com/express 。

Professional 版本

Visual Studio Professional 是大多数以编写代码为生的开发人员的基础入门产品。Visual Studio Professional 为您提供所有语言支持(包括 VB、C#、F#、C++);构建各种应用程序(包括控制台、Windows、Windows 服务、类库、Web、云、WPF、Silverlight、数据库、Office、SharePoint 等)的能力。

Visual Studio Professional 还使您能够访问许多对构建专业应用程序至关重要的附加工具。以下功能仅随 Visual Studio Professional(及更高版本)提供:

  • 单元测试和测试驱动开发
  • 访问 Team Foundation Server (TFS) 以进行源代码管理、持续集成和工作项跟踪
  • Office 开发,包括 SharePoint
  • 多核并行开发
  • 类设计器
  • 服务器资源管理器
  • 重构
  • 以及更多

注意 - 本书仅以 Visual Studio Professional 为目标。快速浏览本书将使您能够了解使用这个强大工具可以做什么的深度和广度。

Premium

Visual Studio 2010 Premium 面向构建企业和商业应用程序的专业开发人员。它提供了额外的工具,帮助开发人员验证、测试和检查代码是否存在常见问题。它还包括 Professional 中的所有功能以及以下内容:

  • 静态代码分析
  • 代码度量
  • 代码性能分析
  • 单元测试代码覆盖率和测试影响分析
  • 性能分析
  • Coded UI 测试
  • 数据库更改管理、单元测试、数据生成、架构和数据比较

注意 - Visual Studio 2010 Premium 结合了先前版本(2008)中的 Developer 和 Database 角色产品的功能。

Ultimate

Visual Studio 2010 Ultimate 适合那些真正需要一切的开发人员。它包括面向技术和手动测试人员的额外测试工具。它还提供了用于创建 UML 模型和可视化探索代码的体系结构工具。此版本的产品是“一应俱全”的选项。以下重点介绍了 Ultimate 功能:

  • IntelliTrace 历史调试
  • UML 建模支持用例、类、序列、组件和活动图(包括从代码生成序列图)
  • Architecture Explorer,用于快速了解代码库
  • 层图
  • Web、负载和压力测试
  • Test Professional,包括测试用例管理、手动测试以及测试记录和回放
  • 测试实验室管理

注意 - Visual Studio 2010 Ultimate 与先前版本 2008 Team Suite 类似。但是,它增加了更多围绕体系结构和测试的功能。

MSDN

所有 Visual Studio 版本(Express 版本除外)现在都包含某种形式的 MSDN 订阅。根据您的版本,您在产品线上每往上一个版本,就能获得更多的 MSDN。以下概述了按产品划分的 MSDN 福利:

  • 2010 Professional - 包括 TFS 许可证、TFS 客户端访问许可证;每月 50 小时的 Azure 托管;Windows 7、Windows Server 2008 R2 和 SQL Server 2008 的开发版本;访问以前版本的 Windows 和 SQL;两次技术支持事件;优先论坛;电子学习访问;以及 MSDN 杂志。
  • 2010 Premium - 包括 Professional MSDN 中的所有内容,外加以下内容:每月 100 小时的 Azure 托管;Expression Studio;Office 2010 Plus、Visio 和 Project;Office、Dynamics、SharePoint、Windows Embedded 以及其他 Microsoft 平台和服务器产品的开发版本;以及四次技术支持事件。
  • 2010 Ultimate - 包括 Premium 中的所有内容,外加以下附加项:每月 250 小时的 Azure 托管以及对 Team Explorer Everywhere 的访问。

注意 - Microsoft 还销售带有 MSDN Essentials 的 2010 Professional 版本。这是一个有限的 MSDN 版本,不包括 TFS 访问、SQL Server、Office、技术支持和 MSDN 杂志等内容。

相关工具

Visual Studio 之外的许多其他工具围绕着 Windows 开发体验。这包括面向开发团队(Team Foundation Server 和 Team Explorer)的工具,面向设计者(Microsoft Expression)的工具,以及面向测试者(Test Professional)的工具。了解这些工具如何帮助您构建下一个解决方案非常重要。本节将对这些产品进行简要概述。

Team Foundation Server (TFS)

TFS 是一个中心枢纽,围绕 Microsoft 的众多开发工具提供集成的应用程序生命周期管理 (ALM) 体验。TFS 的第一个版本随 2005 版本一起发布。它包括源代码管理、集中的项目管理系统、构建自动化和报告。据称,这些工具取得了巨大成功。Microsoft 在 TFS 2010 版本中对其进行了扩展。图 1.2 展示了 TFS 与周围许多 ALM 实践产品的关系。

01fig02.jpg

图 1.2

Team Foundation Server 作为提供 ALM 服务的中心枢纽,服务于 Microsoft 提供的众多开发产品。

从图中可以看出,TFS 位于开发和 ALM 协调的中心。以下重点介绍了 TFS 提供的许多服务:

  • 流程指导/模板 - TFS 开箱即用地提供了两个流程模板:Microsoft Solutions Framework (MSF) for CMMI 5.0 和 MSF for Agile 5.0。两者都提供了一组基于其特定方法论的工作项、工作流和报告。两者还为团队执行项目关键活动(如需求管理或构建自动化)提供了指导。CMMI 模板面向那些对审计和可追溯性有强烈需求的团队,并可能寻求获得 CMMI 级别评估。MSF for Agile 模板为实施 SCRUM 开发方法的团队提供了工具。
  • 项目管理 - TFS 使项目经理能够根据迭代和功能区域来定义他们的项目。它提供工作项,用于定义、分配和跟踪项目上的工作。工作项可以是项目上的任务、需求、错误、测试场景等。总的来说,工作项代表项目上的通用工作单元。当然,工作项是可自定义的,可以关联状态、新字段和业务规则。工作项在确保项目团队沟通和报告方面起着核心作用。项目经理可以使用 Excel 和 Project 的 Office 加载项来管理项目上的工作项。
  • 需求管理 - TFS 提供特定的工作项来管理需求。事实上,2010 版引入了分层工作项的概念。这意味着您可以创建工作项的子项。例如,您可以创建一个需求工作项,然后定义构建该需求所需的任务。您还可以定义将用于验证需求的测试用例。通过这种方式,TFS 通过聚合子工作项数据(例如,需求的通过测试或需求级别的剩余工作)来实现丰富的报告。
  • 测试用例管理 - TFS 和 Test Professional 支持用于测试计划和测试用例管理的工作项。您可以为给定的需求定义一组测试用例。每个测试用例都可以定义执行测试用例所需的步骤以及预期结果。
  • 版本控制 - Team Foundation Server 中的源代码管理功能包括诸如更改集、搁置、自动生成规则、将工作项关联到已更改源代码的功能、并行开发、源代码管理策略引擎、分支、检查点等企业级功能。2010 版包括分支和更改集可视化。
  • 生成自动化 - TFS 生成工具允许自动、按计划和按需生成。生成会报告、记录、自动测试,并针对代码覆盖率和代码变更(为例)进行分析。2010 版的生成引擎已重写,以利用 Windows Workflow (WF) 4.0。
  • 报告 - TFS 提供一套丰富的报告,用于跟踪统计信息和项目的整体健康状况。报告包括基于 SQL Reporting Services 的报告(可从 IDE、Web 和 SharePoint 访问),以及一套新的 Excel 报告,用于直接处理数据。
  • 协作和仪表板 - TFS 为每个项目包含一个 SharePoint 网站。该网站提供对 Visual Studio 和 Office 之外的管理和创建工作项的完全访问。此外,它提供了一套仪表板报告,用于快速分析项目上的情况以及登录用户特有的项目。当然,SharePoint 网站还通过文档和团队 wiki 提供丰富的协作。
  • Web 访问 - TFS 提供 Web 访问版本,用于在 Web 上(SharePoint 之外)处理工作项。此版本还允许通过 Web 浏览器访问源代码管理。但是,Web 访问版本不包含 SharePoint TFS 网站更丰富的仪表板功能。
  • 与其他 IDE 的集成 - TFS 可从 Visual Studio、Office、SharePoint 和 Web 访问。此外,还有 Team Explorer Everywhere,用于使用运行在 Windows 以外操作系统上的其他 IDE 访问 TFS 功能。这包括 eclipse IDE 和 MacOS。

Team Explorer

有些团队成员可能没有 Visual Studio、Test Professional 或 Expression 等开发工具来访问 TFS。在这种情况下,他们可以通过 Team Explorer 获得完全访问权限。Team Explorer 面向项目经理、业务分析师、总监以及团队中其他需要访问 TFS 但不直接进行开发的人员。此工具作为客户端访问许可证 (CAL) 购买。它包括一个基本浏览器、Excel 和 Project 加载项,以及对 SharePoint 网站、Web 访问和报告的完全访问。

Test Professional

Visual Studio Test Professional 2010 为专门从事测试角色的人员提供测试计划、测试用例管理和手动测试。这是一款应让测试人员感到舒适和熟悉的独立工具。测试计划是根据应用程序需求创建的(以提供可追溯性)。测试用例被创建并作为工作项进行跟踪。

当测试人员运行测试计划时,他们会执行每个测试用例和测试用例中的每个步骤。他们指示给定测试的成功或失败。对于失败,他们可以记录错误(也是工作项)。错误可以自动包含诊断跟踪信息、事件日志数据、网络信息,甚至测试人员在发现错误时执行的步骤的视频录制。

Test Professional 还允许测试人员创建其步骤的操作记录。可以回放这些录制,以再次执行相同的步骤。这有助于自动化许多手动测试的部分。

最后,Test Professional 包括实验室管理,这是一套用于从模板配置测试环境的工具。这些环境是虚拟机,旨在根据需要进行设置和拆卸以进行测试。您还可以为各种生成创建检查点环境。

Visual Studio Agents 2010 和 Load Test Virtual User Packs

Visual Studio Ultimate 用于创建 Web、负载和压力测试;但是,在执行这些测试时,它仅限于模拟多达 250 个并发用户。有时您需要为测试生成更大的负载。在这种情况下,您需要购买 Visual Studio Load Test Virtual User Pack 2010。

此工具是一款独立产品,可与 Visual Studio Agents 2010(包含在 Ultimate 中)配合使用,为各种负载测试场景生成巨大的负载。您可以使用 VS Agents 软件设置一个中央测试控制器。然后,您可以将代理放在不同的机器上。根据您想在每台计算机上模拟的用户数,将虚拟用户包添加到每个代理。您购买的每个用户包使您能够模拟另外 1,000 个用户。然后,控制器启动代理。代理将其数据报告回控制器,在控制器中对数据进行集中和汇总以进行报告。

Expression Tools

Visual Studio 的姐妹产品线是 Microsoft Expression 工具。这些工具面向在 Microsoft 平台上构建应用程序的设计人员。Microsoft Expression 工具提供了丰富的开发体验,用于构建 Web、Windows 和 Silverlight 应用程序。

Expression 工具还旨在实现设计人员和开发人员之间的工作流;也就是说,设计人员可以打开解决方案并处理设计,而不会影响开发人员可能正在处理的代码(反之亦然)。在最新版本中,这些工具还可以集成到 TFS 中进行源代码管理和工作项跟踪。

了解这些工具很重要,这样您就知道可以在哪里使用它们,同时也因为它们提供了一些类似功能(但方式不同)并与 Visual Studio 项目和项目文件协同工作。以下是对这些工具的简要概述:

  • Expression Web - 用于创建符合 CSS 标准的 ASP.NET Web Forms 和网站的设计工具。
  • Expression Blend - 基于 XAML 和 Silverlight 设计用户界面的工具。
  • Expression Design - 使设计人员能够创建包括绘图、文本等内容的矢量图的工具。
  • SketchFlow - 在推进解决方案之前创建快速原型的工具。
  • Expression Encoder - 用于编码视频和音频并将其发布到 Silverlight 应用程序的工具。
  • Expression Media - 用于将设计资产(文件)组织和管理到可视化目录中的工具。
  • Expression Studio - 适用于需要所有 Expression 工具的设计人员的全套工具。

注意 - 有关 Expression 产品(本书不再进一步介绍)的更多信息,请参阅 http://www.microsoft.com/expression/default.aspx 。

语言、框架和应用程序模板

在 Visual Studio 和 .NET Framework 中进行编程意味着您有多种语言可供选择。.NET 被构建为某种程度上的语言无关。通用类型系统 (CTS)、通用语言规范 (CLS)、通用语言运行时 (CLR) 以及 Framework 一起工作,将语言从 .NET 中抽象出来,并为开发人员提供选择。一旦部署和编译,用 .NET 编写的应用程序在运行时执行方面非常相似。

编程语言选择

对开发人员来说,重要的是选择一种能够提高生产力并能在 IDE 中获得高度支持的语言。生产力是指使用您熟悉且符合逻辑的语法进行开发。IDE 支持意味着工具可以生成代码、帮助您编写代码,并提供加速编码的功能和工件。这就是许多第三方(非 Microsoft 支持)语言常常不足的地方。需要付出很多努力才能提供 IDE 支持来构建 Visual Studio 启用的众多应用程序类型。

以下概述了 Microsoft 支持的 Visual Studio .NET 开发语言:

  • Visual Basic - Visual Studio 中的 VB 实现旨在提高生产力。开发人员可以快速构建类型安全、面向对象的应用程序。虽然 VB 开发人员可以完全访问 .NET 中的所有代码构造,但他们倾向于使用 VB,因为 IDE 内部有生产力功能,并且他们已经熟悉了 VB(或基于 Basic 的类似语言)的过往经验。
  • Visual C# - Visual C# 是一种编程语言,专为熟悉和习惯 C 风格语言(如 C、C++ 和 Java)的程序员而设计。C# 是类型安全的、面向对象的,并针对快速应用程序开发。C# 开发人员倾向于将更多时间花在 Visual Studio 代码编辑器中,而将更少的时间花在设计器上。
  • Visual C++ - 使用 C++,开发人员可以构建 .NET 受管应用程序。但是,他们也可以创建不依赖于 .NET 的 Windows 应用程序。大多数 C++ 开发人员都有 C++ 背景,因此比其他语言更熟悉 C++ 环境。C++ 开发人员还可以访问 Active Template Library (ATL)、Microsoft Foundation Class (MFC) 库和 C Runtime Library (CRT) 来进行构建。
  • Visual F# - F# 语言被认为是多范式的,因为它允许函数式、面向对象和命令式编程。F# 现在是 Visual Studio 2010 的核心语言。它为 .NET 开发人员带来了许多复杂编程问题的解决方案。F# 有许多特性,包括轻量级函数类型、将函数作为值、函数组合和管道、递归函数和 lambda 表达式等。F# 可以简化数学、科学、工程和符号分析(如机器学习)问题的编程。
  • JScript 8.0 - .NET 的脚本语言。该语言是 Microsoft 对 ECMA 标准的合规实现。您可以使用此语言编写各种应用程序,包括 Windows 和 Web 应用程序。在 Web 上,您可以针对服务器端和客户端处理。JScript 8.0 为 JScript 添加了编译和完整的面向对象支持(类型化变量、早期和晚期绑定、继承、重载等)。它现在还允许访问 .NET Framework。

注意 - .NET 语言编程的基础知识在第 3 章中介绍。

注意 - 如果您熟悉一种语言但需要用另一种语言编程(或翻译),请在 MSDN ( http://msdn.microsoft.com/ ) 上搜索“Keywords Compared in Various Languages”。

.NET Framework(s)

.NET Framework 代表了基类、库和有用的函数,这些使得 .NET 编程如此高效。 .NET Framework 中的类和函数提供了作为开发人员所需的绝大多数通用功能。得益于 CTS,每种语言都可以利用此单一的框架功能。框架功能包括文件 I/O、Web、工作流、集合、Windows、通信等等。

当然,随着 .NET 语言的不断发展,Framework 也在不断发展。但是,为了保持向后兼容性,Framework 的每个版本都保持为独立的实体。现在至少有六个版本的 .NET Framework:4.0、3.5、3.0、2.0、1.1、1.0。还有各种版本的 .NET Compact Framework(用于移动设备)。甚至还有一个 Micro Framework,用于非常小、资源受限的设备 ( http://www.microsoft.com/netmf )。

.NET Framework 的 3.0/3.5 版本带来了 WPF、WCF 和 WF 支持,以及对 Windows Vista 的修改。最新版本 (4.0) 随 Visual Studio 2010 发布,并带来了对动态语言(动态语言运行时或 DLR)的支持,如 Ruby、运行应用程序的性能分析、新类型如 Tuple 和 BigInteger、经过修订的 Windows Workflow (WF) 引擎、隔离存储改进以及更多。第 3 章将更详细地讨论其中许多框架元素。

注意 - 有关如何在 Visual Studio 2010 中定位特定 .NET Framework 版本的详细信息,请参阅第 2 章。

.NET 应用程序的多种面貌

.NET 已成为构建针对 Microsoft Windows 客户端或服务器产品的标准。虽然只用了几年时间,但现在可以肯定地说 .NET 无处不在;Windows 编程和 .NET 编程现已同义。我们交互的许多用户应用程序都具有部分甚至全部 .NET 代码库。这包括基于 Windows 构建的丰富客户端、跨 Web 工作解决方案、在浏览器中运行并在 Windows 服务器上执行的 Web 应用程序,以及在手机等设备上运行的移动应用程序。好消息是 .NET 开发人员的需求量很大,您可以利用您的技能来吸引广泛的用户群体,并跨越各种用户体验。

图 1.3 展示了 Visual Studio 2010 中的“新建项目”对话框;它举例说明了 .NET 可以实现的海量用户解决方案。此图形无法包含所有可用可能性,但它确实说明了 Windows、Web、Silverlight、Office、SharePoint 以及其他许多项目类型都在 .NET 开发人员使用 Visual Studio 的范围内。

01fig03.jpg

图 1.3

Visual Studio 2010 实现的多种应用程序面貌。

如前所述,您可以为下一个解决方案使用许多项目模板。然而,所需要的可能是某种用户体验的路线图。选择正确的项目模板是成功交付解决方案的重要组成部分。以下列表旨在概述 .NET 开发人员可用的核心演示技术:

  • Windows Forms 应用程序 (WinForm) - Windows 窗体应用程序用于交付基于 Windows 平台的业务应用程序和工具。当您需要构建利用用户计算机资源的解决方案时,通常会选择 WinForm 应用程序模板。这意味着应用程序已安装,用户期望它的响应速度比典型的 Web 应用程序更快。WinForm 应用程序可以是独立的,也可以是数据驱动的(通常是客户端/服务器)。WinForm 应用程序可以连接到 Web 服务,并在连接和离线场景中工作。请注意,WinForm 应用程序在当前版本的 Visual Studio 中已被弱化。如果您正在构建新应用程序,应考虑 WPF 而非 WinForm。
  • WPF 应用程序 - Windows Presentation Foundation (WPF) 结合了 WinForms 的功能以及 XAML 和 3D 功能,让您可以创建最丰富、功能最齐全的 Windows 客户端解决方案。WPF 应用程序的交付方式与 WinForm 应用程序类似。当您需要通过利用基于矢量的缩放和 3D 来为您的 Windows 应用程序提供独特的视觉体验时,可以选择 WPF。此外,WPF 解决方案可以在 Windows 计算机上以安全沙箱的形式进行浏览器托管。
  • ASP.NET Web 应用程序 (WebForm) - ASP.NET 应用程序允许您构建在用户浏览器中运行但在 Web 服务器上进行应用程序处理的解决方案。这些解决方案在客户端使用 HTML、CSS 和 AJAX,但通过 HTTP 与服务器通信,用于代码的集中处理以及数据存储和检索。如果您需要以极低的(或零)安装成本触达广泛的客户端,并且希望集中更新应用程序(只需更新服务器),请选择 ASP.NET。
  • Silverlight 应用程序 - Silverlight 应用程序与 WPF 类似;您可以开发高度交互的用户体验,结合视频、动画、3D 和矢量缩放。但是,Silverlight 应用程序通过 Web 进行分发,并使用浏览器插件运行。因此,与 WPF 不同,它们不限于仅限于 Windows 计算机。它们也可以在 Mac 上运行。
  • Office - Visual Studio 使您能够构建基于 Office 生产力工具的解决方案,包括 Excel、Word、Project、Visio、PowerPoint、Outlook 和 InfoPath。这包括对 Office 2010 和 2007 版本的支持。当您想编写一个以其中一个工具的产品为中心(例如 Excel 模板或电子表格)的业务生产力应用程序时,选择 Office 项目。
  • SharePoint - SharePoint 应用程序用于通过协作门户提供功能。您可以编写 Web 部件来提供信息,处理文档类型,或允许用户输入数据。您还可以定义以文档为中心的业务流程工作流。请注意,2010 版为构建 SharePoint 应用程序的开发人员提供了扩展功能(包括 F5 调试支持)。
  • NetCF - .NET Compact Framework 3.5 在小型设备(手机和 PDA)上运行,使您能够构建针对移动设备和移动用户的应用程序。.NET CF 和移动 SDK 可作为 Visual Studio 的独立下载。
  • XNA - XNA Game Studio 4.0 允许您为 Windows、Xbox 和 Zune 构建游戏。这也不是 Visual Studio 的独立下载。

Visual Studio 2010 支持所有这些 UI 交付技术。有了它们,您就可以有多种选项来创建 .NET 上的出色用户体验。接下来的部分将重点介绍许多用于构建 Windows 和 Web 解决方案的技术。

注意 - Visual Studio 2010 中有许多客户端选项。其中许多在此处进行了重点介绍。但是,它们在本书的后续章节中也有更详细的介绍。第 17 章“创建 ASP.NET 应用程序”涵盖了 ASP.NET;第 18 章“构建 Windows Forms 应用程序”是关于标准 Windows 窗体;第 19 章“创建更丰富、更智能的用户界面”专门讨论 WPF;第 20 章“创建丰富的浏览器应用程序”讨论了 AJAX 和 Silverlight 应用程序;第 24 章“开发 Office 业务应用程序”涵盖了创建基于 Microsoft Office 的解决方案。

开发丰富的(更丰富)客户端

当今的用户在处理软件时,要求丰富、交互式的体验。由于许多 UI 的进步、技术和工具,Web 客户端和 Windows 客户端能做什么之间的界限已经变得模糊,这使得为您的下一个应用程序选择正确的 UI 交付变得困难。这也意味着,如果您决定编写一个基于 Windows 的客户端,您需要确保充分利用桌面资源。您的应用程序应表现良好、外观精美、提供高度的交互性,并能够随时处理更大的数据集,等等。在这里,我们将重点介绍 Visual Studio 2010 的基于 Windows 的客户端选项以及使用 WinForms、Windows Presentation Foundation (WPF) 和 Microsoft Office 创建智能、丰富的应用程序。

Windows (WinForms)

Visual Studio 提供了一套成熟、功能丰富的工具,用于快速开发 Windows 应用程序,其中包括拖放式窗体设计器和窗体工具箱中的许多控件。使用这些工具,开发人员可以快速布局 Windows 应用程序,其中包括菜单、工具栏、数据访问、选项卡、可调整大小的支持、用于处理和打印文件的通用控件等等。

您可以通过在“新建项目”对话框中选择“Windows 窗体应用程序”项目模板来创建 Windows 应用程序。这种类型的应用程序也称为 WinForm 应用程序,因为它基于 Visual Studio 和 .NET Framework 中的 WinForm 技术。

WinForm 应用程序的第一步是确定窗体的布局。您可以选择创建一个文档中心应用程序(如 Word 或 Excel)、一个单一的实用程序应用程序(如计算器或磁盘碎片整理程序)或其他类型的应用程序。无论您的选择是什么,布局通常通过控件停靠到窗体(通过“属性”对话框)和使用 Panel 控件来控制。

例如,图 1.4 展示了一个停靠在 WinForm 顶部(上方)的 MenuStrip 控件和一个停靠在窗体底部(下方)的 StatusStrip 控件。菜单允许用户设置要查看图片的文件夹。应用程序处理时,状态指示器提供更新。

01fig04.jpg

图 1.4

在 Visual Studio 2010 中构建 WinForm 应用程序。

停靠在窗体中央的是一个 SplitContainer 控件,它允许两个面板通过分隔条相对调整大小。这些控件共同定义了窗体主要交互部分的布局。在这种情况下,用户可以通过选择窗体左侧的缩略图来打开图片文件夹并单独查看它们。然后,窗体将在右侧显示选定的较大图像。这些功能通过 ImageList、ListView 和 PictureBox 控件来实现。每个控件都会添加到窗体的相应区域,然后通过“属性”窗口进行配置。

您可以看到,WinForm 应用程序的初始布局和定义是一个快速的过程。首先需要确定窗体布局。从那时起,工具将使一切变得容易。

与所有 .NET 编程一样,您首先创建用户界面的视觉设计和布局,然后编写代码以响应事件。WinForm 应用程序有一个标准模型,包括 Load、Closing 和 Closed 等事件。您还可以响应窗体上控件触发的事件。有关构建 WinForm 应用程序的更详细信息,请参阅第 18 章。

Windows Presentation Foundation (WPF)

WPF 是一组类、工具和控件,开发人员可以使用它们为 Windows 创建更丰富、更动态的客户端解决方案。这包括开发结合了传统数据视图和输入与视频、3D 图形、着色和矢量缩放的用户体验。其结果是真正独特、视觉吸引力强、丰富的应用程序。

WPF 使用标记代码定义 UI。这应该对 Web 开发人员来说非常熟悉。标记是使用 Visual Studio WPF 设计器(或 Microsoft 的类似工具 Expression Blend)生成的。然后,XAML 由 .NET CLR 进行处理。CLR 在浏览器外部的客户端上处理此 XAML。因此,它不受 HTML 和浏览器限制的约束。相反,它可以创建基于矢量的、硬件加速的用户体验。

Visual Studio 为创建 WPF 解决方案提供了熟悉的体验。您首先定义一个 WPF 项目,然后向该项目添加 WPF 窗体。创建解决方案时,您可以根据应用程序是作为浏览器插件运行还是作为已安装的桌面客户端运行来选择项目类型。图 1.5 展示了 WPF 项目模板。选择 WPF Application 将创建一个基本的 WPF 应用程序,该应用程序将被推送到或安装到客户端。它可能可以访问客户端上的本地资源。

01fig05.jpg

图 1.5

使用 Visual Studio 2010 创建新的 WPF 项目。

另一方面,WPF 浏览器应用程序旨在通过 URL 进行部署并作为浏览器扩展运行。该应用程序称为 XBAP(XAML 浏览器应用程序),在沙箱中运行。它没有客户端计算机的权限,并且作为浏览器缓存的一部分被清理。前提是用户在其计算机上拥有正确版本的 .NET Framework,该应用程序不需要下载。它可以处理浏览器 cookie,并得到 IE 和 Firefox 的支持。

在这里做出错误的决定也不是什么大问题。您可以在应用程序类型之间移动 WPF 窗体。请注意,图 1.5 中显示的另外两种应用程序类型是 WPF 用户控件和 WPF 自定义控件库。两者都用于创建 WPF 应用程序的可重用控件。

构建 WPF 窗体的下一步是打开它,然后将 UI 控件拖放到设计图面上。然而,对于习惯于构建 WinForm 应用程序的开发人员来说,一个最大的区别是,您现在可以控制窗体布局代码(或 XAML),这更类似于使用 Visual Studio 设计 Web 窗体。图 1.6 展示了 XAML 设计器正在运行。

01fig06.jpg

图 1.6

设计 WPF 窗体。

请注意,XAML 控件列在左侧的工具箱中。尽管它们与 Windows 和 Web 控件类似,但它们是 WPF 专有的控件集。此外,请注意设计器如何在设计图面和 XAML 之间具有拆分视图。在开发代码时,这些视图会保持同步。最后,右侧显示的属性窗口为 WinForm 开发人员提供了编辑选定控件的许多属性的熟悉体验。我们将在第 19 章中更详细地介绍 WPF 设计器。

基于 Office 的解决方案

开发人员已经能够自定义 Office 很久了;有些人还记得在 Windows 3.1 上编写 Excel 宏或使用 Word Basic 自动化 Word。幸运的是,如今编写 Office 解决方案的工具已内置于 Visual Studio 中。使用它们,您可以创建基于 Office 的项目和解决方案,利用 Word、Excel、Project、Visio、PowerPoint、Outlook 和 InfoPath。图 1.7 展示了 Office 解决方案的“新建项目”对话框。图中显示的模板是 C# 的,但 Visual Basic 也有相同的模板。

01fig07.jpg

图 1.7

Visual Studio 中的各种 Office 项目模板。

可能有几种情况会促使开发人员创建基于 Office 的应用程序。最常见的情况是当您需要扩展企业内部 (LOB) 应用程序,以便在 Office 的通用信息工作者生产力工具中提供功能时。这种类型的解决方案通常将结构化的企业数据与以文档(如发票或采购请求)为中心的业务流程工作流相结合。

例如,假设您从事金融、制造或薪资应用程序的工作。每种应用程序都满足特定的需求。但是,用户可能需要处理应用程序内的数据,并做出关键决策以反馈回这些系统。这项工作通常通过复制粘贴完成,并未被系统捕获。用户在 Office 工具和 LOB 应用程序之间来回切换,导致生产力下降。这正是您应该考虑创建 Office 业务应用程序 (OBA) 来帮助弥合这一差距的时候。

开发文档、模板和外接程序

请注意图 1.7 中的许多模板。例如,Excel 2010(以及 2007)有三个单独的模板。每个模板都有特定用途。Office 应用程序模板允许您创建基于单个文档、文档模板或给定 Office 应用程序的外接程序的解决方案。以下列表简要概述了这三种项目子类型:

  • 文档(Excel 中的工作簿) - 文档项目允许您基于特定文档构建解决方案。通常没有文档的多个实例。例如,假设您有一个 Excel 工作簿,需要从企业资源规划 (ERP) 系统读取和写入项目资源计费信息。该文档可能每周更新一次,作为资源会议的一部分。数据应保持最新,并且更改应反馈到计费系统。在这种情况下,您将基于此单个文档创建一个解决方案。
  • 模板 - Office 模板项目是基于 Office 模板文件(例如,Excel .xltx)的项目。创建基于 Office 模板文件的解决方案,可以方便地在用户创建给定模板的新实例时提供帮助。您可以将通用文档模板推送到用户。当用户创建新实例时,模板可以访问其他系统中存储的数据,以帮助用户填写文档的详细信息。然后,在将模板通过基本 SharePoint 工作流路由后,您可以将结果捕获到数据库中。
  • 外接程序 - 外接程序项目允许您扩展给定 Office 应用程序的功能。您创建外接程序以在给定应用程序中提供额外的生产力解决方案。例如,您可以编写一个 Outlook 外接程序,让用户可以更轻松地归档和分类他们的电子邮件。

无论您选择哪个模板,Visual Studio 2010 都为构建 Office 解决方案提供了丰富的设计时体验。例如,图 1.8 展示了 Visual Studio 2010 的设计体验,用于构建 Word 2010 模板的解决方案。在此示例中,用户正在创建培训报价。文档中的字段从 LOB 数据库中提取,该数据库包括客户信息、资源数据和通用定价。

01fig08.jpg

图 1.8

在 Visual Studio 2010 中设计 Word 2007 模板项目。

Visual Studio 中的 Office 模板还为处理 Office 功能区(Ribbon)提供了设计支持。通过这种方式,您的应用程序可以像其他 Office 功能一样运行。您可以在自己的 Office 功能区选项卡中嵌入生产力功能和辅助工具。图 1.9 展示了一个简单的示例。所示的功能适用于前面讨论的销售报价文档模板。在此示例中,开发人员提供了基于文档模板的特定功能,然后用户可以从 Word 的功能区访问这些功能。

01fig09.jpg

图 1.9

为 Microsoft Office 解决方案创建自定义功能区。

创建 SharePoint 解决方案

虽然 SharePoint 不算是真正的 Windows 客户端,但它与 Office 几乎已成为同义词。因此,我们认为在此部分讨论 Visual Studio 的 SharePoint 特定功能是合适的。公司利用 SharePoint 进行知识管理、协作和业务流程自动化。当然,这不可避免地需要开发人员进行自定义和扩展。如果您在 2010 年之前使用 Visual Studio 的现有工具自定义 SharePoint,您就会知道这带来了巨大的挑战。设计时支持不足,配置困难,调试非常困难。

Visual Studio 2010 为 SharePoint 开发人员提供了更丰富的工具集。使用它,您可以创建 SharePoint 工作流并基于 ASP.NET 构建 Web 部件。此外,调试体验得到了简化。SharePoint 开发现在是 IDE 中的一项首要考虑因素。这应该有助于开发人员更轻松地扩展 SharePoint,以满足该协作产品产生的业务需求。

还有更多进展,包括访问开放 XML 格式、为现有 Outlook 表单添加功能的能力、Word 和 Excel 中的自定义任务窗格、数据绑定,以及改进的部署和安全性。

创建 Web 客户端

如今,绝大多数应用程序都包含某种形式的 Web 组件——无论是完整的基于浏览器的 Web 应用程序、跨 Web 工作且功能丰富的客户端,还是 Web 服务。事实上,传统富客户端和 Web 应用程序之间的界限正在模糊,而 AJAX(异步 JavaScript 和 XML)、jQuery、Web 服务、智能客户端、XAML(可扩展应用程序标记语言)和 Silverlight 等技术有助于模糊这一界限。您现在可以根据您的需求构建丰富的用户体验。当然,Microsoft 在扩展 Visual Studio 的 Web 开发能力方面仍然保持着适当的重点。

Web 开发人员希望获得能够帮助他们完成应用程序构建常见功能的工具。实话实说,仅凭记忆遵循 HTML、CSS 和 XML 标准可能会很痛苦。相反,我们希望获得能够指导我们的工具。当然,一旦我们想处理代码,我们就会希望能够访问所有相关的源并根据需要进行调整。Visual Studio 2010 提供了各种 Web 开发模板供您选择。本节将介绍其中许多可能性。

注意 - 我们将在第 17 章和第 20 章中更详细地介绍以下许多方面。

使用 ASP.NET 构建网站

Visual Studio 2010 为 Web 开发人员提供了丰富的工具和控件。它支持用于构建服务器端 ASP.NET 和生成标准 HTML 的标准控件。控件包括标签、文本框、按钮以及相关的数据输入控件。此外,还有用于验证、处理数据、使用 Web 部件进行个性化以及使用登录控件管理用户流程的控件。

您可以通过创建新网站(文件 -> 新建 -> 网站)或在“新建项目”对话框中选择“ASP.NET Web 应用程序”模板来在 Visual Studio 中创建 ASP.NET 网站。应使用网站模板来创建模拟基本文件中心网站的项目。这通常意味着所有文件(标记和代码)都已部署到网站并作为文件进行管理。图 1.10 展示了一个使用此基本项目模板创建的新站点的示例。对于习惯于处理文件驱动型网站的开发人员来说,此模板应该会让他们感到熟悉。

01fig10.jpg

图 1.10

ASP.NET 网站项目模板。

另一方面,Web 应用程序提供了一个类似于其他 .NET 应用程序的项目模型。您可以生成 .DLL 文件、设置引用、签名程序集、管理生成属性,并以类似于编写其他 .NET 应用程序的方式执行类似任务。图 1.11 展示了一个示例。请注意用于设置 .NET 引用的“引用”文件夹以及 Web.config 文件的多个版本。您的模板选择最终取决于您计划如何构建和管理您的网站。

01fig11.jpg

图 1.11

ASP.NET Web 应用程序项目模板。

同时开发和设计

您通过编辑设计并将代码连接到该设计来开发 ASP.NET 页面。设计被称为标记。这是定义页面上的控件、其布局和外观的 XHTML。Visual Studio 包括一个标记编辑器和一个可视化的所见即所得 (WYSIWYG) 设计器,用于布局您的页面。大多数 Web 窗体开发人员在开发过程中会在源代码(XHTML)和设计(WYSIWYG)视图之间来回切换。源代码视图让您可以完全访问 XHTML 页面的编辑。设计视图让您可以看到页面的开发情况,并可以访问设计器中控件的许多快捷方式。Visual Studio 使在这些视图之间切换变得简单。它提供了一个拆分视图。有了它,您可以同时看到 XHTML 和可视化设计器。图 1.12 展示了一个示例。

01fig12.jpg

图 1.12

Web 窗体设计器拆分视图。

拆分视图会尽量保持源代码和设计同步。当您将项目从工具箱拖到源代码或设计视图窗格时,这会起作用。但是,当您对源代码进行大量编辑时,设计视图可能会不同步。在这些情况下,设计视图会显示它已不同步(请参见图 1.12 的中间部分)。单击设计器,一切都会恢复同步。

集中管理导航和设计

Visual Studio 2005 引入了创建母版页的功能。这些页面集中管理网站的设计和导航元素。此外,母版页得到了设计器的支持,从而提供了更丰富的设计体验。开发人员可以在设计模式下看到页面在其网站中心设计的上下文中。

您可以通过从“添加新项”对话框中选择“母版页”模板来创建母版页。然后,您可以定义网站导航、页眉和页脚信息、样式以及应应用于网站(或网站子区域)中每个页面的任何其他内容。定义导航后,您可以创建提供应包含在母版页中的特定内容的新 Web 窗体。图 1.13 展示了一个使用母版页作为其外部内容来源的 Web 窗体的示例。

01fig13.jpg

图 1.13

创建使用母版页的页面。

使用 ASP.NET 模型-视图-控制器 (MVC) 构建松散耦合的 Web 应用程序

Visual Studio 支持一种替代标准 Web Forms 的应用程序构建方法。这种替代方法基于模型-视图-控制器 (MVC) 设计模式。此模式的目的是分离应用程序的逻辑和数据(模型)、其用户界面显示(视图)以及帮助用户与 UI 和数据交互的代码(控制器)。

使用 MVC 构建的站点通常更易于维护,因为应用程序层之间的依赖性较低。它们还支持测试驱动开发,因为您可以为每个层编写测试。此外,您可以使用 MVC 结构按开发人员分离职责,这样设计人员可以创建视图,而其他开发人员可以处理模型或控制器。MVC 的另一个优点是开发人员可以更精细地控制 Web 页面的处理。

MVC 的 ASP.NET 实现是一组命名空间 (System.Web.Mvc) 和项目模板。您可以通过在“新建项目”对话框中选择“ASP.NET MVC Web Application”项目模板来创建您打算使用 MVC 的站点。请注意,您可以混合使用 MVC 和标准 Web Forms 的站点。此外,ASP.NET MVC 支持大多数 ASP.NET 构造,如母版页、会话、缓存、配置文件和成员资格、配置等。但是,它不支持 ASP.NET 视图状态。图 1.14 展示了 Visual Studio 中 ASP.NET MVC 站点模板的示例。请参阅第 17 章,了解 ASP.NET MVC 2 的详细讨论。

01fig14.jpg

图 1.14

一个 ASP.NET MVC 项目。

使用 AJAX 添加更丰富的功能

AJAX 表示利用 Web 浏览器中无处不在的 JavaScript 支持来创建更具交互性的用户体验的能力。利用 AJAX 构建的客户端应用程序仍然遵循客户端-服务器范例。但是,使用 AJAX 时,客户端可以在不显示服务器回发的情况下更新页面的某些部分(当然,它通常会回发)。此外,大多数支持 AJAX 的应用程序将更多的处理放在客户端,用于切换页面部分、处理选项卡、自动完成数据输入、弹出对话框等。其结果是用户体验得到了交互性上的提升。

AJAX 不是 Microsoft 特有的技术。相反,它是一种编程模型。但是,Microsoft 创建了一组称为 Visual Studio AJAX 扩展的控件。这些控件使开发人员能够更轻松地创建 AJAX 体验。图 1.15 展示了 Visual Studio 工具箱中的控件。

01fig15.jpg

图 1.15

Visual Studio 2010 中的 AJAX 扩展控件。

AJAX 扩展控件使您能够创建一个可以接收部分、异步更新(使用 UpdatePanel)并显示更新进度(使用 UpdateProgress)的页面。它们还允许您创建自己的控件和功能来实现 AJAX,而无需编写客户端 JavaScript。

除了这些控件之外,Visual Studio 2010 还支持 JavaScript 的 IntelliSense、代码注释文档和客户端调试。它还包含 Microsoft AJAX Library,这是一个 JavaScript 通用库,支持 JavaScript 的面向对象开发。最后,许多 ASP.NET 控件都内置了 AJAX 功能,让您可以控制部分回发与完整页面刷新。

为 Silverlight 开发

Microsoft 的 Silverlight 是 Web 的另一项激动人心的客户端技术。Silverlight 提供了比 AJAX 更丰富的用户体验。您可以使用它来创建媒体丰富(图像、视频、图形缩放)、高度交互的体验。Silverlight 需要浏览器插件(或插件)。它可以在各种浏览器中的 Windows、Mac 和 Linux 上运行。Silverlight 基于 WPF;它允许您在浏览器和跨平台中使用 XAML 技能。

您可以通过在“新建项目”对话框中选择“Silverlight 应用程序”项目模板来在 Visual Studio 2010 中创建 Silverlight 应用程序。这样做时,您需要选择应用程序的主机。这可以是 ASP.NET Web 项目,或者您可以让 Visual Studio 在生成时生成一个测试页面。您还可以设置计划部署应用程序的目标 Silverlight 版本。这取决于您已安装的 Silverlight 版本。图 1.16 展示了项目创建时配置这两个设置的示例。

01fig16.jpg

图 1.16

定位特定的 Silverlight 版本。

您创建 Silverlight 应用程序的方式可能与创建 WPF 应用程序类似。您有一个用于布局页面的设计器。您也可以直接编辑 XAML。此外,Silverlight 控件也可从工具箱中获取。真正的区别在于应用程序主机。这通常是一个 ASP.NET Web 项目。您可以在图 1.17 中看到,既有主机项目(由 Visual Studio 模板生成),也有 Silverlight 项目。

01fig17.jpg

图 1.17

Visual Studio 中的 Silverlight 页面。

设计师和开发人员

在讨论 Silverlight(甚至 WPF)时,重要的是要注意为了支持强大的设计人员-开发人员工作流所做的技术和工具方面的工作。人们普遍认为,传统上开发人员一直致力于“设计”UI。不用说,许多开发人员在 UI 设计方面并不出色。

但是,即使在有设计人员参与项目的场景中,设计也常常不够完善,或者实现过程很艰巨。设计人员有自己的工具,这些工具通常与开发人员的工具不兼容。相反,设计通常以图片或一些基本 HTML 的形式提供给开发团队。开发人员需要设法实现设计的复杂性,同时还要考虑编码解决方案。这可能导致设计从未完全符合预期,开发人员花费过多的时间来纠正外观。这导致了“翻译丢失”的问题。

Silverlight 和 WPF 试图纠正这一错误,方法是将 UI 标记(XAML)与实现代码(C# 或 VB)完全分开。此外,Microsoft 提供了设计工具,让设计人员可以创建开发团队可以利用的真实用户界面。不再有“翻译丢失”的问题。相反,设计人员可以使用他们更熟悉的工具(无需学习 Visual Studio)创建或打开一个基于 XAML 的 UI 元素,并将其保存回解决方案或发送给开发人员。然后,开发人员可以在 Visual Studio 中打开同一个项目,并开始用他们的代码响应关键 UI 事件。这种来回迭代可以随着 UI 的不断完善而持续进行。没有人会踩到别人的代码;每个人都专注于自己的强项。

图 1.18 展示了 Expression Blend 3.0 工具的示例。请注意,Silverlight 示例中相同的 .xaml 文件也在此处打开。设计人员可以使用他们更熟悉的工具来布局 UI 并应用 3D 和动画等视觉技术。另外请注意,C# 项目文件正用于维护解决方案之间的连续性。设计人员完成后,他们的保存会直接发送回开发团队。他们甚至可以通过生成和运行项目来测试 UI 在应用程序中的上下文。

01fig18.jpg

图 1.18

在 Expression Blend 中设计 WPF 窗体。

做出客户端选择

在 Windows 上开发丰富用户体验的多种选择不可避免地会导致这个问题:“哪种 UI 技术适合我的下一个应用程序?”当然,答案取决于您的具体场景。在做出决定时,应牢记每种技术的意图。以下内容应有助于您做出正确的决定:

  • Windows 窗体在创建需要与操作系统连接、利用客户端资源、连接数据库等的已安装业务应用程序方面仍然占有一席之地。它们为数据输入、文件操作、配置和相关的面向任务的解决方案提供了标准、实用的用户体验。Windows 窗体易于开发,通常不需要太多设计工作。如果您已经对 WinForms 进行了大量投资,我们建议您继续使用 WinForms。但是,如果您是从头开始构建,则应仔细研究 WPF,因为这是 Microsoft 创新发展的方向。
  • WPF 是一项 Windows 技术,需要在客户端上安装 .NET Framework。它可以在浏览器沙箱中运行,也可以作为功能齐全的 Windows 应用程序运行。当您需要创建具有高设计美学(3D、动画、矢量缩放图形)的丰富用户体验,希望降低安装和更新成本,并需要分布式连接时,应利用 WPF。
  • Silverlight 在浏览器内部运行。Silverlight 是 WPF 的一个非常轻量级的跨平台版本。它提供了 WPF 的许多丰富功能,但允许您在不同的平台(Windows、Mac、Linux)和不同的浏览器上运行。当然,Silverlight 需要浏览器插件。浏览器插件在客户端上运行 CLR 的迷你版本。通过这种方式,您仍然可以用 C# 或 VB 编写代码,并可以访问 .NET Framework 的部分功能。但是,客户端必须安装插件才能运行您的应用程序。将 Silverlight 视为 Adobe Flash 产品的替代品。
  • ASP.NET Web 应用程序是创建无处不在的功能的绝佳解决方案。唯一的要求是 Web 浏览器。因此,当您需要触达最广泛的受众并且不希望处理客户端安装时,Web Form 应用程序仍然是一个很好的解决方案。此外,大多数现代浏览器都支持 JavaScript。因此,您仍然可以使用 AJAX 在 ASP.NET 应用程序中获得一些交互功能。
  • Microsoft Office 解决方案适用于用户倾向于直接处理生产力文档的情况。在这些情况下,您可以将 Word、Excel 或其他 Office 产品的强大功能与您的企业内部数据相结合,以创建丰富的解决方案。例如,您可以定义一个 Excel 文档来创建发票或工时表。您可以将该文档连接到 SharePoint 库以进行审批和工作流管理。同时,该文档可以构建为从后端系统获取数据并向其写入结果。

云端编码

我们编写的大多数分布式应用程序都部署到一个或多个服务器上进行托管和交付给用户群。该托管环境可能包含多个 Web 服务器、数据库服务器以及根据需要进行的其他服务器。然后需要内部或通过托管提供商来监控和管理该环境。管理该环境可能成本高昂。服务器需要维修和更新;随着对您的应用程序需求的增加,您通常需要添加新硬件来适应需求。

云计算旨在帮助解决这些问题。在其基本形式中,云计算代表了您整个应用程序(用户界面、逻辑、数据库等)的托管环境。该环境旨在根据您的需求自动扩展,并让您摆脱硬件管理和监控任务。这是通过海量的分布式、自动管理的计算能力实现的。

想要利用云计算的 Visual Studio 开发人员可以通过 Windows Azure 来实现。您可以将此技术视为托管您应用程序的服务器操作系统。不同之处在于,Azure 不是一个单一的服务器操作系统供您安装;相反,它是一个运行在海量共享计算能力之上的操作系统。您可以使用 Windows Azure 云作为您应用程序的单一主机来开发、部署、管理和扩展您的应用程序。然后,向该主机添加规模只需更改配置即可。

创建云应用程序

通过从 Visual Studio 的“新建项目”对话框中选择“云服务”模板,可以创建面向云的应用程序。这样做会显示如图 1.19 所示的“新建云服务项目”对话框。在此,您可以为应用程序选择一个角色(或类型)。例如,ASP.NET Web 角色会指示 Visual Studio 创建一个标准的 ASP.NET 网站以部署到云中。如果您想将现有的 ASP.NET 网站迁移到云中,也将使用此角色。

01fig19.jpg

图 1.19

为云服务项目选择角色。

为云开发与开发标准 .NET 应用程序非常相似。对于 Web 角色,您只需像平时一样开发网站即可。这意味着添加页面、使用标准控件以及根据 ASP.NET 事件模型进行编码。Visual Studio 解决方案模板会将云服务应用程序和 ASP.NET 网站作为独立的两个项目保留在解决方案中。图 1.20 显示了一个示例。请注意,该网站看起来(实际上就是)一个标准的 ASP.NET 网站。云服务应用程序充当配置点,用于定义网站应如何部署到云中。

01fig20.jpg

图 1.20

ASP.NET 网站及其云配置项目。

运行云应用程序

您可以从客户端计算机运行和调试面向云的应用程序。也就是说,在开发时运行它不需要将其部署到云中。这种体验与调试任何本地项目非常相似。主要区别在于云在本地进行了模拟。一个名为开发基础结构(development fabric)的应用程序在您的计算机上运行,以托管您的应用程序。开发基础结构会像应用程序在 Azure 云中运行一样执行您的应用程序。您可以通过单击任务栏中的图标来查看和控制此基础结构。图 1.21 显示了一个在开发基础结构中运行的网站。

01fig21.jpg

图 1.21

在本地云开发基础结构中运行的应用程序。

发布到云

当您准备好将应用程序推送到实际的云中时,可以直接在 Visual Studio 中完成。首先,您必须右键单击云服务并选择“发布”来发布您的解决方案。这会在您的应用程序的 bin\Publish 目录中创建一个程序包文件(.cspkg)和一个配置文件。

要部署,您必须拥有 Azure 服务帐户(windows.azure.com)。在 Azure 中,您可以定义和管理您的项目及其服务。在这种情况下,您将在您命名的特定项目下创建一个托管服务。托管服务必须映射到一个提供对您的服务访问的 URL。在定义了您的服务之后,您就可以进行部署。您可以部署一个暂存版本或生产版本。单击“生产”或“暂存”的“部署”按钮将带您到一个屏幕,您可以在该屏幕上上传您的应用程序程序包和配置文件。图 1.22 显示了一个示例。

01fig22.jpg

图 1.22

将托管服务(网站)部署到 Azure 云。

部署后,您可以从 Windows Azure 管理站点启动、暂停、配置或升级应用程序。当然,您现在也可以通过其 URL 访问它。

处理数据

数据是业务开发人员的领域。因此,用于业务开发的首选工具和框架会不断提供新的、更好的数据访问和公开数据的方法,这是很有道理的。数据访问在 Visual Studio 和 .NET Framework 的各个地方都存在。在此,我们重点介绍在 Visual Studio 2010 中处理数据时遇到的一些内容。

注意 - 数据访问在第 21 章“使用数据库”中有详细介绍。

设计您的数据

类型化数据集允许您创建一个基于数据库表语义的 .NET 类,但它在后台作为数据集工作。这可以简化您的编程,因为您正在处理一个类。Visual Studio 可以为您生成所有代码。类型化数据集已在 Visual Studio 中存在一段时间。您可以基于实际的表架构自动生成它们,并编辑生成的代码以查询、更新、插入和删除数据。

Visual Studio 2010 为类型化数据集提供了设计时支持。您可以通过将类型化数据集文件(.xsd)添加到项目中来创建它。然后,您可以使用工具箱和服务器资源管理器来构建数据集。图 1.23 显示了一个示例。从服务器资源管理器中的表已添加到设计图面,以构建数据集(并生成底层类代码)。

01fig23.jpg

图 1.23

使用数据集设计器构建类型化数据集。

创建数据集后,您可以针对表示数据的实际类进行编程。该类负责处理与数据库的交互。此外,类型化数据集支持分层更新。此功能允许您通过类型化数据集类在多个相关表中保存数据。在图 1.23 中,这意味着您可以同时编辑员工详细信息和相关区域,并将两者作为一个过程进行更新。

将数据设计与存储架构分离

大多数业务应用程序依赖于存储在关系数据库中的数据。数据库具有表、列和关系的良好结构。这种结构提供了良好的存储和报告机制。然而,面向对象的 .NET 开发人员的需求与数据库技术之间常常存在不匹配。对象开发人员以对象、属性、方法、关系、封装等概念进行思考。花费大量时间(并编写大量代码)将数据从数据库转换为面向对象的结构,然后再转换回来。

Visual Studio 提供了实体数据模型 (EDM) 作为将对象映射到数据库架构的一种方法。EDM 和实体框架允许您设计应用程序使用的数据类,而无需考虑用于将这些类持久化到数据库的实际存储机制。您可以在应用程序中针对这些数据类(设计架构)进行编程。然后,您可以为实际持久化(称为存储架构)定义一个单独的架构。您创建一个映射规范,以指示设计架构和存储架构如何连接。通过这种方式,EDM 允许您的应用程序数据独立于数据库架构而演进。它们不是耦合的。如果任一架构发生更改,您将更改映射以保持它们的连接。

通过从“添加新项”对话框中选择 ADO.NET 实体数据模型项来创建 EDM(参见图 1.24)。选择此模板将启动实体数据模型向导。

01fig24.jpg

图 1.24

ADO.NET 实体数据模型。

EDM 向导允许您从“空模型”(如图 1.25 所示)开始,这在您打算先建模然后构建数据存储时非常有用。您也可以从现有数据库生成 EDM。这会创建一个模仿您当前数据库结构的类文件集。但是,您的类文件之后可以独立于底层存储而演进。

01fig25.jpg

图 1.25

实体数据模型向导允许您从现有数据库生成模型或从空模型开始。

EDM 是您解决方案中的一个文件(.edmx)。您可以在设计器中打开它进行编辑。图 1.26 显示了一个示例。注意存储架构正通过“映射详细信息”窗格(位于图的底部)映射到设计架构。还有用于处理关系(工具箱)和浏览模型(左侧的模型浏览器)的选项。完成 EDM 后,您可以像使用任何类对象一样直接在应用程序中对其进行编码。

01fig26.jpg

图 1.26

在 EDM 设计器中将设计架构映射到存储架构。

构建偶尔连接的应用程序

当今许多应用程序都需要在线和离线访问数据。例如,您可能需要在旅行或在客户现场时访问报告数据或客户服务记录。您不能总是依赖连接。开发人员一直在以各种方式处理这个问题。Visual Studio 提供数据同步服务,为这个棘手的问题提供了一个通用、简单的解决方案。

数据同步允许您在中央数据库和用户的客户端系统之间同步和缓存数据。缓存是 SQL Server Compact Edition (CE) 的一个版本。Microsoft 利用这些服务来构建 Windows 7、Vista、Office,甚至是其 Zune 软件。您也可以在您的应用程序中利用这些服务。

您可以将本地数据库缓存添加到 WinForms 或 WPF 应用程序。通过“本地数据库缓存”项模板即可完成。使用它,您可以创建一个 .sync 文件来配置本地数据存储与服务器之间的同步方式。在 Visual Studio 中打开本地数据库缓存文件将打开“配置数据同步”对话框。在这里,您可以设置应在客户端缓存的表,设置服务器数据库,并配置客户端数据库信息。图 1.27 显示了一个配置此对话框以在服务器和客户端数据库缓存之间同步特定表的示例。

01fig27.jpg

图 1.27

配置数据同步。

编写连接的、面向服务的解决方案

许多业务应用程序涉及围绕文档、记录和相关数据的特定流程或工作流。这些业务流程通常涉及业务人员的阶段性审查和批准;它们还可能需要各种系统之间的通信。业务流程通常是长运行的,这意味着该流程不是一个简单的、单一的执行,而是多步骤的流程,在进入下一步之前需要“等待”。

将这些流程构建到业务应用程序中通常需要大量的自定义开发工作,并且指导很少,或者意味着您的应用程序将绑定到第三方工具。Web 服务有所帮助,但开发人员缺乏一种简便的方法来构建具有多协议支持、不同传输、强大安全性和事务支持的 Web 服务。

Visual Studio 2010 提供了开箱即用的支持,用于将业务流程构建为工作流,并将其与应用程序、系统和合作伙伴可靠地集成。本节将介绍 Windows Workflow (WF) 用于定义可重用业务流程,以及 Windows Communication Foundation (WCF) 用于跨系统边界解锁该业务流程。

开发应用程序/业务流程

工作流代表了一系列操作(称为活动),通常用于建模业务流程,并经常涉及用户交互。WF 提供了框架、工具和执行引擎,以在您的应用程序中启用工作流。有了它,您可以创建一个工作流,并知道它可以在任何安装了 .NET Framework 的地方运行。

您可以创建一个工作流模型,以描述活动执行的顺序和逻辑,这些逻辑基于工作流中的数据、您的业务规则和条件以及系统和用户操作。工作流由工作流实例对象执行和管理。此对象与您的应用程序在同一进程中运行,并控制工作流的执行和当前状态。您可以在应用程序内部与工作流交互。这可以是任何类型的应用程序(Windows、ASP.NET、控制台、服务等)。您通常将数据提交到工作流,并可能会收到响应,或者您可以使用工作流来启动业务流程中的某些任务或活动。工作流还可以在长事务期间自我持久化,然后在需要时重新激活。

注意 - 如果您之前版本的 .NET 中使用过 WF,您应该知道 .NET 4.0 中的 WF 几乎是一个全新的版本。例如,先前版本中的 SequentialWorkflow 和 StateMachineWorkflow 类已删除。取而代之的是,您拥有一个单一的、分层的模型。

构建工作流是一个可视化的过程。背后的思想是,工作流本身通常被描绘成一组步骤(框)和连接(箭头)。因此,工作流被表示为“流程图”项模板。您可以将活动(或活动序列)添加到流程图中并相应地连接它们。活动从工具箱项中添加。有许多标准活动用于处理诸如分支、循环、错误处理和补偿之类的事情。您很可能还需要编写自己的自定义活动并将其添加到工作流中。图 1.28 显示了设计器中的一个示例工作流。左侧工具箱中列出了活动。请注意,一旦添加到图表中,您就可以在设计器中直接对活动进行编码(包括 IntelliSense)。

工作流还可以同时包含变量和参数。这些概念类似于用 .NET C# 或 VB 编程。变量用于在工作流(或活动)中存储状态(或数据)。参数用于将数据传入和传出工作流。请注意图 1.28 底部的变量和参数编辑器。在这里,您可以定义您给定的工作流使用的变量或参数的名称、类型、方向和默认值。

01fig28.jpg

图 1.28

Visual Studio 中的工作流设计器。

最后,请注意图 1.28 中工具箱内列出的消息传递活动。这些活动允许您为工作流定义接收端口和/或发送端口。这使得您的工作流能够侦听消息,然后在收到消息后启动一个托管实例。您还可以使用发送形状与其他人进行通信托管服务。

注意 - 有关 Windows Workflow 的更详细讨论,请参阅第 23 章“将工作流嵌入您的应用程序”。

创建和使用服务

大多数组织拥有多个系统,每个系统都有特定的用途。它们可能有财务、人力资源、订单管理、库存、客户服务等系统。每个应用程序都包含特定的业务流程。然而,大多数组织需要将这些业务流程从应用程序中解锁,并将其作为集成解决方案的一部分进行重用。这就是面向服务的解决方案发挥作用的地方。通过将应用程序的业务流程暴露为服务,多个客户端可以利用该流程。

代码重用的承诺已经存在很长时间了。然而,随着 Web 服务的出现,面向服务的代码重用变得非常流行。HTTP 和 80 端口的普遍存在,加上基于 XML 的接口,使得应用程序边界之间可以实现新级别的通信。开发人员开始将关键业务功能包装为服务,并从多个客户端调用它们。

Visual Studio 2010 和 .NET Framework 4.0 代表了服务导向范式向前迈出的又一步。使用这些工具,您可以基于 Microsoft 的 Windows Communication Foundation 创建服务。WCF 是一个框架,它认识到开发人员需要多层通信(不仅仅是通过 HTTP 传输的 SOAP 协议),需要强大的安全性,通常需要支持事务,并且不希望编写所有代码来完成此操作。

您可以将 WCF 服务创建为代码库、工作流或 Web 服务应用程序。图 1.29 显示了 WCF 项目类型下的新建项目模板。从这里,您可以指示您的 Web 服务包含工作流,或者创建一个调用您编写的自定义代码的服务库。

01fig29.jpg

图 1.29

WCF 项目模板。

您还可以通过 Web 项目模板创建 XML Web 服务(.asmx)。此同一模板区域还提供了对 WCF 服务应用程序模板的访问。使用它,您可以创建与标准 Web 服务配置相似的 WCF 服务(并托管在 ASP.NET 中)。

WCF 主要在于配置。它让您无需编写所有服务底层代码。相反,您可以专注于服务的 functionality。例如,您可以根据您打算支持的通信堆栈(HTTP、TCP/IP、MSMQ、命名管道等)向服务添加服务终结点。图 1.30 显示了 WCF 配置编辑器。请注意,终结点的绑定支持是一个配置任务(而不是编码任务)。

01fig30.jpg

图 1.30

WCF 服务的配置。

构建完服务后,您需要对其进行托管,以便使用者(客户端)可以找到并调用它。您有许多托管选项可用,包括自托管、Windows 服务、IIS 和 WAS(Windows 进程激活服务)。实际使用 WCF 服务需要您定义一个服务引用,并配置您将如何与服务进行通信和传递消息。我们将在本书后面(第 22 章“面向服务的应用程序”)详细讨论创建、托管和使用服务。

注意 - 有关 WCF 和 Web 服务的工具的更详细讨论,请参阅第 22 章“面向服务的应用程序”。

摘要

Visual Studio 的新版本对各种开发领域都意义重大。Visual Studio 影响着使用 C++、C#、Visual Basic 以及许多其他语言编写代码的开发人员。字面上数百万开发人员每天都会启动并运行他们最喜欢的工具。他们将大部分工作时间、天、周和月都花在这款工具上进行架构设计和构建解决方案。希望本章能帮助您了解构建下一个应用程序的众多可能性。

© . All rights reserved.