ASP.NET Core 2.0 RazorとAngular / React / etc


101

私のチームと私は、エンタープライズレベルのWebアプリケーションの開発を開始するための資金を受け取りました(アプリケーションの機能の詳細には触れません)。アプリケーションには多くの個別のWebページがありますが、これらのページのうちの2つはより集中的で非常に重いです-多くのユーザー操作のように重い、大量のデータを表示するモーダル、WebSocket接続、チャットなど。

私はプロジェクトのチーフアーキテクトに割り当てられているので、最新のWebフレームワークについて調査しています。バックエンドについては、いくつかのテストを行い、Azure SQLプラットフォームを使用することを決定しました。これまでのところ、私はCore 2.0を使用したASP.NETに対して行われ、行われている改善を気に入っています。具体的には、ASP.NET MVCの以前のバージョンに対するRazorエンジン。

「新しい」Razor対Angular / Reactなどについて専門家の意見を聞きたかった。特にパフォーマンスに関心があります。Core 2.0 Razorはクライアント側のレンダリングフレームワークにどのように対応しますか?違いは無視できますか?私たちのアプリは、潜在的な1,000,000ユーザー(約100,000同時)をターゲットにしています。

前もって感謝します!


4
" 新しいRazor "とは、Razorページを意味しますか?
Werner

36
結局どちらを選びましたか?
stt106 2018

5
どのようにしてこのプロジェクトに乗り込みましたか(または乗り込んでいますか)?私は現在あなたとほとんど同じ状況にあり、アップデートが大好きです!
JLo

10
こんにちはJLoとstt106。応答に時間がかかりすぎて申し訳ありません。Azure SQLを使用して、最終的にはAngularフロントエンドとASP.NET Core APIバックエンドを使用しました。これまでのところ、うまくいきました!Reactは、Angularの方が使いやすいのであれば、Angularに似た代替品になると思います。Angularを学ぶ必要がありましたが、これは非常に簡単な移行でしたが、今は大好きです!
TchPowDog

ASP.Net CoreとAngular / Reactの速度比較はトピック外ですか?それに対する正規の答えがあるかもしれません。今日に関しては、Core 2.2とすぐに3.0があります。
MikroDel

回答:


73

Azure SQLを使用して、最終的にはAngularフロントエンドとASP.NET Core APIバックエンドを使用しました。Core Razorをテストしましたが、Angularは従来のRazorより優れていましたが、結局ははるかに高速でした。ユーザーエクスペリエンスに関して言えば、Angular(またはReact)はパフォーマンスの点ではるかに優れています。Angularのモデルバインディングの側面は、サーバー側レンダリングの大きな利点であることがわかりました。ただし、Razor(または一般的なサーバー側レンダリング)を使用すると、データに関する限り、全体的な整合性が向上し、フロントエンドからバックエンドへのデータの移行が改善されます。フロントエンドフレームワークとAPIの間には真の切り離しがあります。サーバーに渡されるすべてのデータは、型指定されたオブジェクトにキャストする必要があります。つまり、2つの別個のPOCOモデルセットを管理する必要があります。サーバーオブジェクトとフロントエンドオブジェクトが一致しない場合、これにより問題が発生する可能性があります。現時点では、Entity Framework Coreはあまり成熟していないため、オブジェクトの更新、子オブジェクトを含むオブジェクトのクエリなどに問題があります。

全体として、これまでのところ、この設定はうまく機能しています。Reactは、Angularの方が使い慣れていれば、Angularに似た代替品になると思います。Angularを学ぶ必要がありましたが、これは非常に簡単な移行でしたが、今は大好きです!


5
2つのPOCOモデルセットの同期を維持する限り、VSにはMVCモデルから角度インターフェイスを作成する非常に便利な拡張機能があります。タイプライターを
Andy Braham

個人的には、Angularを使用する必要がある場合は、DBパーツにNoSqlを使用します。
Venzentx 2018年

2
Angularを超えるASP.NETかみそりを選択することは想像できません。以前は、ASP.NETは.NET開発者に使い慣れたコードを提供していましたが、RAZORを使用すると、Angularを使用するよりも学習曲線が高くなります。MVCはHTMLからロジックを分割します。
マーク

