硬核干货——《中小企业 AI 实战指南》免费下载! 了解详情
写点什么

Gerald Versluis 访谈:Xamarin 社区工具包的现状和未来

作者:Almir Vuk,Gerald Versluis

  • 2021-10-29
  • 本文字数:3127 字

    阅读完需:约 10 分钟

Gerald Versluis访谈:Xamarin社区工具包的现状和未来

Xamarin 社区工具包是一个使用 Xamarin.Forms 进行移动开发的可重用的元素集,包括动画、行为、转换器、效果和辅助工具。它简化了在使用 Xamarin.Forms 构建 iOS、Android、macOS、WPF 和通用 Windows 平台(UWP)应用程序时常见的开发任务。对于新的或现有的 Xamarin.Forms 项目,Xamarin 社区工具包可以通过 Visual Studio NuGet 获得。


由于 Xamarin.Forms 正在演变成.NET MAUI,Xamarin 社区工具包(XCT)也在为过渡做准备。InfoQ 采访了 Gerald Versluis。他是一位来自荷兰的微软软件工程师。他是微软的高级软件工程师,是 Xamarin 社区工具包开发和维护团队的核心一员。在这次采访中,我们探讨了 XCT、向 MAUI 的过渡以及他们未来的路线图。


InfoQ:您希望看到 XCT 未来包含哪些特性?


Gerald Versluis:现在有很多很棒的控件和库都是由社区推动的,都是隐藏的宝藏,如果能把其中一部分添加到我们的小工具包里,那就太好了。我认为,对于 Xamarin.Forms 和.NET MAUI 生态系统来说,在控件套件方面,仍有很大的改进空间。很多人都希望能有 data grid 或 autosuggest 之类的控件。因此,我们要么自己去创建这些东西,要么我们可以询问现有库的维护者是否愿意与我们合作并将其添加到工具包中。


这对大家都有利:维护者不必承担单独维护一个库的负担,库不再那么分散,它将被添加到一个活跃的、由微软支持的、更知名的库中。话虽如此,第三方供应商的控制套件做得很好,我们很难与之相媲美,但它们通常是付费的,所以并不适合所有人。这样,我们就多了选择,每个人都可以使用他们想要的控件。


但也不止于此。我认为,工具包的一个好处是,我们收集了很多人们正在使用的转换器。如果你使用过 Xamarin.Forms,你可能知道至少有一个转换器是你在每个项目中都需要的。但你没有把它封装在一个库中,因为它太小了,你一次又一次地复制和粘贴它。也许你会在一个项目中对它进行调整,突然间你就有了多个版本。将这些东西集中在工具包中,我们会让维护工作变得更容易,你只需把它放入这个库,这个库可以为你提供 Xamarin.Forms 的一站式服务。我们希望能在.NET MAUI 上继续这样做。


InfoQ:.NET MANI 社区工具包已在实施,那 Xamarin 社区工具包的未来有什么规划?


Versluis:我们在 Xamarin 社区工具包(XCT)中所做的一切,在.NET MAUI 社区(MCT)工具包中都需要进行(重新)评估。因为离.NET MAUI 的发布越来越近了,我们在引入新特性时会越来越谨慎。


对于 Xamarin.Forms 以及.NET MAUI,我们大致遵循同样的路径。XCT 和 Forms 一样,目前将主要是接收 Bug 修复和小的服务改进。同时,我们正在为 MCT 制定计划,看看我们保留哪些特性,放弃哪些特性。

实际上,这意味着我们将确保 XCT 可以继续使用 Xamarin.Forms,并且可以用于 iOS、Android 和 UWP 的新版本,但不会增加新特性。当对 Forms 的支持结束时,对 XCT 的支持也将结束。


回到可能被 MCT 放弃的特性,不用担心!我们还有一个 XCT 的兼容版本.NET MAUI Compat。如果你现在对.NET MAUI 有所了解,你就知道你可以启用一个兼容层,这样你的 Xamarin.Forms 渲染器等仍然可以在.NET MAUI 中使用,直到你有时间按照新的架构重写它们。


XCT .NET MAUI Compat 版本将拥有 XCT 的一切,但与.NET MAUI 兼容。因此,我们对每种情况都有解决方案,你永远不会被迫放弃今天已在使用的任何功能。


