プロジェクトテンプレート

PowerPortalsProは、Dataverse接続、認証、セキュリティハンドラー、ローカリゼーション、事前構築されたアイデンティティページという2つのプロジェクトテンプレートを出荷しており、数分で実行可能です。 React のシングルページアプリ(推奨)と Blazor のウェブアプリの両方が利用可能で、PowerPortalsProの機能セットは両者で同一です。チームに合ったフロントエンドスタックを選んでください。

テンプレートのインストール

.NET CLIを使ってNuGetから PowerPortalsPro.AspNetCore.Templates パッケージをインストールします。両方のテンプレートはこの1つのパッケージで同梱されています:

テンプレートの選択

インストール後、.NET CLIまたはVisual Studioの「新しいプロジェクト」ダイアログ(「Power Portals Pro」で検索)からプロジェクトを作成します。2つのテンプレートが利用可能です。あなたのフロントエンドスタックに合ったものを選びましょう:

React(推奨)

Fluent UI Reactをベースに構築したReact + Vite + TypeScriptのシングルページアプリと組み合わせた ASP.NET Coreホストです。新しいポータルに推奨されます。最新のフロントエンドツール、高速なホットリロード開発ループ、そして最も幅広いコンポーネントセットです。

ブレイザー

Fluent UI Blazorを基にした ASP.NET コアBlazorウェブアプリで、スキャフォルド時に --interactivityで選択できるレンダリングモードがあります。チームが主にC#で作業し、完全に.NET UIスタックに留まりたい場合に最適です。

おすすめ

両テンプレートは、グリッド、エディタ、セキュリティ、ローカリゼーション、アイデンティティなど、同じPowerPortalsProの機能を公開しています。チームが特にC#でいなければならない場合を除き、新しいプロジェクトには React を推奨します。その場合はBlazorテンプレートが完全にサポートされています。

Reactテンプレート

powerportalspro-reactテンプレートは、2つのプロジェクトを同時に生成します。

ブレイザー・インタラクティビティ・モード

Blazorテンプレートはさらに、--interactivity Server--interactivity WebAssembly、または--interactivity Autoでレンダリングモードを選択できます(Reactテンプレートは常にシングルページアプリなので、同等のオプションはありません)。最初にモードを選択すると生成されたプロジェクトレイアウトにのみ影響します — PowerPortalsPro自体は3つすべてで正しく動作します。詳細な比較についてはBlazor Interactiveのページをご覧ください。

ヒント

--interactivityのフラグは同名のテンプレートのdotnet new blazorのフラグと一致しているので、Blazorのレンダリングモードについて既に知っていることは引き継がれます。

テンプレートオプション

どちらのテンプレートも dotnet new オプションを公開しているので、生成されたプロジェクトを最初からカスタマイズできます。コマンドラインで渡すか、Visual Studioのプロジェクト作成画面(および dotnet new インタラクティブUI)で選択してください。最も有用な選択肢:

例えば、GoogleサインインとAzure機械翻訳を備えた、両方のオーディエンス向けの自動レンダリングBlazorポータル:

ヒント

dotnet new powerportalspro -h(またはdotnet new powerportalspro-react -h)を実行して、すべてのオプションとそのデフォルトをリストアップします。Visual Studioでは、これらはプロジェクト作成画面のチェックボックスやドロップダウンとして表示されます。

含まれるもの

テンプレートは以下の機能を備えた完全なポータルプロジェクトを生成します:

理解Program.cs

Program.csファイルはすべてのサービスが登録され、アプリケーションパイプラインが設定されている場所です。各セクションの内訳は以下の通りです:

Reactテンプレート

以下のウォークスルーはBlazorテンプレートのProgram.csを説明しています。Reactテンプレートのホストは、AddPowerPortalsProWebServer()、Dataverse ConnectionOptions、ローカライズ、セキュリティハンドラー、メールといった同じコアサービスを登録しますが、Blazor特有のAddPowerPortalsProWebBlazorFluentUI()登録を省略し、代わりにReact SPAを担当し、認証エンドポイントはMapAdditionalIdentityEndpoints()ではなくMapAuthEndpoints<PortalUser>()で公開しています。

