生成式AI领域的最新成果都在这里!抢 QCon 展区门票 了解详情
写点什么

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

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

关注

评论

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

Flowable 流程部署与删除

江南一点雨

Java springboot flowable

一台“厉害”的打印机

华为云开发者联盟

云计算 后端 物联网 企业号九月金秋榜

Demo Day直播 | 成长计划解决方案学生挑战赛一等奖即将揭晓!

OpenHarmony开发者

Open Harmony

对于火热的MLOps的一些冷静观察

Baihai IDP

人工智能 机器学习 AI MLOps

阿里大哥手把手教你从零到一搭建Spring Cloud Alibaba!太强了

Geek_0c76c3

Java 数据库 开源 架构 面经

测试人生 | 00后0经验应届毕业生拿下2线城市15W offer,好励志~

霍格沃兹测试开发学社

java培训学习应该注意什么?

小谷哥

交付有价值的产品,先澄清用户故事吧!

敏捷开发

产品 项目管理 敏捷开发 软件开发 用户故事

如何通过C#/VB.NET代码将Excel工作表拆分为单独的文件

在下毛毛雨

C# .net Excel 拆分

幂等设计详解

京东科技开发者

数据库 系统架构 幂等 研发 幂等设计

深圳大数据培训哪家教的好

小谷哥

阿里顶配版 Spring 全家桶高级笔记+学习路线图+硬核资料库,跪着啃完了。。。

Geek_0c76c3

Java 数据库 开源 程序员 架构

轻量级工作流引擎的设计与实现

京东科技开发者

工作流 流程 工作流引擎 迭代 轻量级工作流引擎

开发者有话说|我的前端开发感悟

国服第二切图仔

个人成长

大数据开发培训周期和方法

小谷哥

ESP32-C3入门教程 网络 篇(三、 MQTT 协议基础介绍及测试)

矜辰所致

mqtt ESP32-C3 9月月更

面试 | 互联网大厂测试开发岗位会问哪些问题?

霍格沃兹测试开发学社

技术分享 | Web自动化之显式等待与隐式等待

霍格沃兹测试开发学社

测试人生 | 疫情之下,1个月内涨薪50%拿下亿级流量金融上市公司新 offer,我柠檬了~

霍格沃兹测试开发学社

前端线下培训学习适合哪些人群

小谷哥

谷歌也开始裁员!谷歌CEO说出理由让人惊叹

雨果

裁员 谷歌 互联网裁员

HMS Core上新啦!

HMS Core

HMS Core

LP单双币双池挖矿dapp系统开发技术详情

开发微hkkf5566

测试面试题集锦(四)| Linux 与 Python 编程篇(附答案)

霍格沃兹测试开发学社

100 行代码在微信公众号里集成地图搜索功能

Jerry Wang

html 微信 web开发 微信开发 9月月更

阿里云EMAS|App隐私合规“免费”自动化检测

移动研发平台EMAS

阿里云 移动测试 隐私合规 移动研发 App检测

HUE部署

峥岳

hue 安装部署 9月月更

IDC:云效产品能力No.1,领跑中国DevOps市场

阿里云云效

DevOps 数字化 产品研发 DevOps工具链

Java面试题大全(整理版)1000+面试题附答案详解最全面看完稳了

钟奕礼

Java 面试 java; Java 面试题

web前端培训机构怎么选择比较好呢

小谷哥

美团 3 面 (Java 后台):NIO+BIO+Zookeeper+ 线程池 +Redis+kafka

钟奕礼

Java 面试 java;

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