【ArchSummit】如何通过AIOps推动可量化的业务价值增长和效率提升?>>> 了解详情
写点什么

.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:281614
用户头像

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

关注

评论

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

龙蜥社区新增100+家合作伙伴,堡塔、东方通、宝德等头部企业均已加入

OpenAnolis小助手

开源 适配 合作伙伴 龙蜥社区 龙头企业

阿里通过度量把发版过程的不确定变成确定-构建闲鱼版本持续交付管道及度量

阿里云云效

云计算 阿里云 DevOps 云原生 度量

阿里巴巴开源大规模稀疏模型训练/预测引擎DeepRec

阿里云大数据AI技术

机器学习 深度学习 搜索引擎 分布式训练 推荐引擎

Python 提取音乐频谱并可视化,字节面试官

程序媛可鸥

Python 程序员 面试

技术平台&应用开发专题月 | 赋能企业业务快速创新,实现云原生自由

用友BIP

用友 用友iuap

Python-Matplotlib可视化(8),毕业工作5年被裁

程序媛可鸥

Python 程序员 面试

动态卡片:富媒体内容井喷式增长下,新一代移动端动态研发的模式

蚂蚁集团移动开发平台 mPaaS

ios android 前端 mPaaS 卡片技术

JVM自定义类加载器在代码扩展性的实践

vivo互联网技术

JVM java 编程

JSON Schema 实现复杂结构表单数据展示

全象云低代码

前端 低代码 表单 JSON Schema

python下载酷狗音乐上的歌曲,作为一个Python程序员你还不会JetPack

程序媛可鸥

Python 程序员 面试

TSP 平台场景中的 MQTT 主题设计|车联网平台搭建从入门到精通 03

EMQ映云科技

开源 物联网 IoT mqtt emq

带你了解2022两会黑科技:阿里云视频云「AI编辑部3.0」

阿里云视频云

云计算 阿里云 AI 音视频 视频云

产品手册怎么做?用什么软件?

小炮

Python 初学者进阶的九大技能,Python校招面试指南

程序媛可鸥

Python 程序员 面试

Python——Scipy库,熬夜整理华为最新Python笔试题

程序媛可鸥

Python 程序员 面试

云小课|如何实现数据跨链交互?

华为云开发者联盟

区块链 数据 跨链 数据跨链 可信跨链服务

web前端培训React合成事件原理解析

@零度

React web前端开发

ShardingSphere-Proxy 5.0 分库分表(一)

神农写代码

从持续交付到业务创新(上):互联网时代研发效能的核心

阿里云云效

云计算 阿里云 云原生 研发效能 持续交付

iuap助力中国一汽数智化转型

用友BIP

用友 用友iuap

一个数据顾问的成长之路

用友BIP

用友 用友iuap

Python3十大经典错误及解决办法,这操作真香

程序媛可鸥

Python 程序员 面试

科技筑基、高效实战:中科柏诚信云链正当时

联营汇聚

31岁的Python,蝉联年度编程语言排行榜冠军

JackTian

Python 编程 程序员 编程语言 后端

字节跳动流式数据集成基于Flink Checkpoint两阶段提交的实践和优化背景

字节跳动数据平台

大数据 flink 字节跳动 数据集成

Python 实现二叉树前序,中序,后序,三面美团Python岗

程序媛可鸥

Python 程序员 面试

Python 实现数据结构中的的栈,队列,Python面试自我介绍

程序媛可鸥

Python 程序员 面试

6张图为你分析Kafka Producer 消息缓存模型

华为云开发者联盟

kafka 消息 Kafka Producer 消息缓存模型 消息缓存

电路模型和电路定律 (Ⅱ)

謓泽

3月月更

Java培训基础高频面试题八股文分享

@零度

JAVA开发

大数据培训flink8 个高频面试实战题分享

@零度

大数据 flink

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