ホームページ  >  記事  >  バックエンド開発  >  ASP.NET MVC と WebForm の違いの詳細については、こちらをご覧ください。

ASP.NET MVC と WebForm の違いの詳細については、こちらをご覧ください。

零下一度
零下一度オリジナル
2017-05-20 13:29:382534ブラウズ

ASP.NET MVC と WebForm の違いについて話します

ASP.NET MVC フレームワークを使用してデフォルトのプロジェクトを作成すると、最初の直感的な感覚は、アドレスが書き換えられたということです。ソース コードと構成ファイルを少し分析すると、MVC が httpModules を使用してアドレス要求をインターセプトすること、特に System.Web.Routing クラス ライブラリを使用していることがわかります (MVC2 では、MVC1 の使用方法を忘れてしまいました)。クラス ライブラリのこの部分は .NET Framework3.5 SP1 にパッケージ化されており、MVC2 が SP1 のサポートを必要とするのは当然です。 SP1で提供されるSystem.Web.Routingクラスライブラリは、アドレス要求を簡単にインターセプトでき、エンコード処理にも優れています。 UrlRoutingModule クラスはリクエストをインターセプトします。その前に、Application_Start 中に RouteTable のグローバル オブジェクトにインターセプト設定が与えられます。この設定は RouteCollection オブジェクトを使用して保存され、MVC はこのクラス RouteCollectionExtensions を拡張します。これらは無視できます。次に、ユーザーがページにアクセスすると、UrlRoutingModule クラスがリクエストをインターセプトし、RouteTable のルールを満たしているかどうかを確認します。満たしている場合、この呼び出しは httpHandlers 構成ノードに登録されます。ただし、アドレスが「* .mvc」ルールに一致することが条件です。 MvcHandler の ProcessRequest メソッドは、コントローラーを呼び出して実行します。実際、プロセス全体はブラックボックスであり、ユーザーはそれを感じることができません。コントローラーでメソッドが実行されると、結果が返され、特定の aspx ページに入ります。

MVC の動作プロジェクトを分析した後、WebForm との違いを比較できます。 MVC モードのビジネスは実行のためにコントローラーに配置され、aspx ページは表示のみを担当することがわかります。その後、MVC でのビジネスの実際の実行時間は HttpMolde に進み、WebForm リクエストは httpHandler コンテナ内でのみ実行されます。言い換えれば、MVC でのコントローラーとビューの分離は、ASP.Net 要求パイプラインを使用することによって実現されます。この方法で、コードの論理レベルは間違いなく効率に影響を与えることなく達成されます (一方、Response.Redirect は 1 つの要求です)。 2回目の別居の要求。

ASP.NET MVC と WebForm の違いの詳細については、こちらをご覧ください。

MVC 作業の利点は明らかであり、階層化されたロジックを理解し、コードの階層化を把握するのに役立ちます。コントローラーと aspx ページの間のプロセスは、フレームワークによって分離されています。コントローラーまたはビュー ページと モデル を呼び出すプロセスについては、やはり自分で習得する必要があります。 ASP.NET の MVC フレームワークは、コントローラー コードの個別の管理を実装します。

WebForm 開発 モデル を見ると、HttpHandler コンテナ内でのみ実行され、階層化されています。大きな側面でのサポートが不足しており、論理的な分離にのみ依存しています。分離できないのではなく、一定の制限があるのです。 HttpHandler のインターセプトは、サフィックス名へのアクセスに関連しています。ページがリクエストされるとそれがハンドラーとなり、WebFormモデルは表示とロジックの分離を実現しており、そこにあるのはWinFormのイベントドライバーです。明らかに、Button1_Click コードなどのイベントをページに登録する必要があります。 Button1_Click が実行される前に、Page_Load メソッドが実行されます。

表示コードを Page_Load メソッドに記述する場合は、if (!Page.IsPostBack) などの追加の無駄なコードを記述する必要があります。 Button1_Click を実行した後に表示する必要がある部分は、Button1_Click 内で別のメソッドを記述する必要があるため、さらに扱いが難しくなります。別の解決策は、Response.Redirect を使用し、aspx ページでロジックを処理し、処理後に表示されている別のページにジャンプすることです。この欠点は、2 つのページ間でデータを共有することが難しいことと、ジャンプは 302 をマークすることによって実装されるため、もう 1 つ要望があります。また、Server.Execute、Server.Transfer、またはContext.RewritePathなどの処理メソッドを介して、2つのページの変換がサーバー側で完了し、データを共有できる処理方法と同様であると言えます。 MVC フレームワークの欠点は、これらのリダイレクト プロパティを手動で設定する必要があることです。

上記の分析から、MVC フレームワークには強力な利点があり、WebForm には単純なアプリケーションでの開発が容易であるという利点がないことがわかります。 WebForm も MVC と同じ階層化メソッドを実装できますが、処理時にさらにコードを記述する必要があります。私の意見では、WebForm を使用して階層型開発を行うときに遭遇する最大の問題は、ページ間のデータ転送であり、WebForm でサーバー側のジャンプ (Server.Execute、Server.Transfer、または Context.RewritePath) を使用するアプリケーション スキルを習得することで、データ送信の問題を解決するには、ASP.NET MVC や WebForm と比較して、WebForm が理解しやすく、複雑な構成が生成されないため、非常に良い選択となります。

【関連おすすめ】

1. ASP.NET MVCとは何ですか? ASP.NET MVC の概要

2.

ASP.NET MVC の詳細な紹介 - コントローラー

3. ASP.NET MVC の詳細な紹介 - ビュー

4. ASP.NET MVC の詳細な紹介 - ルーティング

5. asp.net mvc を使用した WeChat カスタム メニュー編集ツールの開発のコード例

以上がASP.NET MVC と WebForm の違いの詳細については、こちらをご覧ください。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。