BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

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

| 作者 Jonathan Allen 关注 595 他的粉丝 ,译者 张龙 关注 14 他的粉丝 发布于 2009年12月7日. 估计阅读时间: 4 分钟 | QCon上海2018 关注大数据平台技术选型、搭建、系统迁移和优化的经验。

在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

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

第二行有错 by 刘江 图灵

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

译后请仔细检查 by Sun Peng

one for Windows Workflow and another for Windows Presentation Foundation

汗,这翻译的 by wei shuwei

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

谢谢刘老师和各位 by 龙 张

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

Re: 汗,这翻译的 by 龙 张

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

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

5 讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT