日期:2021-08-06 10:01 浏览量:5326
在准备这份材料时,我们考虑了架构类型的各个方面,以确定每种架构类型的优缺点。接下来,我剖析了模块化架构的替代方案,以增加讨论的多样性和深度。最后,我提出了总结性意见,以更好地理解我们的发现并提供相关建议。
IT 领域在开发移动应用程序的架构选择上。已经从单体方法向微服务的转变。然而,模块化方法已成为具有四种底层类型的优越替代方案,即 MVC、MVP、MVVM 和 Viper 移动应用程序开发。
关于架构类型的决定通常取决于开发人员的个人经验。在这里,我想阐明各种类型的架构之间的差异,特别是作为一种有前途的替代方案。
要考虑的架构的核心方面
架构为任何项目提供了强大的基础,因为它会影响其进一步的开发潜力和可靠性。架构作为以下项目的初始基础,确定其结构、可扩展性、维护效率和规模。已完成工作的可靠性和寿命决定了其质量和后续维护效率。单体式方法是最初的架构形式。本质上,这样的系统只有一个部署单元,这意味着更高的依赖性和复杂性。
通过将单个复杂流程分解为更小的组件,微服务成为一种自然的反应。然而,随着时间的推移,很明显,维护微服务方法成本高昂并且需要过多的资源。此时,模块化架构通过成为单体方法和微服务之间的过渡阶段而进入框架。
移动应用程序开发继续存在于一个没有明确指导或通用规则的领域。这种状况的形成部分是因为每个特定项目的独特需求和要求。因此,在为 iOS 和 Android 开发应用程序时考虑特定因素至关重要:
项目类型
操作系统
SDK 和工具集
云技术
数据库和服务器基础设施
数据格式化
扩展计划
第三方服务
导航的复杂性
用户界面/用户体验
内容
预算和时间限制
团队技能水平
优质应用架构的特征
可以列出开发良好的应用程序架构的几个特定品质,包括:
可靠性——定义显示代码部分相互交互的特征,消除应用程序中的不稳定性和不一致。
可扩展性——架构的灵活性反映了其增长和调整的潜力。计划更改和新功能以及以新操作系统和库的形式进行改进是很自然的。
关注点分离——实体应该在代码中保持分离,以确保它们的重复使用、易于调试,以及在不影响系统中其他组件的情况下隔离频繁更改的组件。
可测试性——架构应该支持单独测试用例和功能,以避免运行时出现任何阻止长时间修复的问题。此外,QA 将获得单独测试功能和编写测试用例的能力。
维护效率——通过防止超支和过度的资源分配来优化成本。
易于使用- 有助于在编写和阅读方面简化代码。
关键的模块化架构类型
MVC、MVP、MVVM 和 Viper 是主要的移动应用程序开发类型,具有单独的特定使用变化子树。可以选择单一类型或两种或多种的混合。在做出选择之前,重要的是在细节和特定应用案例方面对它们进行比较。
一、MVC
第一种类型是移动应用程序开发中最常用的 MVC 或模型-视图-控制器排名。
MVC 支持创建具有简单内容、全面导航逻辑、统一用户体验以及标准化 UI 设计的基本跨平台应用程序。任务实现通常遵循从加载到显示的模式,中间没有额外的步骤或阶段。
使用 MVC 的原因通常包括需要加速开发过程和/或提供直接的简单流程。它在创建普通客户端/服务器应用程序和处理简单数据方面也是可行的。MVC 在获取未格式化的数据结果、创建对 SEO 友好的平台以及管理屏幕上的单向指令流时非常有效。
二、MVVM
MVVM 或模型-视图-视图-模型根据其具体情况和应用程序能力在其使用频率上排名第二。
将 UI 逻辑与业务逻辑分离的可能性是 MVVM 与 MVC 之间的主要区别。这种改变允许实现更复杂的功能任务,并为用户与移动应用程序提供额外的动作和交互选择。由于测试的业务逻辑与 UI 合并分离,自动测试可用于实施。
开发人员通常将 MVVM 用于更高复杂性的应用程序,该应用程序具有更通用的模式特性。因此,MVVM 对于希望在短期内扩展功能的小型项目特别有效。
三、MVP
第三种模块化架构是与 MVC 类型并行使用的 MVP 或模型-视图-展示器。
数据显示和用户与应用程序交互的差异决定了 MVVM 和 MVP 之间的选择。模型和视图是 MVP 类型唯一可用的测试工具。
如果应用程序内的 UI 组件集有限且导航流简单,则开发人员会使用 MVP。
四、Viper
VIPER 或 View、Interactor、Presenter、Entity 和 Router 模型是一种模块化架构或用于实施长期项目的模式。在这种架构上开发应用程序的过程需要更长的启动时间,因为它偏向于纯粹的单体类型。
VIPER 支持干净的代码想法。它需要对编程领域有深入的了解和理解。这种架构模式提供了良好的测试覆盖率、新功能实现的隔离以及责任区域的依赖性。具有此架构的项目需要 2 个或更多开发人员来构建跨平台移动应用程序。
具有特定技术要求的长期项目受益于使用 Viper。
模块化架构的好处
模块化架构提供了几个基本原则,这些原则可以转化为开发人员的利益:
强封装——通过隐藏组件内的实现细节来确保不同部分之间的低耦合。该团队获得了在分离的系统部件上单独工作的能力。
显式依赖——提供不同组件的强大表达和验证,允许它们一起工作。
定义良好的接口– 组件之间稳定且定义良好的 API,可以用实现替换组件
总结:
模块化架构提供了一系列用于开发移动应用程序的工具。四种讨论的模块化架构类型,即 MVC、MVVM、MVP 和 Viper,都具有适合各自情况的细节和应用。较小的项目受益于 MVC 替代方案,因为它提供了简单的内容、UI 和导航。MVVM 和 MVP 更适合大型项目。两者之间的区别源于数据显示和 UI 上的负载。
Viper 适用于性质较长的大型项目以及需要开发自定义应用程序的项目。模块化架构通过利用整体方法作为基础提供微服务的强大替代方案,但隔离部分以确保独立性和灵活性。
开发人员在对每个项目进行单独分析后,根据具体情况做出架构选择。这样的选择依赖于每个架构类型和子类型的特性。对项目的清晰理解以及将其投射到开发过程中的能力决定了架构的类型。