なぜMVC over Web Formsを使用するのですか?


11

最近、建築家は、トヨタ(Web Forms)だけが必要なときにロールスロイスソリューション(MVC)を提供していると当社を説明しました。

アーキテクチャの選択としてのWebフォームとMVCについてのあなたの考えを知りたいと思います。


11
アーキテクトはASP.NET MVCについてあまりよく理解していないと思います。
アダムクロスランド

3
@Chris WebformsはMVCのサブセットではありません。どちらも完全に独立して機能します。また、webformsは古く、おそらくずっと長く維持されていません。また、フロントエンドWeb / UI開発者にとっては、反キリストです。
エリックReppen

回答:


20

ロールスロイス/トヨタの類推はひどく欠陥があり、誤解を招く。1つ(ASP.NET MVC)は、もう1つ(ASP.NET WebForms)の単なる手の込んだ、または高価なバージョンではありません。これらは、ASP.NETを使用してWebアプリケーションを構築するためのまったく異なるアプローチです。

私にとって、MVCとWebFormsの最大のアーキテクチャの違いは、Webのステートレス環境との連携方法です。WebFormsは、Webプログラミングのステートレスの性質を隠す抽象化セットを構築するために懸命に働きます。それ。

それぞれのアプローチには利点と欠点がありますが、MVCを使用してWebサイトを構築する方がWebFormsよりもはるかに自然に感じられることを本当に楽しんでいます(漏れやすい抽象化の層の上に層がある)。


1
これらの気まぐれな抽象化は非常に問題です。学習ASP.NETのMVCは、httpプロトコルにあなたの目を開く
ミハル・フラン

10

古い質問ですが、他の誰かがまだ実際にジレンマを抱えている場合に備えて、より詳細な答えに値します。

最終的に、webformsはシンクライアントソリューションであり、これにより、多数のきれいなボタンを押すだけで、フロントエンド(クライアント)のものが自動的に作成されます。あなたがウェブフォームでそれをクランクアウトする方法を知っている人がいて、メンテナンス性/変更可能性の懸念がまったくなく、サイトが完全に短期で使い捨てである場合、このアプローチにはまったく問題はありません。独自のものの作り方を学ぶことは可能ですが、この場合は、Webフォームが.NETアプリ開発者を保護しようとするWebスタッフと、ほとんどのクライアントサイドWeb開発者がMicrosoftを殺そうとするすべてのWebフォームスタッフの両方を知る必要があります責任者。

他のすべてのユースケースシナリオの99.5%で、アプリ開発者からWebを隠そうとするのをやめました。実際、Webアプリを作成したい場合は、実際にWebの仕組みを学ぶ方がはるかに良いからです。シッククライアントソリューションとシンクライアントソリューションの皮肉な点は、必然的にシンクライアントアプローチがフロントエンドのがらくたを膨らませることになり、パフォーマンスが低下することです。さらに重要なことは、これらのソリューションは、自分がやっていることを実際に知っていて、実際のフレームワークに制約されたくない人々にとって、すべての地獄として常に物事を柔軟性のないものにしていることです。

CSS、JavaScript、HTML、XHRについてすべてを知っている人を連れて行き、フレームワークですべてのステップをロードブロッキングすることで完全に役に立たないようにするほど無意味なことはありません...

  • ヘッドタグ内のすべての「不要な」スクリプトタグをクリアして、スクリプトの依存関係を台無しにしないようにします。(「スクリプトマネージャー」がそれを処理できるようにした方がよい)確かに、彼らが何をしているのかを知っていれば、だれもそこに置くことはできませんが、それはめちゃくちゃです。

  • すべてのHTMLを1つの巨大なフォームタグでラップすると主張します。HTMLはフォーム内のフォームを許可しないため、フォームをWebformsの方法で使用するか、まったく使用しません。

  • ブラウザーと対話してサーバーにメッセージを送信し、サーバーが応答したときに反応することにより、UIイベントへの反応に実際に要するものの18ステップの「ライフサイクル」のように作成します。大きな巨大なゴミの山でそのプロセスを抽象化することは、決して起こる必要はありませんでした(そして、公平にするために、MSはこれをやろうとした唯一の大物ではありません)。

  • 実際に、問題に対する非Webフォームソリューションの使用を妨げる可能性のあることはすべて実行します。例:後輩のクライアントサイドの開発者だったとき、ページの上部にある送信ボタンがページの下部にある送信ボタンをトリガーする方法を見つけるのに丸1日費やしていました(巨大な形のもの)。通常、これには5分かかりますが、WebフォームJavaScriptをかなり数時間リバースエンジニアリングした後、それらがとりわけ、最後のフォーム要素が何であるかを知らないプロパティを設定していることがわかりましたフォーカスは、送信ボタンがクリックされたときに、公式のMicrosoft Submit(tm)ハンドラーのアクティベーションに関して公式のMicrosoft Submit(tm)ボタンのみが機能するようにすることでした。

