Миграция
Обновление до Doconut на .NET 8
На этой странице представлены два типа миграций: обновление версии пакета в .NET 8 и перенос интеграции из более старого фреймворка Doconut (.NET 6, .NET Standard 2.0, .NET Framework 4.7) на API .NET 8.
Обновление версии пакета
- Обновите пакет (и любые пакеты плагинов — поддерживайте версии согласованными):
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(см. раздел «Устранение неполадок» для точных ошибок, вызываемых откатом версии). - Выполните быстрый тест (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/ параметрах JSdocViewer. - Методы экспорта, возвращающие
byte[], → асинхронные API экспорта аннотаций вViewer.
Планируйте эту миграцию как переписывание уровня хостинга вокруг неизменного концепта: открыть → токен → виджет.
Примечание к именованию
Во всех фреймворках класс называется Viewer — если вы встречаете DocumentViewer в старых фрагментах кода или сторонних статьях, такого типа никогда не было в SDK.
Чек‑лист миграции
- Замените пакеты; согласуйте версии пакетов плагинов.
- Перенесите настройку лицензии в
AddDoconut(); удалите статические вызовы лицензии. - Сделайте вызовы открытия асинхронными; замените
Dispose/CloseDocumentбез параметров наCloseDocument(token). - Замените использования
viewer.Converterна регистрацию плагина Converter +DocumentConverter. - Перепроверьте путь безопасности: теперь
AddSession()/UseSession()обязательны при настройках безопасности по умолчанию.
Была ли эта страница полезной?