3

30年のパターンに加えて、MVCは現在のアプリケーションのためのものではありませんでした。 MVPは後継者であり、90年代に登場するイベントベースのアプリケーションを扱うように設計されていました。パッシブビューと監督コントローラが一番上に上昇したようです。これらの2つの場合、MVC/MVPについて話をする必要はほとんどありません。MicrosoftはなぜMVC for ASP.NETを選択したのですか?

具体的には、ASP.NET MVCのコントローラアクションは、そのビューを作成するビューを戻しますか? MVCでは、コントローラはビ​​ューを作成したり、それらに戻ったりしません。 ASP.NET MVCをMVC実装と呼ぶのはどれくらい正確ですか?それとも、正確な名前は?

+1

私はMVCがなぜ作られたのか疑問に思っていましたが、それは世界で最も新しいものだったのです。シンプルなコードビハインドからj2eeに移行したとき、私は多くの人が10年以上MVCを行っていたことが分かりました。私は1つのベンダーに長すぎると固執すると、私は騙されているように感じます。 – johnny

+3

コントローラはビ​​ューを元に戻しません。コントローラはビ​​ューデータを戻し、ビューエンジンはビューのレンダリングを「通常」担当します。したがって、名前は正確です。私は、http://www.castleproject.org/が、MSがASP.NET MVCを作成する大きなインスピレーションであったと信じています。 –

答えて

14

Ruby on Railsは、MSがasp.net MVCを作成するよう促したと思います。

+1

私はそれに同意する – marcgg

+0

ウェブフォームが設​​計によって壊れていると思うが、それは確かに彼らがその球で競争することを可能にする:P – annakata

8

十分に近く、販売戦略です。

彼らはMVCとして自分自身を識別する他の技術に対してASP.NETを販売しています。したがって、同じカテゴリで認識されるように名前を付けることは競争上有用です。

マイクロソフトは、正確なテクノロジの識別よりも製品の位置付けにより多くの場合に勝ちます。 (プラス長期配送、IMHO。)

1

誰もがMVCを聞いた。 MVCはしばらくの間、「ベストプラクティス」として敗北しており、したがって、世代(または2,3人)の開発者はMVCを見て、幸せな思いを考えます。

また、他の多くのフレームワークは、同様のライトでMVCを擁護しているので、マイクロソフトはおそらく同様にするよう強く感じています。

要するに、私はそれに強い技術的理由があることを非常に疑う。

-3

私はこれが "パニックマーケティングの決定"より技術的な決定だと思っています。 RoRは毎秒市場を盗んでいたため、MSFTは完全にパニックになってしまったので、MSFTは彼らに「キャンプ」に再び誇大宣伝をする機会を与えたと感じました...

また、開発者はこの過激な言葉を自分自身と関連づけることで、再び自分の尊敬の念を得ます。つまり、.Net開発者は、選択したプラットフォームが提供しなかったためにMVCを知らなかったことを恥じることなく、このタイプのパターン(すぐに使用可能)

中規模の熟練したRoR開発者がレーキを発火させてスパイクを少なくすると、中堅(ネット)開発者にとって恐竜のように感じられないのは本当に難しい15分で動作している概念の証拠.Netの開発者がvstudio.exeを開始する前に終了...;)

私はそれが議論の余地があると思うが、それは私のものだと私は苦い終わりまでそれを守るだろう...;)

今日、無数の例があります.MVCと足場はあなたに最初のスピードブーストを与えます。しかし、メンテナンス性、コードの再利用、カプセル化などほとんどすべて実際には重要なこと - MVCは単に「銀色の弾丸」ではなく、ほとんどの場合WebFormsは長期的にはるかに優れています(もちろんトイレットペーパーのように使われていない限り)

+8

パニックマーケティング声明に同意しない。これはPhil HaackとScott Guthrieのインサイダー主導のプロジェクトでした。マーケティングチームは決してこのことを理解しませんでした。これは開発者主導型のものでいっぱいでした。 –

+2

私は上記の声明にも同意しません。ビューステートだけのコンセプトだけで無限の問題が発生した環境でWebフォームを実装しました。私は、Webフォームがどこで維持しやすいのか分からない。 MVCは、いかなる意味でも銀色の弾丸ではありませんが、いくつかの状況では最も良い選択肢です。 – BinaryMisfit

+9

RoRがMSを「パニック」にしたと本当に思いますか?あなたはもっと出かける必要があります。 – NotMe