InfoQ:现在,我们有了两个社区工具包,您觉得它们应该变成一个吗?


Versluis:随着向.NET MAUI 社区工具包的迁移,实际上,它们某种程度上正在变成一个。对于其他工具包,最值得注意的是 Windows 社区工具包。从 Xamarin 社区工具包开始,我们就一直与他们保持着密切的联系,但在那时,比较难形成合力。


现在,随着工具包开始从头重写,我们获得了一个独一无二的机会,与 Windows 社区工具包开展了更紧密地合作。这意味着我们有了一个统一的名称:CommunityToolkit.Maui 和 CommunityToolkit.Windows,我们共享一个 GitHub 组织,我们所有的代码都在这里,只要有可能,我们就会分享代码,避免重复工作。


他们会不会成为一个很大的库?我认为不会如此。不会比我刚才描述的多。对于这一点,我认为最好是了解一下不同的软件开发工具包(SDK),以及它们如何相互配合。Windows 社区工具包(WCT)针对的是 UWP,或者说是 Windows。.NET MAUI 针对的是 UWP,但也包括 iOS、Android、macOS 等等。因此,举例来说,在控件方面,这将意味着我们必须匹配 WCT 中现有的每一个控件。它们已经有了很多控件,但也有很多控件在桌面上运行得非常好,在移动端上却不那么好。


除了控件之外,WCT 还包含了 MvvmLight,并在 CommunityToolkit.Mvvm 中做了他们自己的演化,这很棒!由于 Windows 和.NET MAUI 通过 XAML 共享很多相同的概念,我们现在可以在两个工具包中共享 MVVM 框架。这样做的同时,我们从我们的工具包中删除了一些概念,这些概念让我们接近于自己实现一个 MVVM 框架,这是我们不想做的。现在,我们可以把我们的 ObservableCollection 改进和其他东西从我们的工具包中拿出来,放到 CommunityToolkit.Mvvm 包中。这样一来,那些对 MVVM 不感兴趣的人就不会获取到他们不使用的代码,但仍然可以非常容易地添加它。


单个大库在依赖性方面也有很大的缺点。特别是在 Android 上,不同的控件存在于不同的 Android 包中。把所有东西都放在一个库里意味着人们会有大量他们可能永远都不会使用的依赖。这是我们在 XCT 和 MCT 中都努力达成的一种平衡。


我们现在的组织方式使我们能够真正地混搭。我们可以在可能的情况下共享代码,也可以根据需要使用.NET MAUI 和 Windows 专用的代码,并且未来有望扩展到 CommunityToolkit 家族...CommunityToolkit.Blazor?CommunityToolkit.WinForms?谁知道呢!


InfoQ:现在又引入了 MAUI Essentials,那么哪些特性将进入社区工具包,哪些特性将进入 Essentials,是根据什么策略呢?


Versluis:我们在这方面没有任何官方协议或准则。但是看看 Essentials 有什么,Toolkit 又有什么,它们之间的区别就很明显了。这一切都源于:工具包对 Xamarin.Forms 有硬性依赖,而 Essentials 则没有。你可以在 Xamarin.Android 或 Xamarin.iOS 项目中使用 Essentials 的所有 API,如果你想那样做的话。它基本上是在原生 API 上提供了一个抽象层,使它们更偏向于.NET 风格。


另外一点就是,工具包有很多的 UI 特性。无论是 XAML 支持,还是现有的完备的控件。Essentials 没有显示任何 UI 的特性。至少它们没有自己的用户界面。如果要显示任何 UI,那也是来自它所运行的操作系统。Essentials 提供的是访问传感器、媒体等与用户界面无关的功能。


不过,也难免会有一个灰色地带,存在一些重叠,但 Essentials、.NET MAUI 和 Toolkit 的团队彼此挨得很近,所以我们可以非常快速、非常容易地把事情理清。


InfoQ:将来的话,在.NET MAUI 社区工具中实现的所有新特性都会在 Xamarin 社区工具包中实现吗?


