阿里、蚂蚁、晟腾、中科加禾精彩分享 AI 基础设施洞见,现购票可享受 9 折优惠 |AICon 了解详情
写点什么

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:5310340

评论

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

最壕逆天改命:18名Java程序员凭阿里P8笔记,同时斩获一线大厂offer

Java架构师迁哥

2021,你还在写“赤裸裸”的API吗?

保安小王分享:四面字节跳动,终拿Offer,只有努力,方能成功

Abp太重了?轻量化Abp框架

Patronum

学习 程序员 架构 框架 Abp

看完这篇文章,你也可以手写MyBatis部分源码(JDBC)

Java虚拟机之CMS垃圾收集器

Lazada首届技术开放日开麦在即 共享技术创新最佳实践

2021秋招我这样准备,提前批就已经拿到了9个大厂offer

北游学Java

Java 面试 秋招

Unity ML-agents 参数设置解明

行者AI

一夜爆火!完美贴合开发实际!阿里SpringBoot宝典助你面试超神

Java 编程 程序员 架构师 计算机

东京奥运会与网络安全背后的速度博弈!

郑州埃文科技

终于有人把大数据架构讲明白了

百度开发者中心

大数据 最佳实践 方法论 其他

EMQ X Cloud 正式支持 Microsoft Azure 平台,助力企业出海业务

EMQ映云科技

azure 云端 云上数据 emq

【云洲智造】直播间下午4:30准时开播!

浪潮云

工业互联网

文档内容结构化在百度文库的技术探索

百度Geek说

百度 大前端

保洁阿姨分享:腾讯架构师JDK源码笔记,13万字,带你飙向实战

Qunar容器平台网络之道:Calico

Qunar技术沙龙

容器 TCP/IP calico BGP #Kubernetes#

还在用Jenkins?试试Gitlab的CI/CD功能吧,贼带劲!

秒懂 Java 的三种代理模式

模块三作业

NewBranSTONE

架构实战营

银行4.0的AI世界——开启算法力的时代

索信达控股

Redis 关键点思维导图

康斯坦丁

淘宝商城的系统架构,是如何一步步突破“亿”级并发的?

Java架构师迁哥

电脑里的视频被误删了可以用EasyRecovery恢复吗?

淋雨

EasyRecovery 文件恢复 硬盘数据恢复

聊一聊在阿里做了 8 年研发后,我对打造大型工程研发团队的再思考

尔达Erda

开源 云原生 研发管理 PaaS 研发

Linux-通过 liveCD 进入救模式-重装 grub 修复损坏的系统

学神来啦

Linux 运维 linux运维 linux学习

iOS底层面试题(中篇)

程序员 面试 iOS底层

客户端版本热更新

admin

Electron 热替换 客户端 小版本升级 热更新

不收藏你就后悔吧!费了三天才从GitHub上扒下的阿里Java优化笔记

基于 Golang 构建高可扩展的云原生 PaaS(附 PPT 下载)

尔达Erda

开源 云原生 数字化转型 PaaS 数字化

架构训练营模块三作业

晨晨

架构训练营

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