DoconutExtensions
サービスとミドルウェアの登録
DoconutExtensions(名前空間 Doconut.Middleware)は、すべての Doconut ホストが行う 3 つの呼び出し(1 つのサービス登録と 2 つのミドルウェア登録)を提供する静的クラスです。
builder.Services.AddDoconut(options => { /* … */ });
// …
app.UseDoconutResources(); // BEFORE UseDoconut()
app.UseDoconut();AddDoconut
IServiceCollection AddDoconut(this IServiceCollection services, Action<DoconutOptions>? configure = null)DoconutOptions を構築し、失敗時にすぐに検証します(DoconutOptions → スタートアップ検証 を参照)、そして完全なサービスグラフを登録します。
| サービス | ライフタイム | 役割 |
|---|---|---|
DoconutOptions | シングルトン | 設定オブジェクト |
IViewerFactory | シングルトン | 拡張子をフォーマットビューアにマッピングします |
IDocumentSessionManager | シングルトン | トークン → セッションキャッシュ(IMemoryCache も登録されます) |
IDoconutLicenseService | シングルトン | ライセンスは起動時に一度ロードされます(優先順位: LicenseStream → LicenseContent → LicensePath → 自動検索) |
PageImageService | シングルトン | ページ画像パイプライン(透かし/回転/スケール/注釈) |
| Document security (access store) | シングルトン | トークンとセッションのバインディングのための権限付与 |
Viewer | トランジェント | 公開のオープン/クローズファサード |
DocumentConverter | トランジェント | 変換ファサード — Converter プラグインが必要です |
DistributedDocumentPublisher | — | ドキュメントのアーティファクトを共有ストレージに公開します |
Health check "doconut" | — | ライセンス/有効期限の状態を ASP.NET ヘルスチェックで報告します |
以前の .NET Standard ライブラリには同等の呼び出しはありませんでした。リクエストごとに new Viewer(cache, accessor) を構築し、オプションをミドルウェアに渡していましたが、これらはこの単一の登録で置き換えられます。
知っておくべき 2 つの動作:
- Converter はプラグインが必要です。
options.AddPlugin<ConverterPlugin>()を使用せずにDocumentConverterを解決しようとすると、例外がスローされます:
InvalidOperationException: No IDocumentConverter is registered. Add the converter plugin: options.AddPlugin<Doconut.Plugins.Converter.ConverterPlugin>().- プラグインの権利は起動時に検証されます。 ライセンスが欠如している、レガシーな
TRIALファイルがある、または登録されたプラグインの機能がない有料ライセンスの場合、AddDoconut()時に失敗します。 一時的/デモの登録は有効期限が過ぎても存続しますが、ランタイムのゲートは期限切れの機能を取り消します。
ヘルスチェックは標準の ASP.NET Core メカニズムと統合されます — ヘルスエンドポイントでライセンス状態を確認したい場合はマッピングしてください:
app.MapHealthChecks("/health");UseDoconut
IApplicationBuilder UseDoconut(this IApplicationBuilder app)Doconut のページ画像ミドルウェアを追加します。?token= クエリパラメータを含むすべてのリクエストに応答します — ページ、サムネイル、検索、注釈、ページアクション(完全なリクエストテーブルは Core Concepts → ビューアの仕組み にあります)。UnsafeMode が false の場合、ドキュメントセキュリティ層が自動的にその前に組み込まれます。
引数はありません。 ここで DoconutOptions インスタンスを渡すのは以前のライブラリの形態であり、現在はコンパイルできません。
参照サンプルはウィジェットのリクエストをパスブランチを通してルーティングし、従来のリクエスト形状を保持します:
app.MapWhen(
ctx => ctx.Request.Path.Value?.EndsWith("DocImage.axd", StringComparison.OrdinalIgnoreCase) == true,
branch => branch.UseDoconut());UseDoconutResources
IApplicationBuilder UseDoconutResources(this IApplicationBuilder app)DoconutOptions.ResourcesPath(デフォルトは /doconut-res)で埋め込みの JS、CSS、画像、フォントを提供します。これらは Viewer.ReferenceCss() / ReferenceScripts() がタグを出力するファイルです。
UseDoconut() の前に必ず呼び出してください。 ビューア領域が空のままで、ブラウザコンソールに /doconut-res/... の 404 が表示される場合、この呼び出しが欠如しているか、位置が間違っています。
これは、app.UseMiddleware<EmbeddedResourceMiddleware>() で手動で埋め込みリソースミドルウェアを配線する代わりにサポートされている置き換えです。
Serving from shared storage
ドキュメントをレンダリングするノードが必ずしもページを提供するノードでないデプロイメント向けに、さらに 2 つの登録があります。これらは 分散デプロイメント でエンドツーエンドでカバーされており、シグネチャは次のとおりです:
IServiceCollection AddDoconutDistributedAsyncPublish(...) // opt-in background publish queue
IServiceCollection AddDoconutDistributedWidgets(...) // shared backing store for widget uploads読み取り側は Doconut.Clouds パッケージの別個のミドルウェアです:
IApplicationBuilder UseDoconutCloud<THandler>(
this IApplicationBuilder app,
Action<CloudOptions>? configure = null,
string pathPrefix = "/doconut-cloud")
where THandler : BaseCloudHandlerUseDoconutWebFarm(...) と WebFarmOptions はこのリリースには存在しません。設定ごとのマッピングについては 移行ガイド を参照してください。
Ordering recap
app.UseRouting();
app.UseSession(); // required when UnsafeMode = false
app.UseDoconutResources(); // 1st Doconut call
app.UseDoconut(); // 2nd Doconut call (or via a MapWhen branch)このページは役に立ちましたか?