52

StackOverflow チームの 17 回目のポッドキャストを聞いたところ、ASP.NET MVCについて非常に高く評価されていたので、調べてみることにしました。

しかし、最初に、それだけの価値があることを確認したいと思います。数日後に開始されるプロジェクトのベース Web アプリケーション (他の開発者が構築するため) を既に作成しており、あなたの経験に基づいて、時間をかけて MVC の基本を学び、再作成する必要があるかどうかを知りたいと思っていました。このモデルのベース Web アプリケーション。

それを価値のあるものにする大きな長所は本当にありますか?

編集:それは既存のプロジェクトではなく、開始しようとしているプロジェクトなので、私がやろうとしているなら、今すべきです...


私はちょうどこれを見つけました

ただし、サーバーへの相互作用に既存のポストバック モデルは使用しません。代わりに、すべてのエンド ユーザー インタラクションを Controller クラスにルーティングします。これにより、懸念事項とテスト可能性を明確に分離することができます ( MVC ベースのビューではビューステートやページ ライフサイクルがないことも意味します)。

それはどのように機能しますか?ビューステートがありませんか? イベントはありませんか?

4

20 に答える 20

65

現在の WebForms に満足している場合、ASP.NET MVC は適していない可能性があります。

私は長い間、WebForms に不満を感じていました。ここにいるのは私だけではありません。Web 上のスマート クライアント、ステートフルな抽象化は、複雑なシナリオでは深刻に機能しません。HTML、Javascript、および CSS が大好きです。WebForms はそれを私から隠そうとします。また、実際にはそれほど複雑ではない問題に対する、非常に複雑なソリューションもいくつかあります。また、Webforms は本質的にテストが難しく、MVP を使用することはできますが、Web 環境にとっては優れたソリューションではありません (MVC と比較して)。

MVC は次のような場合に魅力的です... - HTML をより細かく制御したい - 他のすべてのプラットフォームと同様にシームレスな ajax エクスペリエンスが必要 - 徹底的なテスト容易性が必要 - 意味のある URL が必要 - ポストバックとビューステートの問題を処理するのが嫌い

また、フレームワークは Preview 5 であり、非常に安定しており、設計はほぼ完了しており、アップグレードも難しくありません。Preview 1 でアプリを開始し、最新のプレビューが利用可能になってから数時間以内にアップグレードしました。

于 2008-09-09T21:00:18.693 に答える
30

MVC と WebForms は競合するものではなく、どちらが優れているわけでもないことに注意してください。それらは単に異なるツールです。ほとんどの人は、「一方は他方より優れたハンマーでなければならない」として、MVC 対 WebForms にアプローチしているようです。それは間違いです。1 つはハンマー、もう 1 つはドライバーです。どちらも物事を組み立てる過程で使用されますが、長所と短所が異なります。

嫌な思いをした人は、ドライバーを使って釘を打とうとしていたのかもしれません。特定の問題は、MVC でエレガントかつシンプルになる Web フォームでは扱いにくく、その逆もあります。

于 2008-08-27T17:09:31.010 に答える
11

私は ASP.NET MVC を使用しました (web.config でルートを定義できるようにする HTTPModule も作成しました)。

組織と生産性が大幅に後退しているように思えます。一部の人にとってはそうではないかもしれませんが、私はウェブフォームを理解しており、それらを保守可能にする限り、私には何の問題もありません。

それと、私は現在の「TEST EVERYTHING」の流行を支持していません...

于 2008-08-27T14:35:08.463 に答える
11

ASP.NET MVC では、基本的に、コードのさまざまなセクションの責任を分離できます。これにより、アプリケーションをテストできます。ビュー、ルートなどをテストできます。また、ViewState や Postback がないため、アプリケーションの速度も向上します。

しかし、欠点もあります。WebForms を使用していないため、ASP.NET コントロールは使用できません。つまり、GridView を作成する場合は、for ループを実行してテーブルを手動で作成します。MVC で ASP.NET ウィザードを使用する場合は、独自に作成する必要があります。

ASP.NET Web フォームにうんざりしていて、自分ですべてを実行したい場合に最適なフレームワークです。ただし、すべてのものをもう一度作成することでメリットがあるかどうかを覚えておく必要がありますか?

一般的に、豊富なコントロール スイートと自動配管機能により、私は Webforms フレームワークを好みます。

于 2008-09-09T20:50:45.987 に答える
9

最初にテスト サイトを作成し、チームの意見を確認しましたが、MVC を使用した後で WebForms に戻ることはありませんでした。

HTML と混合したコードを好まない人もいますが、それは理解できますが、私は Page Lifecycle や HTML のレンダリングなどよりも柔軟性を好みます。

より良いテスト性のためにMVCを好む人もいますが、個人的には私のコードのほとんどは中間層にあり、とにかく簡単にテストされます...

于 2008-08-27T13:31:01.457 に答える
6

@Juan Manuel 従来の ASP で働いたことはありますか? 独自のイベントと「viewstatish」項目 (フォーム送信後に選択した値を呼び出すドロップダウンなど) をすべてプログラムしなければならなかったときは?