だから、ロールス・ロイス対トヨタは完全に不合理です。さらに言うと、Microsoft以外の誰かからガソリンやオイルを買って、それが検出されたときに自動的に鋭い90度回転するオンボードシステムでMicrosoftが設計したPintoに対して、あなたがあまりにも多くのお金を払って完全に合理的なヒュンダイだと言います飛び込む便利な壁。Webについて何も知らず、マイクロソフトへの生涯にわたる忠誠心を誓おうとする、自殺志向のブランドドライバーにとって理想的な車。

すべての.NET MVCは本当にシンプルで合理的であり、Webの上に平手打ちするための独自のレイヤーを再発明していません。それはただあなたのためにいくつかの定型句をノックアウトするのを助けるためにそこにあるもので動作します。より良い/安い/無料のフレームワークが利用可能ですが、すでに.NETの事柄に縛られているなら、もっと悪いことをすることができます。

しかし、真剣に、!@#$をWebフォームから遠ざけてください。もうほとんど死んでいます。手放す。彼らが実際に何か新しいことや違うことをしたいとき、またはMSでさえできなかったためにがらくたが始まったときのための排他的で有利な時間単位のサポート契約も約束している場合、3倍のお金でそれを行うことをクライアントに伝えます10,000行のajax.jsファイルの巨大な部分に手を加えられない場所でDLLのお尻から引き出していくことに悩まされます。


こんにちはエリックはあなたの反応を愛していたので、あなたは私の賛成を得ました。HTML 5とCSSを学習するだけなので、投稿は非常に有益でした。
チャド

+1とてもいい答えです!MVCはWebフォームへのより複雑なアプローチに過ぎないと考えていたため、MVCを何年も避けてきました。現実には、私がWebフォームでやろうとしていることを簡単にするように思えます(たとえば、Script ManagerのようなMicrosoft BSを常に避けようとします)。
ドリューチャピン

6

ASP.NET MVCソリューションは、WebFormsソリューションよりも複雑である必要はありません。個人的には、ASP.NET MVCは実際にはWebFormsよりもはるかにシンプルであり、本質的にクリーンであると確信しています。

私の経験から、多くのMVCフレームワーク(ASP.NET、Rails、CodeIgniterなど)には、ほとんど同じコア機能と規則があります。WebFormsはWebの観点から見ると奇妙なカモです。私の推測では、ほとんどのWebプログラマーはWebFormsよりもASP.NET MVCの取得がはるかに速いでしょう。


5

ASP.NET WebForms経由でASP.NET MVCを使用する最大の理由は、テスト容易性です。確かにWebFormsの単体テストを行うことはできますが、これにはフレームワークのモックと多大な苦労が必要です。2番目の理由は、MVCを使用すると、懸念事項を簡単に分離できるためです。これにより、大量のコードを再利用し、コードを疎結合にすることができます。これは、MVPのようなパターンを使用してASP.NETで同じことを行うことが不可能であることを意味しません。

MVCの欠点は、多くの機能を失うことであり、過去10年間(ほぼ)WebFormsに組み込まれてきました。MVCは、似たような機能を提供することから、長い道のりを歩んできました。

パフォーマンスに関しては、技術が「高速」であるという証拠を誰かが持っていますか?

私は一方が他方より優れているとは思わない。私はMVCフレームワークが本当に好きで、それを大成功で使用しましたが、常にプロジェクトに合った技術を選択するようにしています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.