1
@Mark信じられない。Razorページは、特にデータバインディングの処理方法としては完璧です。彼らはあまりにも良いです。しかし、彼のシナリオにはもちろん、角度が完全に適しています。
Mosia Thabo

2
@MosiaThabo、マークはRazor Pagesについて話しているのではなく、Razorについて話している。これは私のOPが言及したものです。私の元の投稿では、Razor Pages(または現在はBlazorと呼ばれている)を指していませんでした。具体的には、クライアント側のレンダリングとサーバー側のレンダリングについて話していました。Razor Pagesは、Angular / ReactのMicrosoftのフレーバーです。AngularとReactには利点があるため、Razor Pagesは必要だと思います。
TchPowDog

49

Angular / Reactをサーバー側のAPIで使用する場合:

  • サーバー側でHTMLを生成するプロセスを排除し、CPUを節約する
  • apiは小さなペイロード(json)を生成し、コースのRazor(html)はサイズがはるかに大きくなり、一定の全ページのリロードとポストバックの往復が発生します。だからAPIとSPAは帯域幅を節約します
  • apiとspaは、バージョン管理、スケーリング、およびデプロイメントのシナリオが異なる可能性があります
  • APIを使用することでモバイルアプリもサポートできるようになり、Razorから始める場合は将来的にAPIが必要になる可能性があります

しかし、Angular / Reactを使用すると、クライアントについて心配する必要があります。

  • クライアントはJavaScriptを有効にする必要があります
  • クライアントには最新のブラウザが必要です
  • クライアントには十分な強力なハードウェアが必要です
  • SEO

1
私は2つのフレームワークの違いを理解し、パフォーマンスを重視しました。
TchPowDog 2017年

両方に同じパイプラインが存在しますが、かみそりのページにベンチマークが存在することは知りません。このリンクが役立つ場合があります-ASP.NET Razorページvs MVC:Razorページはツールボックスにどのように収まりますか?
Mohsen Esmailpour 2017年

1
Razorはモバイルをサポートしていますが、リストされているデメリットは問題ではありません。どちらも独自の方法で高速です。私はAngularを好みますが、どちらも最適化されています。Razorは、MVCのようにツリーを使用しないことでコードを最適化します。Angularはクライアントサイドなので、実際にはツリーを使用しませんが、HTMLのデータをある程度最適化します。
Nick Turner

@NickTurnerスマートフォンでウェブページを表示するだけでなく、独自のアプリをフル活用していることを理解しました。たとえば、Androidアプリは、変更されていないサーバーAPIからデータをそのまま取得できますが、一方でAndroidが提供する機能を使用します-より優れたアニメーションサポート、通知、トーストメッセージなど
Raphael Schmitz

23

ベンチマークはありません。しかし、JQuery、Razor、.NET MVC(C#)、AJAXを実行しているプロジェクトがいくつかあります。あなたが取り組んでいる規模ではありません。

アドバイス..物事をよく考え、ベストプラクティスに従ってください。保守性を維持するために、コントローラー、ビュー、モデルをより小さく意味のあるグループに分割してください。私が始めたとき、私はすべてを1つのHomeコントローラーに入れ、共有フォルダーに大量のビューを配置するという間違いを犯しました。最初は問題ありませんでしたが、機能のクリープが始まると、混乱してしまい、戻って再設計することが困難になりました。

Linq2SQLも使用しています。すべてのモデルを作成するのは間違いでしたが、クエリの結果セットをモデルとして返すだけでよいことに気付きました。ああ。

.NET MVCを使用していて、パフォーマンスが心配な場合、私が遭遇したのは次のようなものです。

HTMLの大きなブロックを作成する部分的なビューを返さないでください!すべてを最小化するようにしてください。すべての空白を取り除きます。より小さいID名を使用してください。時間をかけて、できるだけ軽量なhtmlを作成してください。JSONを返し、クライアントにいくつかの作業を行わせます。

CSSの開発方法に注意してください。一連のインラインスタイルを使用しないでください。後で最小化できるCSSファイルに組み込む時間を取ってください。

クライアント側のJSについても同様です。JSを部分ビュー内に配置するのは魅力的です。整理整頓してください。

IEでのレンダリングは恐ろしいです。特に画像が多い場合。もちろん、品質を損なうことなく、可能な限り画像を圧縮してください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.