回答:
単一ページアプリケーション(SPA)を構築している場合、おそらくASP.NET MVCの「MVC」は必要ありません。ビュー、特に動的ビューは、クライアント側で配信/操作される可能性があります。角度はそれをうまく処理します。
ただし、100%SPAは必要ありません。じゃあ何?ある代わりに10ページが、10ページの想像非常に動的。ユーザーがログオンすると、右側の隅に小さなユーザーバッジが表示されます。それは動的ではありません。ユーザーの「スコア」や最新のセルフィーなど、気の利いたものがいくつか表示されます。気の利いたものをキャッシュして、簡単に取得できるようにします。これで、2つの方法でこれを実行できます。クライアント側のMVC純粋主義者であれば、他のすべてのデータと同様に、最初のHTMLペイロードが配信された後にバッジデータを取得するだけです。しかし、多分あなたは純粋主義者ではありません。たぶんあなたは純粋主義者の反対でしょう。たぶんあなたは不純物主義者です。したがって、最初のHTMLを配信する代わりに、サーバーにポストバックするJavaScriptを配信し、JavaScriptを介して投稿してバッジデータを取得し、最終的にクライアント側MVCを介してそのデータをビューにマージします。それを最初のHTMLとして。最初のHTMLが配信されたら、一般的なクライアント側のMVCのふざけた作業に進みます。
だから...サーバーとクライアントのMVCは、2001年に混乱していたコードを整理する便利な方法です。どちらを選択する必要はありません。両方を選択できます。確かに、その最初のHTMLが配信された後にやればやるほど、サーバー側のMVCは必要なくなります。それでも、必要な場合はそれがあります。たとえば、私は外部のAngularテンプレートが実際には.NET MVC ActionResultであるASP.NET MVC / Angularアプリケーションに取り組みました。つまり、サーバーコントローラーはデータをビューにマージし、テンプレートとしてAngularに配信し、Angularのコントローラーはデータをビューにマージできます。私はこれが良いアイデアだと言っているわけではありませんが、MVCの1つの形式が他の形式を時代遅れにしないことを示しています。
さらに、Angularのデプロイ方法に関係なく、初期HTML、テンプレート、そして最も重要なデータを配信する方法が必要になります。簡単にするプラットフォームを使用してみませんか?多くの機能がありますが、.NET MVCは前兆ではありません。前にも言ったように、初期HTMLおよび外部AngularテンプレートをMVCアクションの結果にすることができますが、さらに良いことに、.NETのWeb APIを使用してデータを配信できます。Web APIはアプリコットのコンポートと同じくらいおいしいです。
要約:MVCは単なるパターンです。任意の数の物理層でそのパターンを使用できます。使い切ることはできません。理にかなっている場合は自由に使用してください。それに、AngularはとにかくMVCではないかもしれないので(これらのことを気にする人は言う)、名前に「MVC」を含むツールで自由に使用してください。地獄、それがMVCであっても、必要に応じて混ぜ合わせてください。
ASP.NET MVCはサーバー側のフレームワークです。どのJavaScriptライブラリを使用してもかまいません。AngularJSはクライアント側のライブラリであり、サーバー側のテクノロジーがWebサイトを強化するかどうかは関係ありません。Python、ASP.NET MVC、またはディスクに直接格納された静的なHTMLファイルの単純な束でもかまいません。
ASP.NET MVCとAngularJSは両方とも互換性があり、それらを一緒に使用するプロジェクトがたくさんあります。
両方を使用する必要がありますか?あんまり。プロジェクトのニーズに完全に依存します。
Webサイトが動的な場合、サーバー側のスクリプトを使用する必要があります。ASP.NETを使用できますが、AngularJSを使用しているという事実は、サーバー側のコードをより多くのMVCにしないでしょう。サーバー側アプリケーションをMVCとして構成できるようにしたい場合は、ASP.NET MVCを選択します。
同様に、ASP.NET MVCを使用しているという事実は、クライアント側コードの構造について何も意味しません。すべてのJavaScriptを、構造について何も考えずに1つのファイルに入れて、それで満足することができます(プロジェクトが成長し始めるまで)。ここでも、AngularJSは、クライアント側でアプリケーションを構造化する方法として提示されています。
サイドノート:質問ASP.NET MVC 3にタグを付けました。これは、維持する必要があるレガシープロジェクトであるか、過去4年間更新されなかったレガシーサーバーでアプリケーションをホストするときに特定の制約がある場合を除き、ASPを使用できます代わりに.NET MVC 4または5。
Visual Studioを使用している場合、アンギュラーおよびMVC Web Apiコントローラーを含む新しい「シングルページアプリ」MVC Webサイトテンプレートがあります。
MVCサーバー側コードは、角クライアント側コードが呼び出すためのJSONエンドポイントを提供するため、これはうまく機能します。
さらに、MVCコントローラーを使用して、単一ページアプリの基本的なHTMLビューを提供できます。これにより、サーバー側での生成、承認、リダイレクト、エラー処理などの能力が得られます。
多くの場合、単一のページアプリ、さまざまな環境、さまざまな言語のエンドポイントURLなど、またはサーバー側で簡単に実行できる奇妙な認証ページでさえ、少量のサーバー生成html / javascriptが必要になります。
3年後、ASP.NET Web APIを使用してデータを提供し、Angular(js以降)を使用してクライアント側でアプリを構築します。静的サイトを作成している場合は、ASP.NET MVCを使用してください。