マイグレーション

.NET 8 で Doconut をアップグレード

このページでは 2 つのマイグレーションが紹介されています:パッケージ バージョンのアップグレード(.NET 8 内)、および古い Doconut フレームワーク(.NET 6、.NET Standard 2.0、.NET Framework 4.7)から .NET 8 API への統合の移行。

パッケージ バージョンのアップグレード

  1. パッケージを更新します(プラグイン パッケージも含め、バージョンを揃えてください):
bash
dotnet add package Doconut.NET8
dotnet add package Doconut.NET8.Dicom
  1. ライセンス ウィンドウを確認してください。 ライセンスはバージョン範囲をカバーします。新しいバージョンがその範囲外の場合、開くことは ブロック されます — OpenDocumentAsyncLicenseException をスローします(即座に失敗)。透かしにフォールバックせず、IsVersionValidfalse になります。ライセンスを更新し、.lic を置き換えてアプリケーションを再起動すると、AddDoconut() が新しいライセンスを読み込みます。
  2. 再ビルドし、NuGet に宣言された依存バージョンを復元させます — System.Text.JsonSystem.Drawing.Common を再度固定しないでください(ダウングレードが引き起こす正確なエラーは Troubleshooting を参照)。
  3. 使用している各フォーマット ファミリーごとに 1 つずつドキュメントでスモークテストを行います。

.NET 6 / .NET Standard 2.0 からのマイグレーション

.NET 8 API は DI と非同期を中心に再設計されています。対応表は以下の通りです:

項目.NET 6 / Standard 2.0.NET 8
SetupViewer(cache, httpContextAccessor, licensePath) を構築builder.Services.AddDoconut(options => …) + Viewer を注入
License静的な Viewer.DoconutLicense(path) とプラグインごとの SetLicensePlugin(...)options.LicensePath / LicenseContent / LicenseStream — 1 つのライセンスで、プラグイン ファイルを自動検出
Openviewer.OpenDocument(...)(同期)await viewer.OpenDocumentAsync(...)
Closeviewer.CloseDocument() または viewer.Dispose()viewer.CloseDocument(token)ViewerIDisposable ではありません
LifetimeViewerIDisposable を実装し、開かれたドキュメントを保持しますViewer はステートレスで、セッションはトークンに基づいてキャッシュに保存されます
Converterviewer.Converter プロパティConverter プラグイン(AddPlugin<ConverterPlugin>())と DocumentConverter サービス
Config classesDoconut.Configs.View.* 名前空間Doconut 名前空間にすべて含まれます
Middleware手動でハンドラを配線app.UseDoconutResources() + app.UseDoconut()

典型的なビフォー/アフターは次の通りです:

text
// .NET 6 (old API, shown for contrast — not valid on .NET 8)
using var viewer = new Viewer(cache, httpContextAccessor, "wwwroot/Doconut.Viewer.lic");
var token = viewer.OpenDocument(path, new PdfConfig { AllowSearch = true }, new DocOptions());
csharp
// .NET 8 — Viewer injected, license configured once in AddDoconut()
var token = await viewer.OpenDocumentAsync(path, new PdfConfig { AllowSearch = true });

.NET Framework 4.7(Web Forms)からのマイグレーション

4.7 の ViewerWebControl です;.NET 8 はコントロール モデルをミドルウェア + DI サービスに置き換えます:

  • <doconut:DocViewer runat=server> コントロールはなくなります — ページはウィジェットの div ペアをホストし、エンドポイントがトークンを返します(Quick Start にパターンが示されています)。
  • 静的なライセンス メソッド → DoconutOptions のライセンス ソースへ。
  • 同期的な OpenDocumentawait OpenDocumentAsync
  • Viewer.ReferenceScripts() / ReferenceCss() は両方の環境に存在します — .NET 8 バージョンは ScriptConfig/CssConfig オブジェクトを受け取り、ライセンスで制御されます。
  • コントロール プロパティ(ShowThumbsPageZoomFixedZoom、…) → ViewerConfigdocViewer の JS オプションでも同じ名前が使用されます。
  • byte[] を返すエクスポート メソッド → Viewer の非同期アノテーション エクスポート API に置き換えられます。

このマイグレーションは、概念を変更せずにホスティング層を書き換えることとして計画してください:open → token → widget。

名前に関する注意

すべてのフレームワークでクラスは Viewer です — 旧スニペットやサードパーティの記事で DocumentViewer を見つけても、その型は SDK には存在しません。

マイグレーション チェックリスト

  1. パッケージを入れ替え、プラグイン パッケージのバージョンを揃えます。
  2. ライセンス設定を AddDoconut() に移動し、静的なライセンス呼び出しを削除します。
  3. 開く呼び出しを非同期にし、Dispose や引数なしの CloseDocumentCloseDocument(token) に置き換えます。
  4. viewer.Converter の使用を、Converter プラグインの登録と DocumentConverter に置き換えます。
  5. セキュリティ パスを再テストします:デフォルトのセキュリティでは AddSession()/UseSession() が必須です。

このページは役に立ちましたか?