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

.NET Framework 3.0 盛宴

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.58/5 (112投票s)

2006年12月14日

CPOL

15分钟阅读

viewsIcon

256190

.NET Framework 3.0 入门教程。

菜单

“一个菜太多会毁了整锅汤”。这种格言是否完美地适用于.NET框架频繁发布的洪流?如今,.NET被认为是编程界最成功且被普遍认可的开发平台。但是现在,随着又一个框架版本即将问世,等待科技界拥抱,我们中的大多数人可能对它的价值感到担忧。现有的.NET框架2.0难道不是已经让我们非常满意和舒适了吗?我们难道不担心接受新的东西,尤其是当它会使现有的版本过时时?.NET版本发布周期如此短暂,难道不会导致其追随者流失吗?

当然不会!“.NET是一场不断演进的革命”。我,作为.NET(以及其他微软技术)的忠实粉丝,认为应该以极其简单的方式介绍和讨论这个全新的热门框架,以促进其接受度并减轻对更高版本的恐高症。所以请一一品尝这些未经调味的菜肴,然后开始享用吧,.NET框架3.0的盛宴已经摆上桌了。

开胃菜

“新技术和新菜肴有一个共同点:在你真正尝试之前,无法形成真实的看法”。

.NET Framework 3.0,.NET最新备受瞩目的版本,能够为Windows编程模型带来巨大的飞跃。它建立在(并扩展了)强大的.NET Framework 2.0之上,并准备彻底改变我们今天编写应用程序的方式。它的目标,与其他许多微软产品一样,是:“在最短的时间内创造出最好的产品,当然也要更加简单”。新框架可用于Vista、Server 2003和XP版本的Windows,并且可以在Visual Studio 2005的烤箱中快速烹饪新应用程序。

主菜( sizzlers)

令人惊讶的是,新框架之前被命名为WinFx!它之所以被重命名,可能是因为它的原名没有清楚地表明新版本 intended 的含义(即微软开发框架的下一个版本)。然而,品牌重塑并未影响产品的整体愿景或组成技术。因此,新框架包含了熟悉的.NET Framework 2.0组件(ASP.NET、WinForms、ADO.NET等)、BCL和CLR,以及四项开创性的新技术:Windows Workflow Foundation (WF)、Windows Presentation Foundation (WPF)、Windows Communication Foundation (WCF)和Windows CardSpace (WCS)。这些新的补充技术旨在解决当代软件开发中的一些最严峻的挑战。

主食

我们现在要进入实质内容了。用新框架的以下组成部分来刺激您的味蕾吧。

菜品 1 - .NET Framework 2.0

嗯,这是同一道菜,但有一些新的配料(字面意义上的)。如前所述,新的.NET框架建立在前一个版本之上。事实上,.NET Framework 2.0版本没有任何内容被弃用!因此,所有已创建的现有应用程序(当然,还有获得的宝贵专业知识)至少在一段时间内仍然是有价值的:)

虽然.NET Framework 2.0类库被3.0版本中添加的新组件(WF、WCF和WPF)部分取代,但原始类库的许多部分对开发人员仍然至关重要。2.0版本的技术(ASP.NET、WinForms、ADO.NET、XML等)仍然是新版本的基础部分;然而,.NET Framework 3.0开发人员现在可能更倾向于使用WPF而不是Windows Forms来编写原生的Windows GUI。

.NET Framework 3.0 components

图 1:.NET Framework 3.0 组件

菜品 2 - Windows Workflow Foundation (WF)

在传统的软件开发方法中(不包括BizTalk等),业务流程深深地嵌入在程序逻辑中,这使得该流程难以配置或更改。对于Windows软件的相当一部分,一个由工作流驱动的面向流程的设计可能是正确的方法。

工作流不过是一系列按特定顺序执行的活动。WF为此类Windows提供了一种通用的工作流技术,通过这种技术,流程中的每个步骤都可以明确定义(而不是将其逻辑纠缠在代码中),然后由工作流引擎执行。每个活动都可以用一个类来表示,并且本身可以包含工作流创建者想要的任何工作。因此,活动也可以在不同的工作流中重用,从而更容易为新问题创建自动化解决方案。

WF大致包括以下组件:

  1. 活动 (Activity):一项工作单元,范围从非常简单到相当复杂。
  2. 工作流 (Workflow):一组活动,部分或全部实现业务流程。
  3. WF 设计器 (WF Designers):创建和修改工作流和活动的图形工具。
  4. WF 基类活动库 (WF Base Activity Library):一组基本活动(IfElse、While、Listen等设计构造),用于创建工作流。这些与BizTalk Orchestration形状非常相似。
  5. WF 运行时引擎 (WF Runtime Engine):一个执行工作流的库。它还提供其他服务,例如与工作流外部的软件进行通信。
  6. 宿主进程 (Host process):一个托管Windows Workflow Foundation运行时引擎、工作流以及用于持久化工作流状态、处理事务等的运行时服务的Windows应用程序。

WF提供了工作流设计器,一个托管在Visual Studio中的图形化工具,用于创建工作流。工作流中的活动可以使用WF提供的基类活动库(BAL)来绘制。

Workflow Designer

图 2:托管在Visual Studio 2005中的工作流设计器

通过为Windows提供这种简化的工作流技术,.NET Framework 3.0已经掌握了构建软件的有益范例。因此,随着面向流程的软件视图最终获得普及,工作流的使用也将不断增长。

菜品 3 - Windows Communication Foundation (WCF)

无论应用程序如何构建(使用工作流或其他方式),大多数应用程序都需要相互通信。这种应用程序间的通信在过去几年中取得了巨大飞跃。经过一段长期的分歧,所有主要供应商都同意支持基于SOAP的Web服务,这使得构建在不同技术平台(如J2EE和.NET Framework)上的应用程序之间的互操作性大大简化。因此,这也使得面向服务的架构的概念对大多数组织来说更加可行。

.NET Framework 2.0中存在许多通信方法,例如ASP.NET Web服务、.NET Remoting、System.Messaging(通过MSMQ支持排队消息)、Web Services Enhancements (WSE)——ASP.NET Web服务的一个扩展,支持WS-Security等。然而,WCF提供了一种通用的方法和API,而不是要求开发人员为每种通信类型使用不同的技术和不同的应用程序编程接口。“WCF实际上是新瓶装旧酒”,之前被称为Indigo。在.NET Framework 3.0环境中,大多数可能使用了上述通信技术之一的应用程序将改为使用WCF。

WCF通过SOAP为可互操作的通信提供了强大的支持。这包括对多种规范的支持,如WS-Security、WS-ReliableMessaging和WS-AtomicTransaction。WCF本身不要求SOAP,因此也可以使用其他方法,包括优化的二进制协议和使用MSMQ的排队消息。WCF还采用明确的面向服务的通信方法,并放宽了分布式对象系统中可能存在的一些紧密耦合,从而使交互不易出错且易于更改。因此,WCF解决了应用程序的各种通信问题。其三个最重要的方面脱颖而出:

  1. 统一微软的通信技术。
  2. 支持跨供应商互操作性,包括可靠性、安全性和事务。
  3. 丰富地支持面向服务的开发。

总而言之,应用程序之间的通信,无论是在组织内部还是跨组织,都是任何现代软件的基本组成部分。NET Framework 3.0试图通过WCF的面向服务方法来解决持久的通信挑战。

菜品 4 - Windows CardSpace (WCS)

数字身份是人们今天在互联网上电子化表示自己的方式。在大多数情况下,一个人的数字身份表现为一个简单的用户名,当它与密码结合时,用于访问网站、电子邮件服务器、电子商家、在线银行等。然而,尽管用户名和密码简单且流行,但它们却困扰着人们。我们中的许多人很难记住不同网站的所有用户名和密码。因此,有些人对不同网站使用相同的值,这减轻了记忆负担,但增加了安全风险。

