4

Web開発を学ぼうとしています。

MVC の概念は (ほとんど) 理解していますが、Spring MVC のように、サーバー側で MVC モデルが使用される理由について混乱しています。サーバー側はモデルとサービスではなく、クライアント側のサービス、ビュー、およびコントローラーではありませんか (AngularJS はそのパターンをクライアント側で明示的にしています)。

MVC モデルがサーバー側の開発にどのように適合するか、または容易にするかについて、私は本当に苦労しています。

4

2 に答える 2

4

MVC は、Web アプリケーション以外にも使用されるパターンです。UI を備えたすべてのアプリは、MVC パターンを使用できます。

ビュー (html、OS のウィンドウ、またはレポートなど) があり、そのビューの動的部分を表すモデルがあるという考えです。次に、入力を処理し、「ビジネス ロジック」を実行してモデルを生成し、それをビューに適用する専用のコントローラーがあります。

たとえば、サーバーでは、次の MVC パターンがある場合があります。

  • コントローラーは HTTP 要求を受け取り、それを処理します。
  • モデルを構築します
  • モデルがビューに適用されて HTML が生成され、それが応答として返されます。

クライアントでも同様です (ただし、Angular の場合は少し異なります)。

  • モデルの決定と操作にはコントローラーが使用されます。
  • 次に、モデルはディレクティブを介してビューにバインドされます。(Angular は実際には MVVM パターンに近いものですが、十分に類似しています)
  • ビューは、ディレクティブを介して同様にモデルにバインドされます。(これがMVVM部分の出番です)。
  • ここでの考え方は、モデルとビューの両方がディレクティブによって最新に保たれるということです。
  • コントローラーには、モデルを操作するための「ビジネス ロジック」が含まれているだけです。

泥のように透明?

心配ない。これだけ知っておいてください:これは単なる一般的なパターンです。「サーバー固有」または「クライアント固有」ではありません。テンプレート化された出力にデータをスクラブする必要がある場合は、どこでも使用できます。


編集:より多くの考え。

サーバー上で JSON (または XML) を提供する Web API の場合、ほとんどの場合、まだ MVC を使用しています。これは、次のことを行っているためです。

  • コントローラーでリクエストを処理します。
  • コントローラーでモデルを構築します。
  • モデルを「ビュー」にレンダリングします。この場合は、モデルを JSON としてシリアル化するビューです。
于 2013-03-05T19:16:06.953 に答える
3

古き良き時代、クライアント側は単なるディスプレイでした。サーバーは、モデルとの通信、ビジネス ロジックの適用、ビューの生成、レンダリングされた静的コンテンツのクライアント (ブラウザー) への送信を担当していました。

Web が成熟するにつれて、これらの責任の一部がサーバーからクライアントに移行しました。現在、サーバー側は多くの場合、RESTful API のような薄いレイヤーであり、"公式" ビジネス ロジック (クライアント上の便利なロジックではなく) を格納し、モデルを格納します。ただし、パフォーマンスとユーザー エクスペリエンスのために、クライアントは独自のモデル レイヤーにモデルのコピーを格納し、必要に応じてサーバーやローカル ストレージと通信し、独自のコントローラーとビュー ロジックを使用して優れたユーザー エクスペリエンスを提供します。

では、MVC は引き続きサーバーに適用されますか? はい!ただ違います。サーバーは、多くの場合、クライアント側アプリケーションが実行される初期ビューを生成し (たとえば、ローカリゼーションまたは国際化を考慮して)、公式モデルを引き続き格納します。しかし、もっと重要なことは、MVC の「ビュー」が変更されたことです。HTML であるサーバー側ビューの代わりに、クライアント アプリケーションがレンダリングするだけでなく、JSON または XML を使用するようになりました。

そのため、機能のために、サーバーでは引き続き MVC を使用します。しかし、優れたユーザー エクスペリエンスを実現するために、クライアント側でも MVC を使用しています。

于 2013-03-05T19:22:34.010 に答える