モデルビューコントローラー([〜#〜] mvc [〜#〜])について開発者に話しかけると、ほぼ瞬時に、サーバーがエンティティ(モデル)を構築し、そのモデルの視覚的表現を提供するURLへの要求。
これは、MVCがWeb専用であることを意味しますか、それともWebアプリケーションを作成するためにMVCを使用する開発者だけの人に会ったことがありますか?
デスクトップスタイルのアプリケーションでMVCの使用法はありますか?
私はパラダイムに不慣れで、MVCのスーパーセットについて知りたい
MVCはパターンです。パターンはすべてのプログラミングに適用されます。 MVCはたまたまWebコンテキストで非常にうまく機能します。
gnatが指摘 のように、mvcタグを確認すると、実装されている複数の例が表示されます。
MVCは1977年からであり、Webは1991年に発明されただけなので、MVCはnotがWeb専用であることは明らかです。
いいえ、OS XおよびiOSの開発ではModel View Controllerパターンを使用します。
Microsoft環境で質問すると、多くの人は、あなたがAsp.Net MVCを意味していると思います。これは、Web専用のMVC実装です。
残念ながら、これがMVCパターンの実装であることを理解しておらず、それらが交換可能な用語であると考えている人も多く、これは「Webのみ」の仮定につながります。
少なくとも私の知る限りでは、MVCの最初の実装はSmalltalkでした。それは間違いなくSmalltalk-80に存在していました。それを証明するのに便利なドキュメントはありませんが、それ(またはとにかく非常によく似たもの)はSmalltalkに数年前から存在していたと思います。
ほとんどのOO GUIフレームワークには、MVCのバリアントが少なくともいくつか含まれています。ただし、この場合の「スーパーセット」が何を意味するのか正確にはわかりません。バリアントはMVCのスーパーセット、サブセット、またはピアですが、私はそれらのほとんどをピアと見なす傾向があります。
いずれにせよ、これらの多く(ほとんど?)は、Web開発ではなくデスクトップ開発に使用されています。いくつかの古いAT&T特許のおかげで、ほとんどのウィンドウシステムでは、要求に応じてビューを再生成できるプログラムが必要です。これにより、(ほとんど)現在の状態を維持するコード(モデル)とその状態を表示するコード(ビュー)が少なくともある程度分離されます。それでも、1)コントローラーの機能が分離されている程度、および2)各主要部分の間に線を引く場所の正確な詳細については、変更の余地がたくさんあります。
知っておくべきことの1つは、MVCの実装を主張するフレームワークの数と同じ数のMVCの種類があることです。
ほとんどの人は、モデルがいくつかの状態を保持し、ビューがそれをレンダリングするという事実に同意します。しかし、コントローラーには非常に異なる役割があります。
Smalltalkでは、最初に説明されたように、モデルはアプリケーション、データ、およびビジネスメソッドの中核です。ビューはアプリケーションの状態(別名モデル)のグラフィカル表現であり、コントローラーはユーザー入力、マウス、キーボードイベントを管理します。たとえば、コントローラーはキーボードイベントをフォーカスのあるビュー要素にルーティングします。
.jspページでは、モデルはほとんどがデータであり、ビューはそのモデルをHTMLにレンダリングし、コントローラーはモデルを適切なビューにルーティングしてレンダリングします。
したがって、質問に答えるために、MVCはスタンドアロンアプリケーション(Java、.Net、Flex)とWeb(jspページ)の両方で使用されますが、まったく異なるものです。つまり、あなたが知っているMVCはスタンドアロンアプリケーションでは使用されません。
いいえ、スタンドアロンアプリケーションにも適用されます。例Java SwingはMVCに従います。
したがって、この領域にはさまざまなデザインパターンがたくさんあります。
等々。長年にわたり、これらは絡み合い、つぶされ、変更され、さまざまな状況で適用されてきました。ここで重要な点は、1977年のMVC設計パターンが大幅に変更され、サーバーサイドのWebフレームワークで使用される設計パターンではなくなったことです。元のSmalltalk実装の例として、モデルは変更のビューを監視しますが、サーバーサイドはユーザーのブラウザーでhtml要素を監視できないため、これは当てはまりません。代わりに、ビューが変更されると、ビューはコントローラーにリクエストを送信し、コントローラーはビューを更新します。モデルを更新すると、モデルに依存するすべてのビューが更新されることになるため、元のMVC実装には従いません。
最新のWebフレームワークは、モデル2アーキテクチャとも呼ばれる単純な3層アーキテクチャに従います。
もちろんWeb上に実際のMVCアーキテクチャの例がありますが、ビューはxmlとjsonであり、変更が観察されないため、モデル2アーキテクチャに従うサーバーに接続されていることが多く、クライアント側のみです。クライアント側の純粋なmvcアーキテクチャの例は、Sencha TouchとSproutcoreです。
ブラウザーにMVCがあり、サーバーにmvcがあり、データレイヤーとしてmvcがある場合、階層的なmvc実装があります。
注意。 Webフレームワーク、MVCの他の実装(Java swingなど)とFlexには他の実装の違いがあります。