Миграция

Обновление до Doconut на .NET 8

На этой странице представлены два типа миграций: обновление версии пакета в .NET 8 и перенос интеграции из более старого фреймворка Doconut (.NET 6, .NET Standard 2.0, .NET Framework 4.7) на API .NET 8.

Обновление версии пакета

  1. Обновите пакет (и любые пакеты плагинов — поддерживайте версии согласованными):
bash
dotnet add package Doconut.NET8
dotnet add package Doconut.NET8.Dicom
  1. Проверьте окно лицензии. Лицензия охватывает диапазон версий. Если новая версия выходит за его пределы, открытие заблокировано — OpenDocumentAsync бросает LicenseException (быстрый сбой); она не переходит к водяному знаку, и IsVersionValid возвращает false. Обновите, замените файл .lic и перезапустите приложение, чтобы AddDoconut() загрузил новую лицензию.
  2. Пересоберите проект и позвольте NuGet восстановить объявленные версии зависимостей — не фиксируйте заново System.Text.Json или System.Drawing.Common (см. раздел «Устранение неполадок» для точных ошибок, вызываемых откатом версии).
  3. Выполните быстрый тест (smoke‑test) одного документа для каждой используемой семейства форматов.

Миграция с .NET 6 / .NET Standard 2.0

API .NET 8 — это переработка вокруг DI и асинхронности. Соответствие:

Задача.NET 6 / Standard 2.0.NET 8
НастройкаСоздать Viewer(cache, httpContextAccessor, licensePath)builder.Services.AddDoconut(options => …) + внедрить Viewer
ЛицензияСтатический Viewer.DoconutLicense(path) + SetLicensePlugin(...) для каждого плагинаoptions.LicensePath / LicenseContent / LicenseStream — одна лицензия, автоматическое обнаружение файлов плагинов
Открытиеviewer.OpenDocument(...) (синхронный)await viewer.OpenDocumentAsync(...)
Закрытиеviewer.CloseDocument() или viewer.Dispose()viewer.CloseDocument(token) — Viewer не реализует IDisposable
Жизненный циклViewer реализует IDisposable, держит открытый документViewer без состояния; сессии хранятся в кэше по токенам
КонвертерСвойство viewer.ConverterПлагин Converter (AddPlugin<ConverterPlugin>()) + сервис DocumentConverter
Классы конфигурацииПространства имён Doconut.Configs.View.*Все в пространстве имён Doconut
Промежуточное ПОРучная привязка обработчиков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)

Viewer в версии 4.7 — это WebControl; .NET 8 заменяет модель управления на промежуточное ПО + сервис DI:

  • Элемент <doconut:DocViewer runat=server> исчезает — страница размещает пару div‑виджетов, а ваш endpoint возвращает токен (Quick Start показывает шаблон).
  • Статические методы лицензирования → источники лицензий DoconutOptions.
  • Синхронный OpenDocument → await OpenDocumentAsync.
  • Viewer.ReferenceScripts() / ReferenceCss() существуют в обеих версиях — версии для .NET 8 принимают объекты ScriptConfig/CssConfig и доступны только при наличии лицензии.
  • Свойства управления (ShowThumbs, PageZoom, FixedZoom, …) → те же имена в ViewerConfig / параметрах JS docViewer.
  • Методы экспорта, возвращающие byte[], → асинхронные API экспорта аннотаций в Viewer.

Планируйте эту миграцию как переписывание уровня хостинга вокруг неизменного концепта: открыть → токен → виджет.

Примечание к именованию

Во всех фреймворках класс называется Viewer — если вы встречаете DocumentViewer в старых фрагментах кода или сторонних статьях, такого типа никогда не было в SDK.

Чек‑лист миграции

  1. Замените пакеты; согласуйте версии пакетов плагинов.
  2. Перенесите настройку лицензии в AddDoconut(); удалите статические вызовы лицензии.
  3. Сделайте вызовы открытия асинхронными; замените Dispose/CloseDocument без параметров на CloseDocument(token).
  4. Замените использования viewer.Converter на регистрацию плагина Converter + DocumentConverter.
  5. Перепроверьте путь безопасности: теперь AddSession()/UseSession() обязательны при настройках безопасности по умолчанию.

Была ли эта страница полезной?