分散キャッシュ

テンプレートはメモリベースの分散キャッシュを登録します。本番環境では、複数のインスタンス間でより良いパフォーマンスを得るために、RedisやSQL Serverのような永続キャッシュに置き換えます。

Fluent UI登録

AddPowerPortalsProWebBlazorFluentUI() PowerPortalsProエディタ、グリッド、レイアウトコンポーネントで使用されるすべてのFluent UI Blazorコンポーネントを登録します。

サーバーサービス

AddPowerPortalsProWebServer() Dataverseデータアクセス層、セキュリティ強制、インターセプターパイプライン、ローカライズロードなどのコアサーバーサイドサービスを登録します。

Dataverse 接続

ConnectionOptions構成は、ポータルがDataverseでどのように認証するかを指定します。このテンプレートは、appsettings.jsonまたはユーザーシークレットに保存された認証情報を用いてクライアントシークレット認証を使用します。

ヒント

セキュリティのベストプラクティスとしては、開発時にはユーザーシークレットに認証情報を保存し、本番環境ではAzure Key Vaultや環境変数に保存してください。ソース管理に秘密をコミットしてはいけません。

ローカライゼーション構成

AddLocalizationDirectory ローカライズJSONファイルを含むディレクトリを登録します。デフォルトでは LocalizeAllAvailableTablestrueなので、ラベル、列名、ビュー名はすべてのDataverseテーブルから自動的に取得されます。 false に設定し、 AddTableToLocalize / AddTablesToLocalize でローカライズを明示的なリストに制限してください。

アイデンティティ・オプション

IdentityOptionsセクションでは、ログイン前にメール確認を必須するなど、コアIDの設定 ASP.NET 設定が設定されています。

機械翻訳(任意)

ローカリゼーション管理者ページの「ファイル翻訳パネル」用に機械翻訳を配線するための--IncludeMachineTranslationでプロジェクトを生成します。テンプレートは選択したプロバイダーのPowerPortalsPro.Web.Server.Translation.*パッケージとその登録を下に追加します。プロバイダーは--MachineTranslationProviderで選択します:Azure(デフォルト)、DeepL、またはGoogle。プロバイダーの鍵は、Azure:Translation:KeyDeepL:Translation:Key、またはGoogle:Translation:Keyの設定やユーザーシークレットを通じて提供し、一致させます。

ヒント

このオプションがなくても、ローカリゼーション管理者ページは動作します。パイプラインの概要やソースごとのダウンロード/マージダウンロードには影響がありません。翻訳パネルだけが非表示のままで、登録はコメント付きのガイダンスとして配信されるので、後で手動で有効化できます。

セキュリティハンドラー登録

権限ハンドラはDIコンテナに登録され、各テーブルのCRUDアクセスを制御します。テンプレートにはアカウント(フルアクセス)と連絡先(オーナーベースの更新で読み取り専用)のハンドラーが含まれています。

メール設定

EmailServiceOptionsはアカウント確認やパスワードリセットメールに使う送信者のメールアドレスを設定します。これはDataverseのメールサービスを通じて送信されます。

Microsoft認証(任意)

テンプレートにはMicrosoft Entra ID(Azure AD)認証を追加するためのコメント付きコードが含まれています。コメントを消して、クライアントIDとシークレットを設定してMicrosoftアカウント経由で外部ログインを有効にしてください。

ミドルウェアパイプライン

UsePowerPortalsProWebServer() PowerPortalsProミドルウェアを追加しています。 UseLocalization() ローカライゼーションシステムを可能にします。 MapAdditionalIdentityEndpoints() アイデンティティページで使用されるクッキーベースのログインエンドポイントを登録します。

二要素認証(任意)

テンプレートには、メールベースのコードを用いた二要素認証を有効にするためのコメント付きコードが含まれています。 AuthenticatorTokenProvider オプションと有効化 AddDefaultTokenProviders() 通話のコメントを消してください。

一般的なカスタマイズ

プロジェクトの足場を組んだ後、次の一般的なステップは以下の通りです。