移行
Doconut を .NET 8 にアップグレード
このページでは、2 つの移行が対象です:パッケージ バージョンのアップグレード(.NET 8 内)と、古い Doconut フレームワーク(.NET 6、.NET Standard 2.0、.NET Framework 4.7)から .NET 8 API への統合の移行です。
パッケージ バージョンのアップグレード
- パッケージを更新します(プラグイン パッケージも同様にバージョンを合わせてください):
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() |
典型的なビフォー/アフターは次の通りです:
// .NET 6(古い API、対比のために示しています — .NET 8 では有効ではありません)
using var viewer = new Viewer(cache, httpContextAccessor, "wwwroot/Doconut.Viewer.lic");
var token = viewer.OpenDocument(path, new PdfConfig { AllowSearch = true }, new DocOptions());// .NET 8 — Viewer が注入され、ライセンスは AddDoconut() で一度だけ設定されます
var token = await viewer.OpenDocumentAsync(path, new PdfConfig { AllowSearch = true });.NET Framework 4.7(Web Forms)からの移行
.NET Framework 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()が必須になり(ミニマル API アプリではAddDistributedMemoryCache()も追加します)。
このページは役に立ちましたか?