iOS VIPER 交互器最佳实践

iOS VIPER interactor best practice

在iOSVIPER项目中,需要在每个模块中调用远程服务(例如刷新令牌+检查用户登录)。 实现此需求的最佳实践是什么?

在我研究的大多数样本中,他们通常谈论不同的业务逻辑,而不是相同的!

每个人都有自己的毒蛇!! 这是一个常见的架构。每个团队使用不同的方法来使用它。即使对于一个团队,他们也可能因项目而异。我认为您需要在便利性和架构之间找到折衷方案。每个开发人员和每个项目在构建依赖项方面都有自己的最佳实践。 p.s。根据架构,所有与网络/磁盘的通信都来自交互器。它可以用不同的方式组织,这与 VIPER 无关。网络服务的创建或交互器的重用等取决于您.....的愿望)

应用程序的每个内聚部分都应该有一个 VIPER 模块,这对于具有强大的内部内聚力和 VIPER 模块之间相对较小的粘附(例如,彼此的服务接口)是有意义的。几十年来,电信软件架构一直有这样的独立 modules/subsystems,每个都是自己的 VIPER 模块(如果没有在内部分解成几个 VIPER 模块,但让我们跳过它);它被称为 FCAPS:https://en.wikipedia.org/wiki/FCAPS,它显示了一个大型软件系统的截然不同的目的分解成不同的模块:

  • 通过依赖性有向无环图进行故障隔离,以驱动推断哪些异常症状表明出了什么问题
  • 关于如何通过各种可调参数正确配置系统(拒绝禁止的配置设置)的配置设置
  • 对系统操作如何开始、确保连续性和终止可计费事件以产生收入的会计记帐
  • 系统运行如何预测接近系统胁迫或单个组件故障(例如,资源池的成员)的趋势的性能
  • 如何禁止未经授权、未经验证或未资助的系统使用的安全性

这不是划分最宏观的 VIPER 模块的唯一可行方法,但它是 modules/subsystems 最终几乎每个大型软件 system/app 都需要的经过深思熟虑的划分作为管理职责与 system/app 的主要目的是正交的,这当然是它自己的 1 个或多个 VIPER 模块,一个用于 system/app 的每个主要广泛技术成就主题——无论最宏观的用例集合是(例如,创建新东西作为 1 个 VIPER 模块,保留旧东西历史的可检索存档作为另一个 VIPER 模块,从存档中删除 cruft 作为另一个 VIPER 模块,以及等等,其中每一个都可能在这些广泛的保护伞下有相当多的用例)。