业务逻辑在哪里?

ryu*_*ice 12 business-logic ruby-on-rails

我是一个ASP.NET MVC开发人员,刚开始我的第一个关于rails的大项目,但我很困惑,因为我把业务逻辑放在哪里?在ASP.NET上我创建了一个包含处理业务逻辑的服务(域驱动设计)的库,我听说rails使用了胖模型瘦控制器的概念,但我在ASP.NET中有一些项目,它们将所有逻辑添加到控制器会造成很大的混乱,还有其他方法吗?

Jes*_*ott 13

使用FatModels和SkinnyControllers的概念.您的模型应该知道它们的行为方式和应该做的事情.

当您的模型太胖时,将它们提取到可重复使用的模块中并将它们包含在您的模块中.

您可以使用RSpec(或test/unit或shoulda)轻松测试模型的行为.然后,您可以使用Cucumber测试应用程序的行为是否正确.

  • 嗨未来的读者!以上内容是有道理的,而是让您的模型保持肥胖,请查看http://blog.codeclimate.com/blog/2012/10/17/7-ways-to-decompose-fat-activerecord-models/ (4认同)

Rya*_*ery 8

"业务逻辑"或某些人可能称之为"域逻辑"并不属于Rails和/或.NET MVC项目附近的任何地方.Rails和MVC应该依赖于你的域,而不是相反.我建议您阅读杰弗里·巴勒莫的洋葱建筑,或者观看罗伯特·马丁的"建筑失落的岁月".(无论如何,我认为那是那个话题).可能有更多的资源,但你会感谢以后将Rails和.NET MVC视为第三方框架,而不是应用程序的主要部分.

  • 我已经看过这个话题,并且多次听过这个想法,但我从未见过如何实现这一点的具体例子或演示.作为一个新手,它原则上是有道理的,但我无法真正概念化如何将其付诸实践.你有一个跟踪我可以看到的这种做法的rails应用程序的例子,或者有一个更具体的例子的文章? (7认同)

小智 5

我认为这篇博客文章很好地概述了将域驱动设计与 rails 框架结合的策略:http : //www.smashingboxes.com/domain-logic-in-rails/

TL; 博士

将经典 Rails 模型重构为存储库,并在控制器中使用外观层与域模型进行交互。

我自己也在为此苦苦挣扎,尽管胖控制器模式似乎占了上风,但软件中的任何“胖”似乎都是一种气味,违反了单一职责。