Migrace
Aktualizace na Doconut v .NET 8
Na této stránce najdete dva typy migrací: aktualizaci verze balíčku v .NET 8 a přesun integrace ze staršího frameworku Doconut (.NET 6, .NET Standard 2.0, .NET Framework 4.7) na API .NET 8.
Aktualizace verze balíčku
- Aktualizujte balíček (a všechny plugin balíčky — udržujte verze sladěné):
dotnet add package Doconut.NET8
dotnet add package Doconut.NET8.Dicom-
Zkontrolujte okno licence. Licence pokrývá rozsah verzí. Pokud nová verze spadá mimo tento rozsah, otevření je zablokováno —
OpenDocumentAsyncvyhodíLicenseException(rychlé selhání); nepřepne se na vodoznak aIsVersionValidvrátífalse. Obnovte, nahraďte soubor.lica restartujte aplikaci, abyAddDoconut()načetla novou licenci. -
Překompilujte a nechte NuGet obnovit deklarované verze závislostí — nepřipínejte znovu
System.Text.JsonaniSystem.Drawing.Common(viz Řešení problémů pro přesné chyby, které způsobí downgrade). -
Proveďte rychlý test jednoho dokumentu pro každou používanou rodinu formátů.
Migrace z .NET 6 / .NET Standard 2.0
API .NET 8 je přepracováno kolem DI a asynchronního programování. Přehled mapování:
| Oblast | .NET 6 / Standard 2.0 | .NET 8 |
|---|---|---|
| Nastavení | Vytvořit Viewer(cache, httpContextAccessor, licensePath) | builder.Services.AddDoconut(options => …) + injektujte Viewer |
| Licence | Statická Viewer.DoconutLicense(path) + SetLicensePlugin(...) per plugin | options.LicensePath / LicenseContent / LicenseStream — jedna licence, automatické vyhledání souborů pluginů |
| Otevření | viewer.OpenDocument(...) (synchrónní) | await viewer.OpenDocumentAsync(...) |
| Uzavření | viewer.CloseDocument() nebo viewer.Dispose() | viewer.CloseDocument(token) — Viewer není IDisposable |
| Životnost | Viewer implementuje IDisposable, drží otevřený dokument | Viewer je bezstavový; relace žijí v cache pod tokeny |
| Konvertor | Vlastnost viewer.Converter | Plugin Konvertoru (AddPlugin<ConverterPlugin>()) + služba DocumentConverter |
| Konfigurační třídy | Doconut.Configs.View.* jmenné prostory | Vše v jmenném prostoru Doconut |
| Middleware | Manuální propojení handlerů | app.UseDoconutResources() + app.UseDoconut() |
Typický před/po:
// .NET 6 (staré API, ukázáno pro kontrast — neplatné v .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 injektován, licence nastavena jednou v AddDoconut()
var token = await viewer.OpenDocumentAsync(path, new PdfConfig { AllowSearch = true });Migrace z .NET Framework 4.7 (Web Forms)
Viewer ve verzi 4.7 je WebControl; .NET 8 nahrazuje model ovládacího prvku middlewarem + DI službou:
- Ovládací prvek
<doconut:DocViewer runat=server>zmizí — stránka hostuje dvojici widgetůdiva váš koncový bod vrací token (Quick Start ukazuje vzor). - Statické metody licence → zdroje licence
DoconutOptions. - Synchrónní
OpenDocument→await OpenDocumentAsync. Viewer.ReferenceScripts()/ReferenceCss()existují v obou světech — verze .NET 8 přijímají objektyScriptConfig/CssConfiga jsou řízeny licencí.- Vlastnosti ovládacího prvku (
ShowThumbs,PageZoom,FixedZoom, …) → stejné názvy vViewerConfig/ v JS možnostechdocViewer. - Exportní metody vracející
byte[]→ asynchronní API pro export anotací naViewer.
Plánujte tuto migraci jako přepsání hostovací vrstvy kolem nezměněného konceptu: otevření → token → widget.
Poznámka k pojmenování
Ve všech frameworkech je třída Viewer — pokud najdete DocumentViewer ve starých úryvcích nebo článcích třetích stran, tento typ v SDK nikdy neexistoval.
Kontrolní seznam migrace
- Vyměňte balíčky; sladěte verze plugin balíčků.
- Přesuňte nastavení licence do
AddDoconut(); odstraňte statické volání licence. - Udělejte volání otevření asynchronní; nahraďte
Dispose/CloseDocumentbez parametrů volánímCloseDocument(token). - Nahraďte použití
viewer.Converterregistrací pluginu Converter +DocumentConverter. - Znovu otestujte bezpečnostní cestu:
AddSession()/UseSession()jsou nyní vyžadovány s výchozí bezpečností (plusAddDistributedMemoryCache()v aplikaci minimal-API).
Byla tato stránka užitečná?