4

ScottGuは、最初のMVCデモンストレーションhereでの彼のポストの最初の部分では答えません。簡単な答えは、人々がそれを求めてMicrosoftがそれに同行することを決めたことです。それは現在のものに合っています。できるだけ多くのオプションを追加するためのネットモデル。フレームワークがより大きなターゲット市場に到達できるようにし、開発者に適切なプロジェクトに適したツールを提供します。

1

現在のASP.NETフレームワークで独自のMVCをロールバックし、ポストバックモデルを保持することができます。 ASP.NET MVCで実装さ

http://www.codeproject.com/KB/aspnet/RollingYourOwnMVCwithASP.aspx

+4

MVCを実装した理由の1つは、ポストバックモデルから離れていくことだと思います。 – rojoca

+2

ポストバックモデルには、HTML bloatやデフォルトで作成されたすべてのビューステートなどの欠点があります。 MVCデザインパターンの最大の利点は、コードビハインドファイルがなくなるため、MBUNitなどのツールを使用して自動化されたユニットテストが容易になることです。私が書いた記事は、ポストバックモデルを維持するという例でしたが、完全な自動ユニットテストも可能な設計を実装しました。 – user100985

2

MVCは昔のMVCパターンではありません。私が "古典的な" MVCと呼ぶものでは、Viewは直接的なものですが、モデルへのアクセスは、ASP.NET MVCではビューから直接ビジネスモデルにアクセスするのに悪い考えです。

public class MvcExampleController : Controller 
{ 
    public ActionResult ActionMethod(BoundInputData inputData) 
    { 
     var results = DoActualWorkInTheModelWith(inputData); 
     var viewModel = CreateViewModelFromThe(results); 

     return View(viewModel); 
    } 
} 

は私にとって、これはより多くの古典的なMVCより管理コントローラーのように見えます:何で終わることは非常に多くのコントローラー+パッシブ ビューを監督するようなものです。モデルで作業が完了すると、ビューはViewModel(別名PresentationModel)に渡されます。 ViewModelは通常、ビュー内のUI要素と1対1の関係にあり、実際のモデル内のオブジェクトのように見えたり、見えたりしないことがあります。実際のモデルではなく、ViewModelで動作するビューは私のパッシブビューのようなものです。

これが「本当の」MVC実装であるかどうかはわかりませんが、ASP.NET MVCが現代のWebデザインパターンを使用していないという議論があるなら私は同意しなければなりません。

13

ASP.NET MVCは、Ruby on RailsとDjangoのようなWebフレームワーク内でのMVC実装の成功をMicrosoftが認めたものです。多くのWeb開発者が、Web開発のアプローチにもっと関心を向けたいと考えています。これは、ASP.NET開発者が提供するステートフルな抽象概念から遠ざかっている、「懐疑的な」プログラミングモデルを採用しています。

Smalltalk MVCパターンの正確な実装ですか?いいえ、それはパニックの結果ですか? Ruby on RailsとDjangoの両方の成功の結果ですか?はい。

このモデルは、.NETとASP.NETスタックが提供する豊富なフレームワークを採用しているので、私はこのモデルが大好きですが、アプローチを最小限に抑えて、コンベンションベースの開発を使用しています。

0

これは大きな疑問です。多くの人がMVCの初期にこの質問をしています。プロジェクトのリード開発者のPhil Haackの回答がここにあります!

http://haacked.com/archive/0001/01/01/everything-you-wanted-to-know-about-mvc-and-mvp-but.aspx

、それをチェックアウトのリンクを読んで、そこから行きます。

また、議論の答えはS#arp Architectureかもしれません。 MVCの上にレイヤーを構築して、MVPのように動作させるようにしました。それらのラインに沿ってsoemthingを探している場合はそれらをチェックしてください。

幸運を祈る!

+0

ありがとうございますが、結論は非常に間違っています。「このフレームワーク(ASP.NET MVC)では、MVCパターンではなくMVCパターンが採用されています。リッチクライアント開発をエミュレートしようとしないためMVCパターンが適切です。最新のクライアントアプリケーションと同様に、最新のWebアプリケーションはMVPを使用します。これは、Webブラウザがユーザーの入力を処理するため、Webアプリケーションで発生します。 MVCを使用するアプリケーションを見つけるのは難しいでしょう。つまり、コントローラがユーザー入力を直接処理します。 – 4thSpace

関連する問題