NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

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

  • 2009-12-06
  • 本文字数:1204 字

    阅读完需:约 4 分钟

在 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

2009-12-06 10:281611
用户头像

发布了 88 篇内容, 共 258.6 次阅读, 收获喜欢 8 次。

关注

评论

发布
暂无评论
发现更多内容

淘宝商品详情API接口封装和解析

tbapi

淘宝商品详情数据接口 淘宝商品详情解析

聊聊几个最热门的前端框架

伤感汤姆布利柏

多线程系列(一) -线程技术入门知识讲解

快乐非自愿限量之名

Java 多线程 编程开发

跨界协作:借助gRPC实现Python数据分析能力的共享

不在线第一只蜗牛

Python gRPC RPC

如何正确编写代码注释:简易指南

Liam

程序员 前端 后端 代码 代码注释

探索AI视频生成新纪元:文生视频Sora VS RunwayML、Pika及StableVideo——谁将引领未来

汀丶人工智能

大模型 Pika sora 文生视频 Runway

RRAM机制、材料及其在神经形态计算中的应用

申公豹

存内计算

极速提升软件测试效率:揭秘Web自动化三大等待技巧

测试人

软件测试 自动化测试 测试开发

低代码,提高软件开发效率,协同办公更高效

高端章鱼哥

低代码

PolarDB-X的XPlan索引选择

阿里云数据库开源

数据库 阿里云 索引 polarDB PolarDB-X

扫码即可快速协作:草料二维码底部协作面板功能详解

草料二维码

下一代Edge AI的应用初探

这我可不懂

人工智能 AI

鸿蒙5.0发布时间已定!移动开发加速器如何寻得?

Geek_2305a8

服务运行时动态挂载JavaAgent和插件——Sermant热插拔能力解析

华为云开源

开源 微服务治理 字节码增强

re:invent 2023 Amazon Q 初体验

亚马逊云科技 (Amazon Web Services)

re:Invent 亚马逊云科技 Amazon Q

Web自动化三种等待方式,一篇文章教会你

霍格沃兹测试开发学社

运维工作新时代:自主编码实现运维自动化的转型之旅

京东零售技术

运维 自动化运维

为什么老有人想让我们“程序员”失业?

互联网工科生

程序员 开发工具

适合tiktok运营的云手机需要满足什么条件?

Ogcloud

云手机 海外云手机 tiktok云手机 Tik Tok

一条龙服务利润新“玩”法

IoTOS

物联网 IoT eSIM安全 java 技术提升

从零开始的 dbt 入门教程 (dbt core 开发进阶篇)

不在线第一只蜗牛

软件开发 项目开发 dbt

小程序技术实践:如何快速开发适配鸿蒙的App

Geek_2305a8

揭开华为云ADN提高网络质量的秘密

华为云开发者联盟

开发 网络 华为云 华为云开发者联盟 华为云DTSE

编写高效的代码,你应该了解Array、Memory、ReadOnlySequence

EquatorCoco

编程语言 代码 编程技巧

项目开发常用的技术栈有哪些?

这我可不懂

软件开发 低代码 前端框架

.NET 4.0引入XAML 2009,但并非面向WPF用户_.NET_Jonathan Allen_InfoQ精选文章