これは多くの答えがある古い質問ですが、リストに載っていると思われる答えがなかったものはありません。
短い答えは次のとおりです。
- ASP.NET MVCを使用するのは、ASP.NETプラットフォーム用の最新のプログラミング規則と業界に組み込まれたパターンを使用してWebアプリケーションを適切に構築する場合です。欠点としては、HTMLとクライアント側のリソース(Javascript、CSS)がどのように機能するかを知ることが期待されるだけでなく、急な学習曲線を持っているが一度把握すると突然終了するMVCプログラミングの考え方を身に付けることができます。
- GUI中心のRAD(Rapid Application Development)を使用している、または使用したい場合は、ASP.NET Webフォームを使用します。 15分。このソリューションは、開発者がサポートするものではありません。または、GUIまたはWindowsフォーム開発のバックグラウンドがあり、知識をWebに転送したい場合は、ASP.NET Webフォームを使用します。
しかし、これを適切に見るには、それぞれの歴史を理解する必要があります。
ASP.NET Web Formsは、Visual Basic 6 ActiveXコントロール、サーバー上のVB6 DLL、およびASP Classicを使用して動的なWebアプリケーションを構築していた人々に対するMicrosoftの回答でした。当時、これらのMicrosoftツールを使用したWeb開発は非常に面倒でした。Microsoftの出力である.NET Framework全体が、Windowsスタックで生産的なビジネスプログラミングを行う方法について基本的に図面に戻っていたのと同様に、ASP.NET Web Formsはその当時、驚くほど美しいものでした。
全体的なアプローチは、Windowsアプリケーション開発に非常に似ているものの、インターネットサービスの力を活用して、開発者に両方の長所を提供することでした。VB6 / WinFormsの「フォーム」(ウィンドウ)と同様に、Webページもフォーム(ウィンドウのように見える)であり、そのフォームでラベル、テキストボックス、データグリッド、ボタンなど、VB / WinForms GUI開発者が慣れ親しんでいたもの。
ボタンに何かをさせるには、ドラッグアンドドロップした後、デザイナーでボタンをダブルクリックし、コードエディターでブームを開き、その「クリック」イベントが発生したときにフォームに何をするかを伝えます。これは、Windows GUI開発者がVB6のGUIツールと競合ツールを使用してソフトウェアを作成した方法とまったく同じでしたが、現在はサーバーでコードが実行されています。うわー!
これは2002年の技術でした。RAD開発用のインターネット対応GUIソリューションへの答えとして、当時は驚くほど美しく、それは達成する必要のあるビジネス目標を持っていたソフトウェア開発者の乱雑な世界に力の感覚をもたらしました。
残念ながら、このプログラミングモデルはWindows GUIプログラミングの比phorを非常に強調しているため、必要な実装の詳細、イベントライフサイクルに対応するために必要なすべての邪魔な手荷物、および単純なHTMLこれらのドラッグアンドドロップコンポーネントとコントロールが出力するスクリプト。そして結局、実際のアプリケーションをサポートする開発者は、これらのコンポーネントを深く掘り下げるか、独自のコンポーネントを作成する必要がありました。その結果、彼らはこのインフラストラクチャとの戦い、涙。
バックアップします。手を洗ってください。もう一度ビジネスの問題を見てみましょう。私たちのビジネス目標は何ですか?
Webアプリケーションを構築および管理する必要があります。私たちの制約は、HTTP、HTML、Javascript、CSS上にあるWorld Wide Webがあり、サーバー上にビジネスルール、データベース、少数の優れたプログラミング言語(C#など)があることです。開発方法論を推進するために、このWindows GUIのメタファーが本当に必要なのでしょうか?なぜアプリケーションの問題に集中し、GUIのメタファーを廃止できないのですか?
これがASP.NET MVCの出番です。それは、適切で純粋なソフトウェア開発の原則に戻りたいと自らを「Alt.Net」と呼んだ開発者の反乱によって始まりました。面倒なことはもうせず、ビジネス目標とソフトウェアのベストプラクティスに集中してください。
この場合、これが実際に意味するものは次のとおりです。
- 懸念の分離。たとえば、データコンポーネントは、そのデータがどのようにレンダリングされるかを知る必要も、マークアップをデータベース接続構成の詳細に邪魔する必要もありません。このようにして、開発者は編集およびテストコード。
- HTMLと関連リソースの核心への露出に対する露出と完全なサポート。Webフォームでは、HTMLは隠されており、開発者はこれに煩わされることをお勧めしません。ASP.NET MVCでは、開発者はこれらの詳細を管理することが推奨されます。実際、それは必要です。ここでの利点は、開発者がHTML、CSS、およびスクリプトのきれいなセマンティクスを鑑賞するために再学び、働くことができるということであるとのことではなく、それに反対。
- ビジネスオブジェクトのテスト可能性。コントローラーとモデルは、プログラムによる単体テストに非常に適しているため、実装を検証してビジネス目標を達成し、変更が破損しないことを検証できます。Webフォームでは、コンポーネントを個別にテストするように設計されておらず、ビジネスロジックとプレゼンテーションロジックが深く絡み合っているため、開発出力全体がページフォームとそのイベントライフサイクルを中心に展開されるため、テストが困難でした。
HTMLはすでに非常に高度なマークアップ言語であり、Javascriptは高度なプログラミング言語であることに注意してください。アセンブリ言語とCを扱っていた場合、全体の話は違っていただろう。
#2を展開すると、ASP.NET MVCのもう1つの目的は、開発者がソリューションの「ビュー」部分のフロントエンドの詳細を整理し、他の業界が構築した豊富な基盤を活用できるようにすることです。フロントエンドクライアントプラットフォーム。
ASP.NET MVC開発者は、サーバー側のアーキテクチャと戦うことなく、豊富なJavascriptライブラリとクライアント側のテンプレートテクニックを利用することに慣れていることがわかります。これは、ASP.NET Webフォームでは元々そうではありませんでした。なぜなら、WebフォームではHTMLやスクリプトをまったく見たくないからです。ただし、本当に必要な場合を除き、その場合は気をつけてください。心の。