WinFX 是什么

大家好。我是 Brad Abrams,在 Microsoft 的公共语言运行库小组工作。今天在这里我们要谈一谈什么是 WinFX。通过业内的一些消息,您可能对它已早有耳闻。也许,您在一些网络日记中看到人们对它的谈论。今天,在这里,让我们来对它追根溯源吧。

不过,在我们开始探讨 WinFS 的细节之前,哦,我想先谈谈关于 WinFX 开发的历史过程。追溯一下,我们引入 Win32 API 是在 1993 年,那是我们第一次将它公开给开发人员。没多久,它就与 Windows 95 版一起进行了发布。这样,从我们引入 Win32 API 算起已经历了超过 10 个年头了,现在也确实到了更新我们关于开发平台的概念的时候了。

另外一件有意思的事情是平台会存在很长的时间?所以,我们必须确保我们构建的新平台有很长的寿命而且将会存在很长的时间。

那么什么是 WinFX 呢?WinFX 是一个面向对象的 API,它利用 .NET Framework 并公开 Longhorn 的每一个方面,将操作系统的每一个角落都呈现给开发人员。我为这个 API 感到非常兴奋异常,因为这是我们第一次真正地使 Windows 的核心 API 充满活力,从而使应用程序的开发人员能够以一种面向对象的方式访问 Windows 的每个角落。这意味着,所有的类对子类和扩展都是可用的,您能够自定义解决方案。而且在托管代码中它也是可用的,可以为您提供您希望在托管代码中得到的安全性、可靠性和健壮性。它构建于 .NET Framework 之上并扩展了 .NET Framework。所以,如果您熟悉 .NET Framework,那么现在,您在家使用 WinFX 就能搞定一切。

让我们花一两分钟看一下 Win … 我喜欢 WinFX 这个名称,它非常酷。WinFX 由两部分组成。一部分是 Windows 而另一部分则是 FX,不是吗?相当基础。Windows 部分实际上是说出了 WinFX 的渊源,它来自 Win32 和 Win16,这些 API 是构建所有 Windows 应用程序的基础。这样它就为 Windows 部分提供了一个很好的发展过程:Win16、Win32、WinFX。

FX 代表 framework。它表示 WinFX 继承自 .NET Framework。所以如果您熟悉 .NET Framework,而且现在正在 .NET Framework 上编写代码,那么当将来转移到 WinFX 时会非常轻松。让我们继续,看一下我们在 PDC 中给出的介绍,如果您想看的话,可以在 Longhorn 开发人员中心找到。
这一介绍为您提供了命名空间和 WinFX 中可用的非常关键的类型的高级概述。在这一层次的介绍中,您可以看到主要的应用程序模型 — 当您在这个新的 WinFX API 集上构建应用程序时可以构建的不同类型的应用程序。稍后,我们会对它们进行逐一探讨。

该介绍的剩余部分划分为四个主要内容。首先是三个主要的支柱:表示、数据和通讯。如果您回想一下,您的每一个应用程序都是由一些表示组成的,您如何与用户进行交互;如果应用程序由一些数据组成,您如何来使用数据或 XML,如何读取和写入信息;如果应用程序包含通讯功能,如何实现网络上您所在的节点与网络上其他人的节点之间的通讯。

有一个基本块,这个基本块包含所有可用的、无所不在的基础结构。好的,让我们探讨一下更多的细节,您可以看到 WinFX 中可用功能的种类。第一个就是客户端应用程序模型。如果您正在构建一个在客户端上运行的应用程序,并且要利用客户端操作系统的强大功能,我们有 Windows 窗体这一功能 — 现在您已经了解并喜欢的 .NET Framework 中功能。

另外,对于要构建 Longhorn 应用程序(在 Longhorn 上运行的应用程序),我们有 Avalon 功能,它在 system.windows 命名空间中。而对于构建 Web 服务应用程序,我们则有 ASP.net 和针对 Web 服务的新技术(代号 Indigo)。而且这两种技术共享 system.web 命名空间中的同一个基础应用程序模型。我们还有数据系统。利用我们在 Yukon 中所做的工作,您能够在带有 UDT 的数据库中编写存储过程和托管代码。Yukon 已经成为 WinFX 中的一个非常强大的应用程序模型。
另外,我们正在引入文件系统中数据存储的一个新的抽象(称为 WinFS),它可以让您在 DOS 中访问数据库之外的日常信息。此外,还有移动设备应用程序模型,它们可以成为应用程序模型的组成部分。如果您要为小型设备或者必须在已断开连接并且电源供应受限的状况下工作的设备构建应用程序的话,您便可以使用这些组成部分。