用户名、密码和其他个人信息可能会被网络钓鱼者窃取。通过发送欺骗性电子邮件,网络钓鱼者诱骗受害者登录到一个看起来像受害者银行网站的网站。一旦受害者输入用户名和密码,网络钓鱼者就可以利用这些信息冒充用户在真实网站上进行操作。

减少这些问题的发生和严重性需要一种全新的数字身份管理方法。WCS(最初称为InfoCard)提供了这一点。它帮助人们跟踪他们的数字身份,将其视为独立的“信息卡”。如果一个网站接受WCS登录,试图登录该网站的用户将看到一个WCS选择界面。通过选择一张卡,用户也选择一个用于访问该网站的数字身份。用户不必记住大量的用户名和密码,只需要记住他们想使用的卡。

这些卡片代表的身份是由一个或多个身份提供者创建的。这些身份通常会使用更强的加密机制来允许用户证明他们的身份。WCS本身还包括一个在客户端计算机上运行的自颁发身份提供者。有了这个提供者,用户可以创建不依赖密码进行身份验证的自己的身份。

所以,如果登录网站不使用密码,网络钓鱼者也无法造成伤害。嗯,并非如此!如果网络钓鱼者设法欺骗用户登录一个虚假网站,他们仍然可能获取用户的个人信息,例如敏感的医疗信息等。要防止这种情况,需要用户能够区分真实网站和网络钓鱼者创建的仿冒网站。为了实现这一点,拥有网站的组织可以获得高保证证书。与如今简单的SSL证书不同,获取这种新证书需要更严格的流程,包括更强的证据证明申请该证书的组织确实是其声称的身份。高保证证书还可以包含公司的徽标和其他信息,以帮助用户正确判断使用该证书的网站是否合法。当用户访问新网站时,WCS始终以标准屏幕显示该网站证书中的信息。根据收到的证书的强度,该屏幕将显示不同级别的网站身份保证。

菜品 5 - Windows Presentation Foundation (WPF)

用户界面是大多数Windows应用程序的重要组成部分。无论软件如何发展,传统的菜单驱动GUI还将继续存在一段时间。同样,显示视频、运行动画、使用2/3D图形以及处理不同文档格式的需求也无法被取代。并且,无论应用程序是独立的桌面客户端还是通过Web浏览器访问,所有这些都必须是可能的。

到目前为止,用户界面的所有这些方面在Windows上都以不同的方式提供。例如,开发人员需要使用Windows Forms来构建Windows GUI,或者使用HTML/ASPX/Applets/JavaScript等来构建Web界面,使用Windows Media Player或Adobe Flash Player等软件来显示视频等。对开发人员来说,挑战是明确的:使用不同的技术为不同类型的客户端构建一个连贯的用户界面并非易事。

WPF(最初称为Avalon)的一个主要目标就是解决这一挑战!通过为所有这些用户界面方面提供一个一致的平台,WPF为开发人员的生活带来了便利。通过采用更现代的方法,包括对视频、动画、2/3D图形和各种文档的支持,WPF可以让用户以新的方式处理信息。通过为桌面客户端和浏览器客户端提供一个共同的基础,WPF使得构建同时处理两者的应用程序变得更加容易。

用户界面的创建者长期以来面临的另一个挑战源于构建有效界面所需的不同角色。需要软件开发人员来创建界面的逻辑,需要设计师来定义界面的外观和感觉。然而,像Windows Forms这样的旧技术完全侧重于开发人员。开发人员和设计师之间没有真正有效的协作方式。为了解决这个问题,WPF依赖于eXtensible Application Markup Language (XAML)。XAML是一种基于XML的语言,允许以声明式而非代码的方式指定用户界面。这使得MS Expression Blend(最初品牌为MS Expression Interactive Designer,代号Sparkle)等用户界面设计工具更容易生成和处理基于设计者创建的视觉表示的界面规范。设计师将能够使用这些工具来创建界面的外观,然后生成该界面的XAML定义。开发人员将此定义导入Visual Studio,然后创建界面所需的逻辑。

