4年以上経った今でも、これは関連する質問です。アプリケーション層の意味について、人々が混乱しているようです。
もちろん、MVC層について考えるとき、およびアプリケーションに適切なモデル、ビュー、およびコントローラーがある場合、アプリケーションを3層として定義するとき、以前の答えは正しいです。もちろん、Rails はデフォルトでこの意味で 3 層ですが、他の人が指摘しているように ASP.NET MVC とは大きく異なります。
ただし、元の質問は物事がどのように展開されるかについて言及していると感じています (もちろん私は間違っているかもしれませんが、この質問を見ている人はまだこれを探している可能性があります)。多くの場合、エンタープライズ アプリケーションは、Web アプリケーション (プレゼンテーション) がサービス (ビジネス ロジック) としか通信できず、ネットワーク レベルの制限とセキュリティ上の理由により、データベースとしか通信できないという意味で、3 層である必要があります。
このモデルでは、フロントエンド Web アプリケーションがセキュリティ機能 (CSRF やクリックジャッキング、おそらくセッション管理などのいくつかの種類の攻撃に対する保護) を実行し、アプリケーション サーバー上のサービスから読み取ったデータを提示します。これらのアプリケーション サーバーは、エンドユーザーが直接アクセスすることはできません。多くの場合、Web サーバーを信頼し (セキュリティ モデルによっては信頼しません)、Web サーバーから直接アクセスできないデータベースにデータを保存します。Windows 環境では、Web サーバー、アプリ サーバー、およびデータベース サーバーは通常、異なるドメインにあります。
ほとんどすべてのチュートリアルで説明されているように、Rails は同時に Web サーバーとアプリ サーバーであり、後者のモデルには適合しません。また、これを適切に行う方法について利用できるリソースは実際にはあまりありません。しかし、特に Rails 5 では、Rails を適切なサービスにして、API を使用してアプリケーション サーバーとして使用することは非常に簡単です (API のみのアプリケーション ガイドを参照)。 Web (プレゼンテーション) 層。ただし、Web とアプリ間の認証から、Web からアプリへのサービス クエリの作成まで、特に ActiveResource が廃止された今では、かなり多くのことを自分で解決する必要があります。