6

我是一名ASP.NET MVC开发人员,决定学习 Ruby 和 Ruby on Rails。我已经知道一些事情并在 RoR 上创建了一个网站。在ASP.NET MVC上开发,我一直使用三层架构:数据层、业务层和 UI(或表示)层。

尝试在 Ruby on Rails 应用程序中使用这种方法时,我发现没有关于它的信息(或者我可能只是找不到它?)。

也许有人可以建议我如何在 Ruby on Rails 上创建或使用三层架构?

PS 我使用 ruby​​ 1.9.3 和 Ruby on Rails 3.2.3。

4

3 回答 3

5

我建议在制作 RoR 应用程序时遵循 Ruby on Rails (RoR) 风格。Rails 看待 MVC 架构的方式不太适合 Asp.net 3 层架构。

UI(表示层|视图)

这两者遵循相同的逻辑。没有重大差异。

控制器(业务层|控制器)

业务层和控制器都接收来自 UI 的请求并发送回响应。在 Asp.net 中,业务层负责验证和业务逻辑。但在 Rails 中,验证和业务逻辑属于模型。

模型(数据层 | 模型)

Rails 的模型不仅仅是 Asp.net 的数据层。模型处理业务逻辑和验证。数据层和模型负责将数据传输到存储。

当从 Asp.net 迁移到 RoR 时,尽量保持你的控制器纤薄。RoR 对如何构建 Web 应用程序设置了严格的限制。一旦你坚持这些,你就会制作出更专业的 RoR 应用程序。

于 2012-05-28T11:37:54.127 回答
4

Ruby on Rails一个三层 (MVC) 架构。在 Rails 中,数据层称为模型,业务层称为控制器,用户界面层称为视图。

这里有几个很好的起点: rails guidesrails tutorial for rails 3.2

于 2012-05-28T11:16:45.860 回答
4

4年多后,这仍然是一个相关的问题。似乎人们对应用程序层的含义存在混淆。

当您想到 MVC 层时,以前的答案当然是正确的,并且当您将应用程序定义为 3 层(如果它具有适当的模型、视图和控制器)时。当然,Rails 在这个意义上是默认的 3 层,正如其他人所指出的,与 ASP.NET MVC 有显着差异。

但是,我有一种感觉,原来的问题是指事情是如何部署的(我当然可能是错的,但是看这个问题的人可能仍然在寻找这个)。企业应用程序通常需要三层,因为 Web 应用程序(表示)只能与服务(业务逻辑)对话,由于网络级别的限制,以及出于安全原因,服务只能与数据库对话。

在此模型中,前端 Web 应用程序执行安全功能(防止多种类型的攻击,如 CSRF 或 Clickjacking,可能是会话管理等),并呈现从应用程序服务器上的服务读取的任何数据。这些应用程序服务器不能被最终用户直接访问,通常信任 Web 服务器(或不信任,取决于安全模型),并将其数据保存在数据库中,Web 服务器不能直接访问这些数据库。在 Windows 环境中,Web、应用程序和数据库服务器通常位于不同的域中。

正如几乎所有教程中所描述的那样,Rails 同时是一个 Web 和应用程序服务器,它不适合后一种模型,而且关于如何正确地做到这一点确实没有太多可用的资源。然而,尤其是在 Rails 5 中,很容易将 Rails 变成一个适当的服务,用作具有 API 的应用程序服务器(请参阅 API-only Applications Guide),并且还可以创建另一个 Rails 应用程序用于网络(演示)层。不过,您将不得不为自己解决很多事情,从 Web 和应用程序之间的身份验证到从 Web 到应用程序进行服务查询,尤其是现在 ActiveResource 已经退休了。

于 2016-09-03T22:35:09.550 回答