LinkedIn 最近发布了如何通过实施客户端 Messenger SDK 显着提高开发效率。使用 SDK 可以将数千行代码抽象到共享库中,从而降低跨多个应用程序的代码维护成本。在一个案例中,新的 SDK 在构建新的 LinkedIn 体验时为开发人员节省了 40 多个星期的工作量。
LinkedIn 高级工程师Michele Ursino和 LinkedIn 工程负责人Joe Xue解释了 SDK 如何提高生产力:
我们的 Messenger SDK 将数千行代码提取到共享库中,从而降低了多个应用程序的代码维护成本,从而显着提高了开发人员的工作效率。在某些情况下,我们实现了代码行数减少 10 倍,从 3,000 行以上减少到几百行。结果是,开发人员现在可以在几周内创建新的消息传递体验,而不是几个月或几个季度。
Ursino 和 Xue 声称,通过在 LinkedIn 的消息传递体验中创建一个通用的前端平台,他们已经证明了一个其他人可以复制其他核心功能的模型:
像 LinkedIn 这样拥有多个大型应用程序的组织应该重新考虑他们构建应用程序的方法。每个应用程序不是一个独立的实体,它可以是构建在可重用平台库之上的薄层,根据需要将各种技术支柱的高级功能一直暴露到用户界面。
LinkedIn在 2020 年中期重建了其消息传递体验。然而,Ursino 和 Xue 解释说,“在运行 LinkedIn 产品的设备上实现完整的消息传递可靠性和功能是一项复杂的任务,需要大量工作和对许多细节的仔细关注。” 为了确保最大程度的一致性和可靠性,LinkedIn 扩展了消息传递平台,以包括在客户端设备和前端 API 中管理消息传递数据。LinkedIn 的消息传递团队将所有消息传递功能打包到一个功能齐全的数据层 SDK 中,以解决客户端应用程序中消息传递数据管理的复杂性。
LinkedIn 将新的 SDK 分为两种类型的库:API 库(“messenger-api”),用于在应用程序 API 中集成消息传递,以及客户端库(messenger-data),用于在设备上本地表示邮箱。
API 库具有三个功能:将GraphQL中的请求从客户端桥接到后端消息传递平台基础设施,允许主机 API 自定义消息传递 API 行为,并使其他系统能够使用 GraphQL 来装饰消息传递数据。它对来自其他系统的消息数据进行错误检查,并公开一个 GraphQL 模式,其中包含每个平台上的客户端 SDK 库用于获取信息的查询。该架构允许主机 API 代码在每个 API 请求生命周期中自定义从后端消息平台到前端数据的消息数据转换。
客户端库为消息传递实现事件驱动数据层 (EDDL),在客户端设备上提供邮箱数据的最新表示,并将其与后端的实际邮箱数据同步。这些库旨在确保最大的消息传递可靠性和应用程序开发人员对邮箱数据的轻松访问。他们还采用反应式方法来支持设备对话和消息的快速呈现和屏幕更新。他们会立即将任何数据更改通知主机应用程序代码,以允许进行必要的 UI 更新。
LinkedIn 已将其旗舰应用程序完全迁移到 Messenger SDK 以实现所有消息传递功能,从而在所有客户端平台上提供一致且可靠的消息传递体验。该 SDK 带来了跨平台的功能对等、现代化的代码库、更高的稳定性和可靠性,并提高了开发人员的工作效率。关于作者,Eran Stiller 是澳大利亚墨尔本的首席软件架构师。作为一名经验丰富的软件架构师和首席技术官,Eran 设计、实施和审查了跨多个业务领域的各种软件解决方案。Eran 在软件开发领域拥有多年经验,并且拥有公开演讲和社区贡献的记录。微软自 2018 年起授予他微软区域总监 (MRD) 称号,并于 2016 年至 2022 年间授予他微软 Azure 最有价值专家 (MVP) 称号。