マイグレーション
.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を再度固定しないでください(ダウングレードが引き起こす正確なエラーはトラブルシューティングを参照)。 - 使用している各フォーマット ファミリーにつき 1 つのドキュメントでスモークテストを行います。
.NET 6 / .NET Standard 2.0 からの移行
.NET 8 API は DI と非同期を中心に再設計されています。対応表は以下の通りです:
| 項目 | .NET 6 / Standard 2.0 | .NET 8 |
|---|---|---|
| 設定 | Construct Viewer(cache, httpContextAccessor, licensePath) | builder.Services.AddDoconut(options => …) + inject Viewer |
| ライセンス | Static Viewer.DoconutLicense(path) + SetLicensePlugin(...) per plugin | options.LicensePath / LicenseContent / LicenseStream — one license, auto-discovery for plugin files |
| 開く | viewer.OpenDocument(...) (synchronous) | await viewer.OpenDocumentAsync(...) |
| 閉じる | viewer.CloseDocument() or viewer.Dispose() | viewer.CloseDocument(token) — Viewer is not IDisposable |
| ライフタイム | Viewer implements IDisposable, holds the open document | Viewer is stateless; sessions live in the cache under tokens |
| コンバータ | viewer.Converter property | The Converter plugin (AddPlugin<ConverterPlugin>()) + the DocumentConverter service |
| 設定クラス | Doconut.Configs.View.* namespaces | All in the Doconut namespace |
| ミドルウェア | Manual handler wiring | 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ペアをホストし、エンドポイントがトークンを返します(クイックスタートにパターンが示されています)。- 静的ライセンス メソッド →
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の使用を、コンバータ プラグインの登録とDocumentConverterに置き換えます。- セキュリティ パスを再テストします:デフォルトのセキュリティでは
AddSession()/UseSession()が必須です。
このページは役に立ちましたか?