27

ウィキペディアによると:

MVCは、データベース、ユーザー、およびデータ処理コンポーネントのフロントエンドとバックエンドを提供します。ソフトウェアシステムをフロントエンドとバックエンドに分離することで、開発が簡素化され、メンテナンスが分離されます。

model-view-controllerの原則と、フロントエンドおよびバックエンドの概念との関連性はまだわかりません。データベースにアクセスできるモデルをバックエンドと見なし、ビューをフロントエンドと見なすことができますか?

4

5 に答える 5

54

OK ..最初の用語:

  • フロントエンド-ユーザーに表示される部分です:HTML、CSS、クライアント側のJavascript。それはすべて基本的に「フロントエンド」です。デスクトップアプリケーションでは、フロントエンドはGUIになります。
  • バックエンド-目に見えない部分です。Java、ruby、php、またはその他のサーバーサイドコードであるWebアプリケーション。「どのように」機能するかは「何」に影響を与えないため、解釈またはコンパイルすることができます。

GUIアーキテクチャを読み、MVCパターンを一般的に調査すると、 MVCはバックエンドとフロントエンドの分離に関するものではないことがわかります。特にMVCに着想を得たパターンに関しては、Webアプリケーションに使用します。

MVCおよび関連するパターンの目標は、プレゼンテーションをドメインビジネスロジックから分離することです。

MVCパーツの基本的な責任は次のとおりです。

  • モデル-ビジネスロジック
  • ビュー-プレゼンテーションロジック
  • コントローラ-モデルとビューの状態の変更(ユーザー入力に基づく)

例を見てみましょう:

  • Twitter用の代替クライアントアプリケーション
  • 認証にOAuthを使用
  • ユーザーはさまざまな検索フレーズを入力できます
  • TwitterのRESTAPIを介して情報を取得します
  • データを検証します
  • JSON応答を解析します
  • DOMを操作して情報を表示します

これはすべて、クライアント側のJavaScriptで実行できます。「フロントエンド」を実行するMVCトライアドを持つことができます!同時に、RESTAPIを提供する「バックエンド」はMVCのような構造です。今回のみ、ビューはHTMLではなくJSON応答を生成します。

*結論: MVCパターンはバックエンドとフロントエンドの両方で使用できます。**

ポストスクリプトム

Railsを使用していくつかのアプリケーションを構築しているため、MVCの理解は歪んでいる可能性があります。私がこれを言う理由は、RoRが最初にプロトタイピングフレームワークとして作成されたため(使い捨てコードを生成するためのすべてのスキャフォールディングおよびその他の機能に注意してください)、その起源のために、Railsは実際には非常に貧血のバージョンのMVPを実装しているためです。

ビュー(単純なテンプレートではなく、MVPのパッシブオブジェクトである必要があります)とモデルレイヤー(はい、ORMインスタンスのコレクションではなく、複雑なレイヤーであると想定されています)の両方を弱体化させたため、これを「貧血」と呼びます。

このテーマをよりよく理解するために、2つの出版物を読むことをお勧めします。

2つ目は、パターンの初期定義にできる限り近いものです。それは、「GUIアーキテクチャ」の記事と合わせて、このテーマに関する確固たる基盤を提供するはずです。そして、PoEAAの本(ハードリード、ところで)はあなたにそれを拡張するための文脈を与えるでしょう。

于 2012-06-17T00:01:35.000 に答える
18

たぶん、下の図が役立つでしょう。

MVC               Human language    backend/frontend
---------------   ---------------   ---------------
model          -> data           -> backend
controllers    -> actions        -> backend/frontend (depends on implementation)
views          -> GUI            -> frontend
于 2015-06-02T11:02:00.493 に答える
2
  • ビュー=フロントエンド
  • モデル=バックエンド
  • コントローラ=フロントエンドとバックエンド間の接着剤
于 2012-06-16T20:58:01.750 に答える
1

フロントエンドは、ユーザーに表示されるビューです。バックエンドはコントローラーとモデルです。

于 2012-06-16T20:56:52.667 に答える
1

この場合、バックエンドとは、従来、より深いOSコード、またはユーザーに表示/制御されていないコードを意味します。

フロントエンドは、ユーザーが実際に見ているビューです。

于 2012-06-16T20:59:00.937 に答える