もしそうなら、ASP.NET MVC はすぐにぎこちなく感じることはありません。Rob Conery の Awesome Series " MVC Storefront " をチェックしてみてください。彼は、フレームワークについて説明し、ストアフロント サイトに期待される各コンポーネントを構築しています。それは本当に印象的で、フォローするのが簡単です (ロブは本当にアクティブで、そのシリーズにたくさん投稿しているので、追いつくのは難しいです)。

個人的には、このトピックに関するJeff Atwood の意見とはまったく逆に、私はむしろ Web フォーム モデルが好きでした。確かに、vbscript/classic ASP の時代とはまったく異なっていましたが、実際には、viewstate をチェックして独自の CSS フレンドリー コントロールを作成するのは楽しかったです。

繰り返しますが、「好き」と言ったことに注意してください。ASP.NET MVC は本当に素晴らしく、他の Web テクノロジに似ています。複数のプラットフォームで作業したい、または作業する必要がある場合は、ASP.NET MVC から RAILS に移行する方が確かに簡単です。そして、はい、明らかに非常に安定しています(このサイト)。ただし、会社が「ベータ」ソフトウェアの色を禁止している場合。現時点で本番環境に実装することは問題になる可能性があります。

于 2008-08-27T13:57:24.607 に答える
5

@ジョナサン・ホランドあなたが反対票を投じられたのを見ましたが、それは非常に有効なポイントです。ASP.NET MVCフレームワークと MVCパターンを混同しているように見えるインターチューブに関するいくつかの投稿を読んでいます。

MVC 自体はDESIGN PATTERNです。探しているのが「関心の分離」だけである場合は、Web フォームを使用して確実にそれを実現できます。個人的には、標準的な n 層環境でのMVP パターンの大ファンです。

ASP.NET の世界でマークアップを完全に制御したい場合は、MVC のフレームワークが最適です。

于 2008-08-27T15:44:02.417 に答える
5

あなたがプロの ASP.NET 開発者で、新しいことを学ぶ時間がある場合は、ASP.NET MVC を試してみることをお勧めします。それはすべての問題の解決策ではないかもしれませんし、従来の Web フォームの実装からより多くの恩恵を受ける可能性のあるプロジェクトはたくさんありますが、MVC を理解しようとしている間、確かに多くのことを学び、多くのアイデアが生まれるかもしれません。あなたの仕事に応募することができます。

MVC ペット プロジェクトを開発しようとしているときに、多くのブログ投稿やビデオ チュートリアルを調べているときに気付いた 1 つの良い点は、それらのほとんどが現在のベスト プラクティス (TDD、IoC、依存性注入、および程度の低い POCO) に従っていることです。さらに、ユーザーにとってエクスペリエンスをより興味深いものにするための多くの JQuery があります。これは、現在の Web フォーム アプリに適用できるものであり、以前はそれほど深く公開されていませんでした。

ASP.NET MVC のやり方は Web フォームとは大きく異なるため、開発者にとっては非常に良いことです。

Web 開発の完全な初心者向けの OTOH MVC は、すぐに使用できる優れたデザイン パターンを提供し、Web が実際に機能する方法に近いため (HTML はステートレスです)、間違いなくより良い出発点だと思います。MVC では、ネットワーク上を行き来するすべてのバイトを決定します (少なくとも、html ヘルパーに夢中にならない限り)。それが理解できれば、ASP.NET の Web フォームとサーバー コントロールによって提供される「人工的な」機能に移行する準備が整います。

于 2008-11-24T22:27:34.717 に答える
5

多くの作業を行うサーバー コントロールを使用したい場合は、MVC で多くのハンド コーディングを行う必要があるため、MVC は好きではありません。GridView が気に入った場合は、自分で作成するか、他の人のものを使用することを期待してください。

MVC は万人向けではありません。特に、GUI 部分の単体テストに興味がない場合はなおさらです。Web フォームに慣れている場合は、そのまま使用してください。Web Forms 4.0 では、ASP.NET によって自動的に割り当てられる ID など、現在のいくつかの欠点が修正されます。次のバージョンでは、これらを制御できます。

于 2009-02-16T21:06:43.990 に答える
4

あなたが一緒に働いている開発者が MVC パターンに精通していない限り、私はそうしません。少なくとも、そのような大きな変更を行う前に、最初に彼らと話したいと思います.

于 2008-08-27T13:24:58.973 に答える
4

ASP.NET MVC、 Juan Manuelについても同じ決定をしようとしています。私は今、実験できる適切な一口サイズのプロジェクトが来るのを待っています. 実験がうまくいけば (私の直感ではうまくいくと言っています)、フレームワークを中心に新しい大規模なプロジェクトを設計するつもりです。

ASP.NET MVC を使用すると、ASP.NET Web フォームのビューステート/ポストバック モデルが失われます。その抽象化がなければ、HTML と HTTP の POST および GET コマンドをより密接に操作できます。UI プログラミングは、従来の ASP の方向にいくぶん進んでいると思います。

