【AICon】硅谷视野+中国实践,汇聚全球顶尖技术的 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:5310483

评论

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

并行文件存储和分布式 NFS 文件存储有何不同

焱融科技

容器 云原生 高性能 文件存储 技术博客

墨奇科技宣布完成 2.5 亿元 B 轮融资

E科讯

快成物流科技 x mPaaS | 小程序容器加持下的技术架构“提质增效”

蚂蚁集团移动开发平台 mPaaS

小程序 移动开发 mPaaS

一张图看懂嵌入式系统组成

不脱发的程序猿

硬件开发 嵌入式系统 嵌入式学习路线

RDBMS与HBase的对比

五分钟学大数据

大数据 HBase 5月日更

阿里架构师478页Java工程师面试知识解析笔记pdf,一份2021年通往阿里的面试指南

Java架构之路

Java 程序员 架构 面试 编程语言

量化策略交易软件,马丁倍投智能交易机器人

2021高级Android笔试总结,Android系列学习进阶视频

欢喜学安卓

android 程序员 面试 移动开发

🚄【Redis 干货领域】帮你完全搞定Sentinel运作原理

洛神灬殇

redis哨兵模式 redis哨兵 redis哨兵集群 redis sentinel 5月日更

不给电脑,我用手机敲命令十分钟完成了zabbix监控,面试官当场下offer

沐风

监控 zabbix

亿级系统的Redis缓存如何设计?

Java架构师迁哥

【LeetCode】将句子排序Java题解

Albert

算法 LeetCode 5月日更

CODING CD + Nginx Ingress 实现蓝绿发布

CODING DevOps

DevOps 敏捷开发 研发管理 CODING 研发团队

打破固有思维(十五)

Changing Lin

5月日更

GitHub标星15k+的Java编程思想最新中文版,肝了一周整理成1539页的PDF文档免费分享!

Java架构之路

Java 程序员 架构 编程语言

This BigData,Hadoop组成及生态

Simon郎

大数据 hdfs YARN hadoop3

融云2021 X-Meetup技术沙龙 探讨音视频技术新方向

融云 RongCloud

国内日志监控分析王者之sls

代码先生

分布式日志 海量数据分析 日志监控分析

拍乐云将亮相 QCon 大会,揭秘音视频“两高一低”体验背后的技术

拍乐云Pano

推特视频怎么保存: 免费下载Twitter视频教程

科技猫

twitter 分享 经验分享 教程 视频处理

多方安全计算:隐私保护集合求交技术

华为云开发者联盟

数据集 PSI 隐私保护集合交集 可信 伪随机函数

云小课|DSC帮您管数据,保障您的云上数据安全

华为云开发者联盟

数据安全 华为云 数据安全中心 云上数据 DSC

CODING 增强安全漏洞扫描能力,助力团队“安全左移”

CODING DevOps

代码扫描 CODING 代码安全

Alibaba技术专家必知必会的Java技术知识点,掌握这些理论+实践+技术是你通往阿里的路

Java架构之路

Java 程序员 架构 面试 编程语言

GitHub开源史上最大规模中文知识图谱

不脱发的程序猿

人工智能 自然语言处理 GitHub 开源 中文知识图谱

uniapp 使用原生子窗体进行视频聊天

anyRTC开发者

uni-app 音视频 WebRTC RTC

从根上理解用户态与内核态

程序猿阿星

系统上下文 用户空间 内核空间 指令集

5G进京 “赶考”记:“占得上、保持稳、体验优、信号好”四道考题,分别打几分?

脑极体

GitHub收藏最高的10个Java练手项目推荐

北游学Java

Java spring 项目实战

2021金三银四Android大厂面试题来袭!高级面试题+解析

欢喜学安卓

android 程序员 面试 移动开发

为Android Studio设置代理,解决经常遇到的编译不通过的问题

寻找生命中的美好

android Android Studio vpn Shadowsocks

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