マイグレーション
.NET 8 で Doconut をアップグレード
このページでは 2 つのマイグレーションが紹介されています:パッケージ バージョンのアップグレード(.NET 8 内)、および古い Doconut フレームワーク(.NET 6、.NET Standard 2.0、.NET Framework 4.7)から .NET 8 API への統合の移行。
パッケージ バージョンのアップグレード
- パッケージを更新します(プラグイン パッケージも含め、バージョンを揃えてください):
bash
dotnet add package Doconut.NET8
dotnet add package Doconut.NET8.Dicom- ライセンス ウィンドウを確認してください。 ライセンスはバージョン範囲をカバーします。新しいバージョンがその範囲外の場合、開くことは ブロック されます —
OpenDocumentAsyncはLicenseExceptionをスローします(即座に失敗)。透かしにフォールバックせず、IsVersionValidはfalseになります。ライセンスを更新し、.licを置き換えてアプリケーションを再起動すると、AddDoconut()が新しいライセンスを読み込みます。 - 再ビルドし、NuGet に宣言された依存バージョンを復元させます —
System.Text.JsonやSystem.Drawing.Commonを再度固定しないでください(ダウングレードが引き起こす正確なエラーは Troubleshooting を参照)。 - 使用している各フォーマット ファミリーごとに 1 つずつドキュメントでスモークテストを行います。
.NET 6 / .NET Standard 2.0 からのマイグレーション
.NET 8 API は DI と非同期を中心に再設計されています。対応表は以下の通りです:
| 項目 | .NET 6 / Standard 2.0 | .NET 8 |
|---|---|---|
| Setup | Viewer(cache, httpContextAccessor, licensePath) を構築 | builder.Services.AddDoconut(options => …) + Viewer を注入 |
| License | 静的な Viewer.DoconutLicense(path) とプラグインごとの SetLicensePlugin(...) | options.LicensePath / LicenseContent / LicenseStream — 1 つのライセンスで、プラグイン ファイルを自動検出 |
| Open | viewer.OpenDocument(...)(同期) | await viewer.OpenDocumentAsync(...) |
| Close | viewer.CloseDocument() または viewer.Dispose() | viewer.CloseDocument(token) — Viewer は IDisposable ではありません |
| Lifetime | Viewer は IDisposable を実装し、開かれたドキュメントを保持します | Viewer はステートレスで、セッションはトークンに基づいてキャッシュに保存されます |
| Converter | viewer.Converter プロパティ | Converter プラグイン(AddPlugin<ConverterPlugin>())と DocumentConverter サービス |
| Config classes | Doconut.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 の Viewer は WebControl です;.NET 8 はコントロール モデルをミドルウェア + DI サービスに置き換えます:
<doconut:DocViewer runat=server>コントロールはなくなります — ページはウィジェットのdivペアをホストし、エンドポイントがトークンを返します(Quick Start にパターンが示されています)。- 静的なライセンス メソッド →
DoconutOptionsのライセンス ソースへ。 - 同期的な
OpenDocument→await OpenDocumentAsync。 Viewer.ReferenceScripts()/ReferenceCss()は両方の環境に存在します — .NET 8 バージョンはScriptConfig/CssConfigオブジェクトを受け取り、ライセンスで制御されます。- コントロール プロパティ(
ShowThumbs、PageZoom、FixedZoom、…) →ViewerConfigやdocViewerの JS オプションでも同じ名前が使用されます。 byte[]を返すエクスポート メソッド →Viewerの非同期アノテーション エクスポート API に置き換えられます。
このマイグレーションは、概念を変更せずにホスティング層を書き換えることとして計画してください:open → token → widget。
名前に関する注意
すべてのフレームワークでクラスは Viewer です — 旧スニペットやサードパーティの記事で DocumentViewer を見つけても、その型は SDK には存在しません。
マイグレーション チェックリスト
- パッケージを入れ替え、プラグイン パッケージのバージョンを揃えます。
- ライセンス設定を
AddDoconut()に移動し、静的なライセンス呼び出しを削除します。 - 開く呼び出しを非同期にし、
Disposeや引数なしのCloseDocumentをCloseDocument(token)に置き換えます。 viewer.Converterの使用を、Converter プラグインの登録とDocumentConverterに置き換えます。- セキュリティ パスを再テストします:デフォルトのセキュリティでは
AddSession()/UseSession()が必須です。
このページは役に立ちましたか?