Web開発を学ぼうとしています。
MVC の概念は (ほとんど) 理解していますが、Spring MVC のように、サーバー側で MVC モデルが使用される理由について混乱しています。サーバー側はモデルとサービスではなく、クライアント側のサービス、ビュー、およびコントローラーではありませんか (AngularJS はそのパターンをクライアント側で明示的にしています)。
MVC モデルがサーバー側の開発にどのように適合するか、または容易にするかについて、私は本当に苦労しています。
Web開発を学ぼうとしています。
MVC の概念は (ほとんど) 理解していますが、Spring MVC のように、サーバー側で MVC モデルが使用される理由について混乱しています。サーバー側はモデルとサービスではなく、クライアント側のサービス、ビュー、およびコントローラーではありませんか (AngularJS はそのパターンをクライアント側で明示的にしています)。
MVC モデルがサーバー側の開発にどのように適合するか、または容易にするかについて、私は本当に苦労しています。
MVC は、Web アプリケーション以外にも使用されるパターンです。UI を備えたすべてのアプリは、MVC パターンを使用できます。
ビュー (html、OS のウィンドウ、またはレポートなど) があり、そのビューの動的部分を表すモデルがあるという考えです。次に、入力を処理し、「ビジネス ロジック」を実行してモデルを生成し、それをビューに適用する専用のコントローラーがあります。
たとえば、サーバーでは、次の MVC パターンがある場合があります。
クライアントでも同様です (ただし、Angular の場合は少し異なります)。
泥のように透明?
心配ない。これだけ知っておいてください:これは単なる一般的なパターンです。「サーバー固有」または「クライアント固有」ではありません。テンプレート化された出力にデータをスクラブする必要がある場合は、どこでも使用できます。
編集:より多くの考え。
サーバー上で JSON (または XML) を提供する Web API の場合、ほとんどの場合、まだ MVC を使用しています。これは、次のことを行っているためです。
古き良き時代、クライアント側は単なるディスプレイでした。サーバーは、モデルとの通信、ビジネス ロジックの適用、ビューの生成、レンダリングされた静的コンテンツのクライアント (ブラウザー) への送信を担当していました。
Web が成熟するにつれて、これらの責任の一部がサーバーからクライアントに移行しました。現在、サーバー側は多くの場合、RESTful API のような薄いレイヤーであり、"公式" ビジネス ロジック (クライアント上の便利なロジックではなく) を格納し、モデルを格納します。ただし、パフォーマンスとユーザー エクスペリエンスのために、クライアントは独自のモデル レイヤーにモデルのコピーを格納し、必要に応じてサーバーやローカル ストレージと通信し、独自のコントローラーとビュー ロジックを使用して優れたユーザー エクスペリエンスを提供します。
では、MVC は引き続きサーバーに適用されますか? はい!ただ違います。サーバーは、多くの場合、クライアント側アプリケーションが実行される初期ビューを生成し (たとえば、ローカリゼーションまたは国際化を考慮して)、公式モデルを引き続き格納します。しかし、もっと重要なことは、MVC の「ビュー」が変更されたことです。HTML であるサーバー側ビューの代わりに、クライアント アプリケーションがレンダリングするだけでなく、JSON または XML を使用するようになりました。
そのため、機能のために、サーバーでは引き続き MVC を使用します。しかし、優れたユーザー エクスペリエンスを実現するために、クライアント側でも MVC を使用しています。