web-dev-qa-db-ja.com

cshtml vs aspxを選択する方が良いのは、なぜ、またはいつですか?

Cshtmlを選択するのが何を、なぜ、またはいつ、そしてaspxテクノロジーを選択するのが、何を、なぜ、いつより良いかを知りたいですか?これらの2つのテクノロジーの目的は何ですか?

ありがとうございました、

103

他の人が答えたように、.cshtml(または、それがあなたのフレーバーなら.vbhtml)は、MVCエンジンをロードするためのハンドラーマッピングを提供します。 .aspx拡張機能は、コンパイルを実行してWebフォームを提供するaspnet_isapi.dllをロードするだけです。ハンドラーマッピングの違いは、MVCアプリケーションとWebFormsアプリケーションの両方が共通のルートの下に存在できるようにするために、2つを同じサーバー上で共存させる方法です。

これにより、 http://www.mydomain.com/MyMVCApplication が有効になり、 http://www.mydomain.com/MyWebFormsApplication とともにMVCルールが提供されます標準のWebフォームとして有効です。

編集:
技術の違いについては、MVC(Razor)テンプレートフレームワークは、.Netページを、モデル(ビジネス/データオブジェクト)、ビュー(ユーザーに表示されるもの)、コントローラー(2つの間の接続)。 WebFormsモデル(aspx)は、Microsoftが複雑なjavascript埋め込みを使用して、ページ間で独自の状態を保持できるイベントとページライフサイクルを備えたWinFormsアプリケーションに似た、よりステートフルなアプリケーションをシミュレートする試みでした。

どちらのシステムを使用するか選択するかは、どちらのシステムにも賛否両論があるため、常に論争の的になります。私は、MVCアーキテクチャの単純さ(ルーティングは単純ではありませんが)と、Razor構文の使いやすさが好きです。 WebFormsアーキテクチャはあまりにも重いため、効果的なWebプラットフォームにはなりません。そうは言っても、WebFormsフレームワークが非常に簡潔で使いやすいモデルを提供し、豊富に定義された豊富なイベント構造を持つインスタンスがたくさんあります。それはすべて、アプリケーションのニーズとそれを構築する人々の好みに要約されます。

105
Joel Etherton

Razorは、ASP.NET MVCのビューエンジンであり、またテンプレートエンジンです。 RazorコードとASP.NETインラインコード(コードとマークアップが混在)は、最初にコンパイルされ、実行前に一時的なアセンブリに変換されます。したがって、C#とVB.NETの両方がILにコンパイルされて交換可能になるように、RazorとInlineの両方のコードは交換可能です。

したがって、それはよりスタイルと関心の問題です。私は、ASP.NETインラインコードよりもカミソリの方がより快適です。つまり、.aspxページよりもRazor(cshtml)ページを好みます。

Humanクラスを取得してレンダリングするとします。 cshtmlで作成するファイル:

<div>Name is @Model.Name</div>

aspxのファイルを作成している間:

<div>Name is <%= Human.Name %></div>

ご覧のとおり、かみそりの@サインは、コードとマークアップの混合をはるかに容易にします。

41
Saeed Neamati

Razor(.cshtml/.vbhtml)とWebForms(.aspx/.ascx)の構文は確かに異なりますが(Razorは2つのうちより簡潔で現代的です)、どちらもビューエンジン/テンプレートエンジンとして使用できますが、従来のASP.NET Webフォームコントロールは、.aspxまたは.ascxファイルで使用できます(MVCアーキテクチャと結合していても)。

これは、問題に対する長年の解決策が確立され、プラグ可能なコンポーネント(たとえば、大容量ファイルのアップロードコントロール)にパッケージ化されており、MVCサイトでそれを使用する場合に関連します。 Razorでは、これを行うことはできません。ただし、Webフォームビューを持つ従来のASP.NETアーキテクチャで使用するのと同じバックエンド処理をすべて実行できます。

さらに、ASP.NET WebフォームビューにはCode-Behindファイルを含めることができます。これにより、ビューと一緒にコンパイルされる別のファイルにロジックを埋め込むことができます。ソフトウェア開発コミュニティは密接に結合されたアーキテクチャと 悪い習慣としてのスマートクライアントパターン を見るように成長していますが、それはかつて物事を行う主な方法であり、.aspx /でまだ非常に可能です。 ascxファイル。かみそりは、意図的に、そのような品質を持っていません。

10
smartcaveman

CshtmlファイルはRazorで使用されるファイルであり、 この質問 の答えとして述べられているように、主な利点は単体テスト内でレンダリングできることです。この他のトピックに対するさまざまな答えは、他の多くの興味深いポイントをもたらします。

3
Tim Bourguignon