ASP.NET MVC / Web APIを使用しているので、Angularを使い始めましたが、それらを適切に混合する方法がわかりません。
Angularを使用した後でも、MVCサーバー側の概念は価値を提供しますか?または、Angular HTTP呼び出しのデータを取得するためだけにWebAPIを厳密に使用する必要がありますか?
ASP.NETMVCの人がAngularに移行するためのヒントがあれば役に立ちます
ASP.NET MVC / Web APIを使用しているので、Angularを使い始めましたが、それらを適切に混合する方法がわかりません。
Angularを使用した後でも、MVCサーバー側の概念は価値を提供しますか?または、Angular HTTP呼び出しのデータを取得するためだけにWebAPIを厳密に使用する必要がありますか?
ASP.NETMVCの人がAngularに移行するためのヒントがあれば役に立ちます
回答:
純粋なWebAPI
以前はASP.NETMVCでかなりハードコアでしたが、Angularに会ったので、サーバー側のコンテンツ生成フレームワークを使用する理由が1つもわかりません。Pure Angular / REST(WebApi)は、より豊かでスムーズな結果をもたらします。これははるかに高速で、ファンキーなハッキングなしに、デスクトップアプリケーションに非常に近いWebサイトを構築できます。
Angularには少し学習曲線がありますが、チームがそれを習得すると、より短い時間ではるかに優れたWebサイトを構築できます。主にこれは、これらすべての状態(少ない)の問題がもうないという事実と関係があります。
たとえば、従来のサーバーサイドフレームワークを使用したウィザードフォームを想像してみてください。各ページを個別に検証して送信する必要があります。たぶん、ページのコンテンツは前のページの値に依存しています。ユーザーが戻るボタンを押して、前のフォームを再送信している可能性があります。クライアントの状態はどこに保存しますか?AngularとRESTを使用する場合、これらすべての問題は存在しません。
だから...ダークサイドに来て...私たちはクッキーを持っています。
AngularJSは、シングルページアプリケーションパラダイムとの関連性が高いため、マークアップをレンダリングするサーバーサイドテクノロジーのメリットはあまりありません。それらを一緒に使用することを妨げる技術的な理由はありませんが、実際的な意味で、なぜあなたはそうしますか?
SPAは、必要なアセット(JS、CSS、およびHTMLビュー)を取得して独自に実行し、サービスと通信してデータを送信または取得します。したがって、これらのサービス(および認証などの他の手段)を提供するにはサーバーサイドテクノロジーが依然として必要ですが、レンダリング部分はほとんど無関係であり、MVCが行うことを除いて、作業の重複であるため特に有用ではありません。サーバー側で、Angularはクライアントでそれを行います。Angularを使用している場合は、最良の結果を得るためにクライアントで使用する必要があります。AngularのPOSTHTMLフォームを作成し、MVCアクションから部分的なビューを取得することはできますが、Angularの最も優れた最も簡単な機能を見逃してしまい、生活が困難になります。
MVCは非常に柔軟性があり、SPAアプリケーションからの呼び出しを処理するために使用できます。ただし、WebAPIはより細かく調整されており、このようなサービスで少し使いやすくなっています。
既存のWebFormsおよびMVCアプリケーションから移行したものを含め、いくつかのAngularJSアプリケーションを作成しました。ASP.NETの側面は、AngularJSアプリを実際のクライアントとして提供し、アプリケーションレイヤーをホストするためのプラットフォームに進化しています。クライアントはREST経由で(WebAPIを使用して)通信します。MVCは優れたフレームワークですが、通常、この種のアプリケーションでは仕事がないことに気づきます。
ASP.NETアプリケーションは、インフラストラクチャの別のレイヤーになり、その責任は次のように制限されます。
SPAのもう1つの優れた点は、チームの帯域幅を増やすことができることです。一方のグループはサービスを爆破し、もう一方のグループはクライアントアプリに配置できます。RESTサービスを簡単にスタブまたはモックできるので、モックサービスで完全に機能するクライアントアプリを作成し、完了したら実際のサービスと交換することができます。
Angularに前もって投資する必要がありますが、それは大きな成果をもたらします。あなたはすでにMVCに精通しているので、いくつかのコアコンセプトについての知識があります。
それはあなたが取り組んでいるプロジェクトに依存します。
angleJSがあなたにとって新しいものである場合、私はむしろ小さな低リスク/プレッシャープロジェクトを選んで開始し、正しい方法で物事を行う方法を確実に学ぶことを望みます(プレッシャー、締め切りのためにAngularjsを間違って使用している多くのプロジェクトを見てきました...適切な方法でそれを学ぶ時間の不足。たとえば、JQueryを使用したり、コントローラー内のDOMにアクセスしたりするなど)。
プロジェクトがグリーンフィールドプロジェクトであり、AngularJSの経験がある場合は、ASP.net MVCを放棄し、サーバー側で純粋なREST / WebAPIを使用するのが理にかなっています。
既存のプロジェクトの場合は、機能の複雑なサブセットを取得して、そのページを個別のangularJSアプリとしてビルドできます(たとえば、アプリは標準のシンプル/中程度の複雑さのRazorベースのページで構成されていますが、高度なエディターが必要です/ページ、それはAngularJSでビルドするターゲットピースになる可能性があります)。
フロントエンド開発、つまりビューの構築にAngularフレームワークを使用できます。堅牢なアーキテクチャを提供し、学習すると、Asp.netMVCのレイザービューエンジンよりも優れていることがわかります。データをフェッチするには、WebAPIを使用する必要があり、ASP.NetMVCプロジェクトはWebAPIとMVCコントローラーの両方をすぐにサポートします。AngularおよびASP.NetMVCアプリケーション開発から始まる以下のリンクを参照できます。
http://hive.rinoy.in/angular4-and-asp-net-mvc-hybrid-application/
角度アプリケーション用のUIコンポーネントを開発するために現在利用可能な2つのフレームワークがあります。私が取り組んだ角度のあるプロジェクトの1つで、これら両方のフレームワークを使用しました。