好的,现在让我们进入命名空间的核心部分,看看里面有什么。您将看到的第一个命名空间就是 system.windows。它包含 Avalon 子命名空间和的核心类型,Avalon 是 Windows 新的表示子系统。它在 Longhorn 操作系统中是可用的,并且是为 Longhorn 构建一流的客户端应用程序的主要方式。
当然,我们还有您了解和喜欢的 .NET Framework 中的表示的其他部分。System Windows 窗体用于构建必须在整个 Windows 操作系统范围内运行的客户端应用程序。System Web UI 为您提供了 ASP.net 计划的 UI 视图。

接下来,让我们转到数据上来,我们要探讨的是 System.data,也就是我们了解和喜欢的 ADO.NET 栈,没错就是它。今天,我很高兴地宣布,即使在 WINFX 中我们也没有改变数据模式。而且我们在 Windbey 中引入了一个叫做对象空间 (Object Spaces) 的新命名空间,它为您提供了数据的目标视图,这样您就可以根据这些对象以及它们的方法来访问数据库的行和列,而不必去了解数据库的架构。

我们要探讨的下一个主题是 WinFS。现在,WinFS 表示在这个命名空间中,就像我前面提到的,WinFS 是一种真正意义上的、现代化的 Windows 文件系统。它为您带来的就是 — 我们已经采用了 SQL Server 关系数据库并且已加入到操作系统之中,从而使各种各样的应用程序都可以使用它。

接下来,让我们来了解一下 Collaboration 栈。您可以看到,我们有各种各样的功能,您可以利用这些功能实现从网络上的一个节点到另一个节点的通讯。您会赞赏并且能吸引您的注意力的第一个东西就是 System.Collaboration。在这里,我们将协作支持添加到操作系统的核心部分.

下面,我将重点介绍 System.Message Bus。System.Message Bus 是 Indigo 的功能,它可以用于构建面向服务的应用程序,也就是在网络上共享协定的应用程序。我们还有 System.Net,它是以一个非常低的级别访问网络资源的核心功能。我们还将为您提供一个 WinFX 的高级别概述。在接下来的几周里,你们将会看到更多关于这里讲的每一个领域的详细信息。

但如果您是一名 .NET Framework 开发人员,您可能对了解 .NET Framework 与我们刚才谈论的 WinFX 有何种关系感兴趣。重要的一点就是要认识到 WinFX 包含并扩展了 .NET Framework。WinFX 百分之百地包含 .NET Framework,而且在 Longhorn 中我们将继续深入讨论。所以,就像现有的 Win32 用程序将在 Longhorn 中能很好地工作一样,.NET Framework 应用程序同样会在带有 WinFX 的 Longhorn 中高效地工作。

因此,您可以将 .NET Framework. 看作是 WinFX 中可重新发布的子集。把 WinFX 看作是和 Longhorn 操作系统以及未来的操作系统紧密地联系在一起的子集,而将 .NET Framework 看作是比 WinFX 低一级的子集。

下面总结一下我们所探讨的内容,对于所有的 Windows 操作系统来说,WinFX 都给开发人员提供了一个全新的开发人员界面。它是一个现代的、面向对象的 API,我们在设计上花费了大量的时间,以确保它非常适合 .NET Framework 并且易于使用。为 Longhorn 和为随后的  WinFX 做好准备的最佳方式是从现在起就在 .NET Framework 中进行构建。谢谢
 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
`WindowOwner` 是一个用于指定 WPF (Windows Presentation Foundation) 窗口拥有者的属性或参数。在 WPF 中,一个窗口可以拥有另一个窗口作为其拥有者,即父窗口。拥有者窗口通常被称为父窗口或者宿主窗口。 拥有者窗口在以下情况下很有用: 1. 模态对话框:当你需要在一个窗口上打开一个模态对话框时,可以将拥有者窗口设置为父窗口。这样,对话框窗口将始终显示在拥有者窗口的前面,并且拥有者窗口将禁用,直到对话框窗口关闭。 2. 窗口层次结构:在某些情况下,你可能希望将一个窗口作为另一个窗口的子窗口。通过设置 `WindowOwner` 属性,你可以建立父子窗口之间的层次结构,并在需要时管理它们的显示和关闭。 在 WPF 中,可以通过以下方式指定窗口的拥有者: 1. 在 XAML 中:在窗口的 XAML 标记中,使用 `Owner` 属性指定拥有者窗口。例如: ```xaml <Window x:Class="YourNamespace.YourWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="Your Window" Height="450" Width="800" Owner="{Binding ElementName=MainWindow}"> <!-- 窗口内容 --> </Window> ``` 在上面的示例中,`Owner` 属性通过绑定 `MainWindow` 元素作为拥有者窗口。 2. 在代码中:在代码中,可以使用 `Window.Owner` 属性指定拥有者窗口。例如: ```vb Dim childWindow As New ChildWindow() childWindow.Owner = Me ' 设置 Me 为拥有者窗口 childWindow.Show() ``` 需要注意的是,拥有者窗口必须是一个有效的 WPF 窗口对象,否则设置拥有者可能会引发异常。 希望能解答你的问题!如果还有其他疑问,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值