InfoQ

InfoQ

新闻

我的书签

登录注册 以永久保存书签。

该内容已经被标记书签!

标记书签错误,请重试!

.NET 4.0引入XAML 2009,但并非面向WPF用户

作者 Jonathan Allen 译者 张龙 发布于 2009年12月6日

领域
语言 & 开发
主题
.NET Framework 4.0 ,
XAML ,
.NET框架 ,
WPF ,
.NET ,
编译器 ,
编程 ,
FXCop ,
工作流基金会 ,
语言

在PDC 2009上,Michael Shim和Rob Relyea介绍了微软对XAML的未来规划。目前.NET中有两个XAML实现,一个针对Windows Workflow,另一个针对Windows Presentation Foundation,因此想要使用XAML的开发者需要WF或是WPF。

在.NET 4中,微软于新的System.XAML程序库中加入了一个独立的XAML引擎。该版本只需System.XML与核心运行时即可,这对于那些想要使用XAML但又不想加载Fx程序库的应用来说再适合不过了。

微软对 .NET 4中的XAML Nodes Streams进行了大幅度的提升。所谓node stream其实就是一个事件驱动的API,用于与结构化数据协同工作。读者可能对基于XML的SAX风格的程序库比较熟悉。除了直接处理之外,在其他框架加载XAML Node Streams时它还可以修改XAML。

作为.NET 4重构的一部分,微软极大地提升了解析器的可扩展性。在.NET 3中,扩展点仅仅局限于IXamlTypeResolver、IUriConext和IProvideValueTarget。新的解析器可以通过这些接口注入很多其他的服务。但这些接口并非都是新引入的,只是此前没有公开而已,他们是:

  • IRootObjectProvider
  • IXamlNameResolver
  • IXamlNameProvider
  • IAmbientProviders
  • IDestinationTypeProvider
  • IXamlNamespaceProvider
  • INamespacePrefixLookup
  • IXamlSchemaContextProvider
  • IXamlObjectWriterFactory

就像XML一样,XAML也有两类解析API。除了XAML Node Streams之外,还将有一个XAML DOM。凭借XAML Document Object Model,开发者可以一次性处理整个XAML树。开发者不仅可以直接处理节点树,还能够访问LINQ provider。我们可以联合使用XAML Node Streams和XAML DOM解析器为静态分析工具如FxCOP增加支持。

到目前为止,我们仅仅谈到了解析工具,实际上微软还发布了语言的一个新版本,叫做XAML 2009。XAML 2009将完全支持泛型、非默认构造方法、工厂方法、内建类型并且可以定义新的属性。

需要注意的是 .NET 4、VS 2010和Blend中的编译器与设计器将不会在此次发布中支持XAML 2009。XAML 2009只能用于“loose XAML”,比如Workflow Foundation所用的小个配置文件。其中的主要原因在于WPF设计器已经拥有了自己的解析器,而重写该解析器以使用这个公共解析器将要花费大量时间。

Silverlight将与.NET生态圈中的其余部分使用同样的XAML解析器。这么做是考虑到更好的错误检测以及未来对更多的XAML 2006和2009特性的支持。Silverlight依然需要一个轻量级的运行时,因此微软采取逐步递进而不是大跃进的方式来增加特性。

到底通过什么可以让Silverlight使用统一的XAML解析器呢?答案就是之前提到的IXamlSchemaContextProvider。通过创建一个Silverlight可以接受的特定于XAML子集的一个schema context,工具就无需对Silverlight和基于WPF的XAML之间的差别进行硬编码了。据说Expression Blend团队对这个功能尤为感兴趣。

查看英文原文:.NET 4.0 Brings XAML 2009, but Not for WPF Users

译者 张龙 热衷于编程,乐于分享,对新技术有强烈的探索欲,对Java轻量级框架有一定研究。

第二行有错 发表人 刘江 图灵 发表于
译后请仔细检查 发表人 Sun Peng 发表于
汗,这翻译的 发表人 wei shuwei 发表于
Re: 汗,这翻译的 发表人 张 龙 发表于
谢谢刘老师和各位 发表人 张 龙 发表于
  1. 返回顶部

    第二行有错

    发表人 刘江 图灵

    “一个针对Windows Workflow,另一个针对Windows Workflow”?

  2. 返回顶部

    译后请仔细检查

    发表人 Sun Peng

    one for Windows Workflow and another for Windows Presentation Foundation

  3. 返回顶部

    汗,这翻译的

    发表人 wei shuwei

    标题.NET 4.0 Brings XAML 2009, but Not for WPF Users恐怕应该翻译成“.NET 4.0引入XAML 2009,不仅仅是面对WPF用户吧”,这翻译水平实在是无法恭维啊,还有旁边这个仁兄指出的错误,莫非这翻译完,自己就没审查一遍么

  4. 返回顶部

    谢谢刘老师和各位

    发表人 张 龙

    这篇新闻是我翻译的,很抱歉校验不严格,现在把大家指出的疏漏给纠正了,谢谢大家。

  5. 返回顶部

    Re: 汗,这翻译的

    发表人 张 龙

    标题我认为翻译没有问题,因为WPF解析器的重写需要大量时间,因此微软并不打算这么做。