Versluis:如果你的意思是我们是否有计划把新功能从 MCT 移植回 XCT,那么答案将非常简单:不会。如前所述,XCT 将与 Xamarin.Forms 遵循相同的路径。真正的 "开发 "停止了,我们现在专注于修复 Bug 以及维护,从而保证 XCT 与 Xamarin.Forms 以及运行它们的操作系统相兼容,所以,你想用多长时间都可以,但不会有新东西加入了。


所有新开发的内容都将进入.NET MAUI 社区工具包。


嘉宾简介:


Gerald Versluis 是微软 Xamarin.Forms/.NET MAUI 团队的一名软件工程师。他有多年使用 Azure、ASP.NET、DevOps、Xamarin 和其他.NET 技术的经验,他参与过许多不同的项目,并一直在构建多个真实世界的应用程序和解决方案。他不仅喜欢写代码,而且还热衷于传播知识——当然,在这个过程中他也有所收获。在业余时间,Gerald 会参加演讲,提供(视频)培训课程,撰写博客和文章,在 Stack Overflow 上回答问题,并为开源项目做贡献。


原文链接

Present and Future of Xamarin Community Toolkit: Q&A with Gerald Versluis

2021-10-29 14:5313301

评论

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

怎么借助Camtasia制作回忆录

淋雨

Camtasia 录屏 luping

2021,用「创新」重新定义ToB

ToB行业头条

【安全漏洞】利用CodeQL分析并挖掘Log4j漏洞

H

网络安全 信息安全 漏洞

Spring框架基础知识(02)

海拥(haiyong.site)

28天写作 12月日更

NFG定期赚币专场在虎符开启 APY高达1200%

区块链前沿News

Hoo虎符 虎符交易所

物业资产管理系统解决方案

低代码小观

低代码 企业管理 资产管理 CRM CRM系统

Apache APISIX Dashboard 未授权访问漏洞公告(CVE-2021-45232)

API7.ai 技术团队

漏洞修复 CVE Apache APISIX

[架构实战营] 模块八作业

张祥

架构实战营

模块八

侠客行

「架构实战营」

一套架构框架如何满足流批数据质量监控

字节跳动数据平台

大数据 字节跳动 数据质量

2022 年第一场云原生技术实践营开启报名

阿里巴巴云原生

阿里云 云原生 线下活动 布道师 实践营

你只会用 split?试试 StringTokenizer,性能可以快 4 倍!!

CRMEB

大凉山的新衣,产业AI的未来

脑极体

2021年末28天写作营总结

mtfelix

28天写作

Presto 在字节跳动的内部实践与优化(优化篇)

字节跳动数据平台

大数据 字节跳动 presto

Go语言国际化 i18n

xcbeyond

golang 28天写作 i18n 12月日更

数字中国建设再提速,智慧金融发展如何跑出“加速度”?

百度大脑

人工智能 数字化 智能化

百度智能云开物秀出全年成绩,发布和升级五大新产品

百度大脑

人工智能 百度

httprouter源码刨析

王博

模块三作业

cqyanbo

网络安全审计之CMS代码审计

网络安全学海

黑客 网络安全 信息安全 渗透测试 代码审计

1.6(下周四)直播 | 观测云实践学堂03期:K8S太复杂,可观测实践一筹莫展?全新K8S实践干货直播间等你!

观测云

直播

28天写作总结

wood

28天写作

在字节,大规模埋点数据治理这么做!

字节跳动数据平台

大数据 字节跳动 埋点 流量 埋点治理

LabVIEW图像灰度分析与变换(基础篇—4)

不脱发的程序猿

机器视觉 图像处理 LabVIEW 图像灰度分析与变换

云原生 Serverless Database 使用体验

阿里巴巴云原生

阿里云 Serverless 云原生 弹性 表格存储

外包学生管理系统架构文档

Sindorei

「架构实战营」

恒源云(GPUSHARE)_[SimCSE]:对比学习,只需要 Dropout?

恒源云

深度学习

面试被问spring ioc,这样说让面试官眼前一亮(1)

公众号:程序猿成神之路

spring 5

Presto 在字节跳动的内部实践与优化(实践篇)

字节跳动数据平台

大数据 字节跳动 presto

Java 数据持久化系列之JDBC

程序员历小冰

数据库 持久化 28天写作 12月日更

Gerald Versluis访谈:Xamarin社区工具包的现状和未来_语言 & 开发_InfoQ精选文章