开发人员还可以构建XAML浏览器应用程序(XBAP)来创建运行在Web浏览器内的远程客户端。XBAP建立在与独立WPF应用程序相同的平台上,允许在可下载的浏览器应用程序中呈现相同风格的用户界面。最棒的是,相同的代码可能可以用于这两种类型的应用程序,这意味着开发人员不再需要为桌面和浏览器客户端具备不同的技能。从Internet下载的XBAP在安全沙箱中运行(类似于Java Applet),因此限制了下载应用程序可以执行的操作。

GUI是现代应用程序复杂但重要的组成部分。通过WPF,.NET Framework 3.0为这些界面带来的挑战提供了一个更完整、更一致的解决方案。目标是让用户界面的创建者(开发人员和设计师)能够有效地协作,并更快速地完成工作。所以要小心,因为当你的老板听到这一切时,她/他肯定会开始对你提出更高的要求:(但我猜,这是接受任何新技术的另一面。

鸡尾酒

“如果一顿理想的餐点没有鸡尾酒就无法结束,那么技术评论没有批评也不行”。

最近,我遇到了一些关于.NET 3.0发布及其品牌推广的批评,理由是新版本不包含.Net 2.0的bug修复或语言增强(如LINQ)。还有人说它(除了WinFx库)并没有增加任何实质性的东西,也不会带来任何性能提升。一些人甚至认为.Net 3.0的发布是一种改进的市场营销策略,用来炒作即将发布的Vista。

相反,从WinFx到.NET Framework的品牌重塑,以及将各种技术“现在”重新整合到一个统一的.NET Framework 3.0的旗帜下,是一个比以后任何时候都更好的措施。这不仅可以避免将来再次出现营销混乱,还可以防止不断扩展的品牌命名空间进一步变得混乱。毕竟,我们不是早就忘记了Longhorn(被Vista取代)了吗(即使最初有过很多争论)?很可能,忘记比记住需要更少的努力或时间。

事实上,.Net Framework 3.0在这个阶段没有引入任何需要重新设计或重写现有应用程序的内容,这显然是值得欢迎的。否则,可能会激怒开发社区并损害他们的信任。现在我们的生活变得更简单了(或者至少不那么复杂了);bug修复和漂亮的增强功能可以很快到来(以补丁/SP的形式)。同样,随着每个新CPU/架构版本的发布,都可以实现主要的性能提升。

上述担忧和由此产生的惰性,在一定程度上,在.Net Release 3.0宣布时是可以预见的!!所以,随之而来的困惑是显而易见的,原因是,从第一个版本到现在;.Net Framework主要是在垂直向上增长,而现在(随着新的3.0版本)它试图向外水平扩展。然而,这表明了该平台的整体成熟度,并且到目前为止是一个健康的迹象。所以,与其继续犹豫不决,不如明智地向前迈出一步,将新版本视为一个“增量”版本(或者更简单地说,是WPF、WCF、WF和WCS技术的“生产”版本),它确实足够宏伟,不应被低估。

甜点

“无论发生什么,.NET Framework 3.0将留下来,并统治”。所以,微不足道的传教士(像我一样)的推广或辩护是完全不重要的。新框架将深刻地影响我们今天在Windows软件世界中构建应用程序的方式。对于任何想改变现状的软件行业从业者来说,现在是开始理解如何从新的.NET Framework中获益的最佳时机。请访问Microsoft获取更多学习资料,访问NetFx3获取最新新闻/公告,以及访问WFWCS进行深入研究。

© . All rights reserved.