その不便さに伴い、より高度な制御が行われます。私は、ASP.NET の疑似セッション ガベージと戦っていることが非常に多く、出力 HTML の完全な制御を取り戻すという見通しは非常に新鮮に思えます。

それはおそらく、両方の世界の最高か最悪かのどちらかです。

于 2008-08-27T13:41:02.710 に答える
2

ASP.NET MVCはわかりませんが、MVCパターンについてはよく知っています。MVCなしでプロフェッショナルなアプリケーションを構築する別の方法はありません。そして、SpringやStrutsのようなMVCモデル2でなければなりません。ちなみに、MVCを使わずにWebアプリケーションを構築していたのはどうですか?ユーザーが認証されているかどうかを検証するなど、すべてのリクエストで何らかの検証が必要な状況がある場合、解決策は何ですか?すべてのページにある種のinclude(validate.aspx)?

N層の開発について聞いたことがありませんか?

于 2008-08-27T14:31:43.133 に答える
2

Ajax、RAD (Ajax を使用した Web フォームは、多くの場合、反 RAD です)、COMPLETE CONTROL (大量のコードとサイクルを開発する必要はありません)。webforms は、いくつかのグリッドなどをバインドする場合にのみ有効であり、それ以外の場合には有効ではありません。もう 1 つの本当に重要なことは、パフォーマンスです。Web フォームに行き詰まったら、遅かれ早かれ MVC をオンにします。

于 2009-06-11T17:52:28.900 に答える
1

既存のプロジェクトを切り替えることはお勧めしません。おそらく、チームがテクノロジを実験し、(必要に応じて) 必要なことを学び、切り替えを行う価値があることを経営陣に示すために使用できる小さな「デモ」プロジェクトを開始します。最終的には、開発チームでさえ、準備ができていないか、やる価値がないことに気付くかもしれません。

何をするにしても、必ず文書化してください。おそらく、デモ プロジェクトを使用する場合は、後で参照できるように事後分析を書いてください。

于 2008-08-27T13:27:43.413 に答える
1

ASP.NET MVC はわかりませんが、MVC パターンには精通しています。MVC なしでプロフェッショナルなアプリケーションを構築する別の方法はないと思います。また、Spring や Struts などの MVC モデル 2 である必要があります。ところで、皆さんは MVC なしでどのように Web アプリケーションを構築していたのですか? ユーザーが認証されているかどうかを検証するなど、すべてのリクエストで何らかの検証が必要な状況がある場合、どのような解決策がありますか? すべてのページにある種の include(validate.aspx) がありますか?

于 2008-08-27T13:35:07.513 に答える
1

いいえ、すべきではありません。新しいプロジェクトで自由に試してみてください。ただし、生の HTML をいじくり回さなければならない + さまざまな概念がたくさんあります + ドキュメントの非常にスリムな選択のため、ASP.NET Web フォームに精通している多くの人はまだ気に入っていません。チュートリアル。

于 2008-08-27T13:46:15.553 に答える
0

テスト容易性のために、誰かがHTML全体をコードでレンダリングするMVCフレームワークの実装を見てきました。この場合、ビューはテスト可能なコードでもあります。しかし、私の友人は、HTMLをコードに入れることはメンテナンスの悪夢であり、コンパイルおよびテストされたものすべてが好きだと言っていました。私は議論しませんでしたが、後で彼がこのHTMLをリソースファイルに入れて、狂気が続いていることに気づきました...

ビューを分離するというアイデア全体がメンテナンスの部分も解決したことに、彼はほとんど気づきませんでした。一部のアプリケーションでは、テスト容易性を上回ります。WYSWYGツールを使用している場合は、HTMLデザインをテストする必要はありません。そのため、WebFormsは優れています。

ポストバックとビューステートを悪用し、ASP.NETモデルのせいにする人をよく見かけます。

最高のWebページは依然として.HTMLであり、そこにASP.NETMVCの力があることを忘れないでください。

于 2009-02-27T21:51:27.990 に答える
0

ASP.net MVCが「プレビュー5」にのみ含まれているという事実は、それを調べるときに懸念の原因になりますか?

StackOverflowがそれを使用して作成されたことは知っていますが、ベータ/アルファ/プレビューリリースが正式に終了する前に、Microsoftがフレームワークに大幅な変更を実装する可能性はありますか?

于 2008-08-27T14:22:38.493 に答える
0

MVC フレームワークを使用することに夢中になっている場合は、Castle プロジェクトのフレームワークを使用することをお勧めします...

そうは言っても、個人的には WebControls には多くの利点があると思います。たとえば、ステートフル クライアントを持つイベント ドリブン アプリケーションを作成できるなどです。WebControls に対する議論のほとんどは、WebControl モデルなどを理解していないために構成されています。実際に本当に悪いからではありません...

MVC は銀の弾丸ではなく、特に Microsoft MVC ではありません...

于 2008-11-25T12:46:42.657 に答える