web-dev-qa-db-ja.com

Razor PagesがAsp.net Core 2.0でWeb UIを作成するための推奨アプローチであるのはなぜですか?

新しいことを学ぶには、時間、空間、エネルギーの投資が必要です。現在、Asp.Net Core MVC 2.0を学んでいます。この ASP.NET Coreチュートリアルの概要 状態:

Razor Pagesは、ASP.NET Core 2.0でWeb UIを作成するための推奨アプローチです。

この情報は、Asp.net Core MVCの学習を停止し、Asp.net Core Razorページの学習を開始する必要があるかどうかを判断する際に私を混乱させました。

  • Razor PagesがAsp.net Core 2.0でWeb UIを作成するための推奨アプローチであるのはなぜですか?

任意の方向は大歓迎です。

Razor Pagesはページベースのワークフロー向けに最適化されており、従来のMVCモデルよりも少ない可動部品でこれらのシナリオで使用できます。これは、コントローラー、アクション、ルート、ViewModel、およびビューを処理する必要がないためです(通常の場合)。代わりに、ルートは規則に基づいており、PageModelはController、Action(s)、ViewModelをすべて1つにしています。もちろん、ページはビューに置き換わります。また、MVCの場合ほど多くのフォルダを用意する必要がないため、プロジェクトがさらに簡素化されます。

ASP.NET Core-Razor Pagesを使用したシンプルなASP.NET MVCアプリ 、2017年9月のMSDN記事 Steve Smith

[Razor Pages]が提供します

  • aSP.NET Coreアプリケーション内でコードを整理する簡単な方法で、実装ロジックとビューモデルをビュー実装コードに近づけます。
  • また、ASP.NET Coreアプリの開発を開始するためのより簡単な方法も提供します。

この記事には、ページベースのワークフローでMVCを介してRazor Pagesを使用する理由に関する詳細が記載されています。明らかに、APIの場合は、引き続きコントローラーを使用する必要があります。

サードパーティの編集-従来のMVCフォルダー編成の欠点

ASP.NET Core-ASP.NET Core MVCの機能スライス 、2016年9月の古いMSDN記事で、ビューとコントローラーを整理するための従来のMVC規則が大規模プロジェクトに不利になる理由を説明しています。この記事では、4つの大まかに関連するアプリケーションの概念の例を示します:Ninjas、Plants、Pirates、およびZombies。この記事では、機能または責任範囲ごとにファイルをフォルダーに整理することにより、デフォルトのフォルダー規則以外でファイルを構成する方法の概要を説明します。

34
ssmith

マイクロソフトはWebFormsアプローチに戻り、「構成より規約」という信条を信頼するプロジェクト構造を簡素化すると同時に、開発者から構成を隠して作業を高速化します。しかし、すべてが再び混合されるという不利な点があります。私は整理のためのスマートな動きのように見えません。しかし...ねえ!何か新しいものは、マイクロソフトに対する開発者の注意を引く必要があります。

ページでREStfulにMVC Web APIを使用している場合、Razorページを使用する方が本当に簡単です。そうでない場合は、Core MVCを使用することをお勧めします。

モデルとコントローラーが同じファイル内にある巨大なプロジェクトでは、メンテナンスは悪夢になります。それは、たった2つのプロパティの長さのクラスに対してはうまく機能しますが、OOPのオープンクローズの原則に違反しています。時間とともに拡張可能なアーキテクチャ(拡張可能)を設計および使用し、安定性とロジック(プロジェクトの再構築なし)を維持し、同じパターンを使用して拡張するだけです。

7
Sterling Diaz

アーキテクチャの観点から、コードへのナビゲーションなどは、ソリューションを階層化する方法で定義できます。 Razorページベースのソリューションでこれを行う方法を知りたいです。

Razorページでの共有およびグループ化アクションのサポートについてはどうですか。 MVCコントローラーを見ると、機能に基づいてコントローラーアクションをグループ化できることがわかります。ホームページはそのような機能であると言えます。次に、About()とContact()を含むHomeControllerがありますが、Razor Pagesではこれは異なるページになります。 5つの他のビューが含まれる大きなHomeControllerがあるかもしれません。それらはすべて同じHomeControllerにグループ化できます。

コントローラーには、Razor Pagesにはない2つの機能があります。

  1. 共有:異なるページ間でコントローラーアクションを共有できます。コントローラーアクションは1つのページだけにバインドされず、複数のページ間で共有できる場合があります。また、コントローラーアクションはデータ(JSON/XML /など)のみを返すこともできます。それらが返すものは、異なるページでも使用できる場合があります。
  2. グループ化:関連するコントローラーアクションを1つのコントローラーにグループ化できます。 Okあなたが小さなコントローラーファイルのファンなら、これはしません。私がやります。機能に基づいてコントローラーをグループ化します。これにより、ナビゲーションがはるかに簡単になります。

これを処理するRazorページの方法は何ですか?ディレクトリの使用:

  • Grouping: HomeControllerがある場合、すべてのホームページを含むサブディレクトリHomeを作成できます。

質問:十分な単純なホームの場合。しかし、すべてのアクションに同じリポジトリを使用するXControllerがあるとします。 XControllerのInitializer関数でそのリポジトリを初期化できます。ただし、Xサブディレクトリ内のページの場合は、すべてのXアクションに対して再度行う必要があります。それは乾燥していますか?

  • 共有:「共有」サブディレクトリを作成し、その下に、ページ間で共有する必要がある機能を持つディレクトリを作成できます。

質問:私の修正を見れば、ディレクトリを使用してRazorページの共有とグループ化の問題を解決していることがわかります。

これをどうしますか?

または... Razorページは単純なWebサイト用であるため、これはこのバージョンのRazorページの結論かもしれません。

1