1

我正在从 .NET 驱动的 Web 架构迁移到 ruby​​ on rails 堆栈。我习惯于使用 web 层来渲染带有所需 css/Javascripts 的网页,一个单独的应用程序层负责所有业务逻辑、ORM 和 DAL 层以及一个用于持久性的数据库。

现在如何在rails中翻译?

这些模型似乎完成了业务逻辑、ORM 和数据访问方面的所有工作。那么像 twitter 这样的复杂应用程序是否不使用单独的应用程序层来处理业务逻辑?模型是关于复杂逻辑的一切吗?如果是这样,如果你将来想将服务暴露给其他人,那么将所有内容都作为服务移动是不是很困难?

请稍微了解一下复杂的网络应用程序是如何工作的。

4

2 回答 2

0

Rails 是一个全栈 MVC 框架,它的 M 部分是使用 Active Record 模式构建的。基本上,模型包含持久层和业务逻辑。

我邀请您阅读 EAA 目录以获取更多信息:EAA ActiveRecord

大多数持久性部分都隐藏在框架后面,所以你不应该拥有太多。但是,如果您有复杂的业务逻辑,您可以将模型分成两部分(持久性/业务)。您的 ActiveRecord::Base 类将具有持久性部分,而您的新类将具有业务逻辑。但是如果你这样做了,它就不再是一个 Active Record,而是一个 Datamapper。

说到 Datamapper,ActiveRecord 有一个替代品,称为 DataMapper,但我从未测试过它。数据映射器网站

以后想把服务暴露给别人,把所有东西都作为服务移动是不是很困难?

如果服务意味着 web 服务,那么答案是否定的。您唯一需要做的就是创建一个专用于您的 Web 服务的控制器。大多数时候,人们在他们的应用程序中失去了 DRYness,因为他们在控制器中放置了太多的逻辑,但如果你的模型制作得当,这应该不是问题。

于 2013-06-01T17:37:35.337 回答
0

您可以使用rails_workflow gem构建与模型和控制器分离的复杂业务逻辑。

于 2015-07-06T07:59:44.847 回答