web-dev-qa-db-ja.com

ミキシングAngularとASP.NET MVC / Web API?

私はASP.NET MVC/Web APIを使用してきましたが、現在Angularを使用し始めていますが、それらを適切に混合する方法が明確ではありません。

Angularを使用すると、MVCサーバー側の概念にまだ価値がありますか?または、厳密にWeb APIを使用して、angular HTTP呼び出しのデータを取得する必要がありますか?

Angularに移行するASP.NET MVC向けのヒントは参考になります

86
user2256870

Pure Web API

以前はASP.NET MVCでかなり筋金入りでしたが、会ったのでAngularを使用する理由がわかりませんanyサーバー側のコンテンツ生成フレームワーク。Pure Angular/REST(WebApi)は、よりリッチでスムーズな結果をもたらします。はるかに高速で、ファンキーなハッキングなしでデスクトップアプリケーションに非常に近いWebサイトを構築できます。

Angularには少し学習曲線がありますが、チームがそれを習得すると、より短時間でより良いWebサイトを構築できます。これは主に、これらのすべての状態(より少ない)問題がもうないという事実に関係しています。

たとえば、従来のサーバー側フレームワークでウィザード形式を想像してください。各ページは個別に検証および送信する必要があります。ページのコンテンツは、前のページの値に依存している可能性があります。ユーザーが戻るボタンを押して、以前のフォームを再送信している可能性があります。クライアントの状態はどこに保存しますか? AngularおよびRESTを使用する場合、これらすべての複雑さは存在しません。

だから...暗黒面に来て...私たちはクッキーを持っています。

同様の質問

112
null

AngularJSは、単一ページアプリケーションのパラダイムとの関連性が高いため、マークアップをレンダリングするサーバー側のテクノロジーのメリットはあまりありません。それらを一緒に使用することを妨げる技術的な理由はありませんが、実際的な意味では、なぜですか?

SPAは必要なアセット(JS、CSS、およびHTMLビュー)を取得し、単独で実行され、サービスと通信してデータを送信または取得します。そのため、それらのサービス(および認証などのその他の手段)を提供するためにサーバー側の技術が依然として必要ですが、レンダリング部分はほとんど無関係であり、MVCが行うことを除いて、努力の重複であるため特に有用ではありませんサーバー側でAngularはクライアントでそれを行います。Angularを使用している場合、最良の結果を得るためにクライアントでそれが必要です。Angular = HTMLフォームを投稿し、MVCアクションから部分ビューを取得しますが、Angularの最良かつ最も簡単な機能を逃し、人生をより困難にします。

MVCは非常に柔軟であり、それを使用してSPAアプリケーションからの呼び出しを処理できます。ただし、WebAPIはより細かく調整されており、そのようなサービスでの使用が少し簡単です。

既存のWebFormsおよびMVCアプリケーションから移行したカップルを含むいくつかのAngularJSアプリケーションを作成しました。ASP.NETの側面は、AngularJSアプリを実際のクライアントとして配信し、アプリケーション層をホストするためのプラットフォームに進化しますクライアントはREST(WebAPIを使用)を介して通信します。MVCは優れたフレームワークですが、通常、これらの種類のアプリケーションでは仕事がありません。

ASP.NETアプリケーションはインフラストラクチャの別のレイヤーになり、その責任は次のように制限されます。

  • 依存関係コンテナをホストします。
  • ビジネスロジック実装をコンテナに配線します。
  • JSとCSSのアセットバンドルをセットアップします。
  • WebAPIサービスをホストします。
  • セキュリティを強化し、ログと診断を実行します。
  • パフォーマンスのためのアプリケーションキャッシュとのインターフェイス。

SPAのもう1つの素晴らしい点は、チームの帯域幅を増やすことができることです。 1つのグループはサービスを爆破し、もう1つのグループはクライアントアプリに配置できます。 RESTサービスを簡単にスタブまたはモックできるため、モックサービスで完全に機能するクライアントアプリを作成し、完了したら実際のサービスに交換できます。

あなたはAngularに前もって投資する必要がありますが、それは大きな成果をもたらします。既にMVCに精通しているので、いくつかの主要な概念について理解することができます。

43
HackedByChinese

作業しているプロジェクトに依存します。

AngularJSがあなたにとって新しいものである場合、私はむしろ低リスク/圧力の小さなプロジェクトを選んで開始し、正しい方法で物事を行う方法を学ぶことを確実にします(圧力、期限のためにAngularjsを間違って使用している多くのプロジェクトを見てきました... JQueryを使用したり、コントローラー内でDOMにアクセスしたりするなど、適切な方法で学習する時間がない。

プロジェクトがグリーンフィールドプロジェクトであり、AngularJSでの経験がある場合は、ASP.net MVCを放棄し、サーバー側で純粋なREST/WebAPIを使用することをお勧めします。

既存のプロジェクトの場合、機能の複雑なサブセットを選択して、そのページを個別のangleJSアプリとして構築できます(たとえば、アプリは標準のシンプル/中程度の複雑さのRazorベースのページで構成されていますが、高度なエディタ/ページ、AngularJSでビルドするターゲットピースになる可能性があります)。

6
Braulio

Angularフレームワークを使用して、フロントエンド開発、つまりビューを構築します。堅牢なアーキテクチャを提供します。学習すると、Asp.net MVCのカミソリビューエンジンよりも優れていることがわかります。 WebAPIを使用する必要があり、ASP.Net MVCプロジェクトはすぐにWebAPIとMVCコントローラーの両方をサポートします。AngularとASP.Net MVCアプリケーション開発で始まるリンクを下から参照できます。

http://Hive.rinoy.in/angular4-and-asp-net-mvc-hybrid-application/

angularアプリケーションのUIコンポーネントを開発するために現在利用可能な2つのフレームワークがあります。私はこれらのフレームワークをangular作業したプロジェクトの1つで使用しました。

素材https://material.angular.io/

PrimeNGhttps://www.primefaces.org/primeng/#/

0
rinoy