3

我是 Rails 应用程序的主要开发人员,该应用程序允许客户管理艺术家作品集网站。系统需要四种截然不同的行为类型:

  • 管理员行为,允许登录用户管理其投资组合的内容
  • 投资组合显示行为,将用户的投资组合呈现给一般访问者
  • 转化漏斗行为,显示有关服务的信息并吸引新用户注册
  • 超级管理员行为,向服务所有者显示其他三种行为的统计信息

目前,这四组行为被分解为命名空间控制器——但它们都共享相同的模型。我想知道,由于系统的四个部分几乎不共享任何行为,将应用程序拆分为四个单独的应用程序或引擎是否有任何好处(并将任何共享行为提取到 gems 中。)

例如,处理用户统计数据的系统部分不需要“知道”渲染 YouTube 嵌入到投资组合中,处理显示投资组合的系统部分不需要“知道”A/B测试,处理注册新用户的系统部分除了注册新用户之外不需要“了解”很多其他内容。

此外,我想解决的一个具体问题是,我希望没有经验的团队成员能够为处理注册新用户的网站部分贡献一点代码。如果在站点的该部分中将一两个错误推送到生产环境中,这不会是世界末日,但在显示用户投资组合的系统部分中不允许生产中的错误是非常重要的。

那么,就代码库的可维护性和易读性而言,将这四个组件分成单独的应用程序是否有意义?这样做会在多大程度上简单地将复杂性推入系统的不同层而不消除它?通过创建更清晰解耦的类和模块可以更好地实现这种类型的分离吗?

非常感谢!

4

1 回答 1

2

隔离引擎将实现您允许孤岛代码工作的目标,并且您可以轻松共享所有资源,例如样式表(这可能很重要,因为您仍然提供一项服务)。

安装的引擎也可以实现您的目标,但共享更加困难,因为它似乎最好作为孤立的。

具有许多面向功能的应用程序向一个或多个前端应用程序提供 API 的面向服务的架构可能会起作用。前期工作会更多,但从长远来看,如果您看到整体服务随着时间的推移变得更加复杂,它可能会带来回报。

有趣的选择!

于 2012-06-22T04:34:07.043 回答