Migrace z klasické integrace .NET 6
Přesunout existující aplikaci Doconut.NET6 na současný DI a asynchronní API
Doconut má dvě odlišné integrace .NET 6. Mohou používat stejný název balíčku Doconut.NET6, takže před změnou balíčků, startováním, licencemi nebo zdrojů prohlížeče identifikujte generaci podle API v aplikaci.
Kterou integraci .NET 6 používáte?
| Pokud projekt obsahuje… | Generace |
|---|---|
app.MapWhen(... "DocImage.axd" ...) | Legacy / klasická |
new Viewer(_cache, _accessor, ...) | Legacy / klasická |
Viewer.DoconutLicense(...) nebo Viewer.SetLicensePlugin(...) | Legacy / klasická |
Ručně zkopírovaný docViewer.js, documentLinks.js nebo docViewer.UI.js | Legacy / klasická |
builder.Services.AddDoconut(...) | Současná integrace |
app.UseDoconutResources() plus app.UseDoconut() | Současná integrace |
Viewer poskytovaný pomocí dependency injection | Současná integrace |
await viewer.OpenDocumentAsync(...) | Současná integrace |
Pokud se oba sloupce objeví ve stejné aplikaci, považujte migraci za neúplnou. Neposílejte jeden token dokumentu přes zdroje nebo middleware z jiné generace.
Proč název balíčku NuGet nemusí stačit
Obě generace jsou distribuovány pod ID balíčku Doconut.NET6. Odkaz na balíček, soubor lock nebo uložený .nupkg tedy samo o sobě neidentifikuje hostující API. Zaznamenejte přesnou verzi balíčku a společně prozkoumejte Program.cs, konstrukci vieweru, otevírání dokumentů a skripty prohlížeče.
Současné vydání ověřené pro tento průvodce je Doconut.NET6 26.7.0. Jeho volitelné veřejné balíčky jsou Doconut.NET6.Converter a Doconut.NET6.Dicom, které jsou svázány se stejnou verzí vydání jako hlavní balíček.
Před migrací
- Vytvořte větev a nasaditelnou zálohu existující aplikace.
- Zaznamenejte přesné verze hlavního a pluginového balíčku.
- Zaznamenejte každé mapování
DocImage.axd, volánínew Viewer(...), volání načítání licence, zkopírovaný skript Doconut, vlastní akci nástrojové lišty a koncový bod pro otevírání dokumentů. - Uchovejte aktuální soubory
.lica nasazovací tajné informace mimo správu verzí. - Zaznamenejte reprezentativní sadu PDF, Office, obrázkových, CAD, e-mailových, DICOM, prohledávatelných, chráněných heslem a anotovaných dokumentů.
- Zaznamenejte stávající časový limit relace, chování zabezpečení, fonty a nastavení platformy.
Migrujte jedno prostředí před změnou produkce. Současná integrace mění životnost služby, směrování požadavků, vlastnictví relace a doručování klientských zdrojů.
Kompatibilita balíčků a licencí
Nahradit nebo aktualizovat hlavní balíček úmyslně; nespoléhejte se na identické ID balíčku pro výběr nového API. Výchozí příkaz nainstaluje nejnovější stabilní verzi:
dotnet add package Doconut.NET6Pro reprodukovatelnou migraci na verzi ověřenou tímto průvodcem, předávejte verzi jako samostatnou volbu:
dotnet add package Doconut.NET6 --version 26.7.0Udržujte každý Doconut plugin ve stejné verzi jako hlavní balíček. Současná integrace načítá licence jednou během AddDoconut(), s následující prioritou:
LicenseStream > LicenseContent > LicensePath > automatic discoveryAutomatické vyhledávání hledá soubory Doconut.Viewer.lic a doprovodné soubory Doconut.Viewer.<Capability>.lic. Klasické volání Viewer.DoconutLicense(...) nebo Viewer.SetLicensePlugin(...) není současný spouštěcí mechanismus. Přesuňte licenci do DoconutOptions, udržujte doprovodné soubory společně při použití automatického vyhledávání, restartujte po změně licence a ověřte funkce pomocí IDoconutLicenseService.
Nepředpokládejte, že přítomnost staré licence pluginu dokazuje oprávnění pro současnou verzi pluginu. Otestujte Viewer, Search, Annotation, Converter a DICOM samostatně s ověřenými artefakty vydání.
Spuštění a injekce závislostí
Klasické aplikace vytvářejí Viewer s cache ASP.NET a závislostmi request-accessoru:
// Classic integration — contrast only; do not compile this against the current SDK.
var viewer = new Viewer(_cache, _accessor, licenseFilePath);Aktuální integrace zaregistruje Doconut jednou a získá Viewer z injekce závislostí:
builder.Services.AddDoconut(options =>
{
options.LicensePath = "Doconut.Viewer.lic";
options.UnsafeMode = false;
});
builder.Services.AddSession();
app.UseSession();
app.UseDoconutResources();
app.UseDoconut();Viewer je přechodná služba. Správce relace dokumentu a jeho cache vlastní dlouhodobější stav dokumentu, nikoli konkrétní injektovanou instanci Viewer.
Middleware a směrování zdrojů
Odstraňte klasickou větev MapWhen, která detekuje DocImage.axd:
// Classic integration — remove during the cutover.
app.MapWhen(
context => context.Request.Path.ToString().EndsWith("DocImage.axd"),
branch => branch.UseDoconut(new DoconutOptions()));V aktuálním pipeline:
- zavolejte
UseSession()před Doconut, zatímco je zabezpečení relace povoleno; - zavolejte
UseDoconutResources()předUseDoconut(); - udržujte
ResourcesPath, generované URL zdrojů, a klientskýResPathv souladu; - při mapování
UseDoconut()na větev udržujte tuto větev a klientskýBasePathv souladu.
MiddlewarePath je ověřená konfigurace; sama o sobě nevytváří větev ASP.NET Core. Použijte buď jednoduchý pipeline v ukázce výše, nebo explicitní uspořádání app.Map("/doconut", branch => branch.UseDoconut()), které používá klient konzistentně.
Konstrukce a životní cyklus Vieweru
Odstraňte cache vlastněné aplikací pro objekty Viewer. Injektujte Viewer do koncového bodu, Razor stránky, kontroleru nebo scoped služby aplikace:
app.MapPost("/api/open", async (Viewer viewer) =>
{
var token = await viewer.OpenDocumentAsync("wwwroot/files/Sample.pdf");
return Results.Ok(new { token });
});Vrácený token identifikuje serverovou relaci dokumentu. Zacházejte s ním jako s nosičem oprávnění: neukládejte jej do logů, neukládejte jej trvale ani jej nezasílejte do analytiky.
Otevírání a zavírání dokumentů
Nahraďte synchronní OpenDocument(...) metodou OpenDocumentAsync(...):
// Current .NET 6 integration: Viewer comes from DI and document opening is asynchronous.
var token = await viewer.OpenDocumentAsync(path, new PdfConfig { AllowSearch = true });Aktuální přetížení přijímají cestu k souboru nebo stream, volitelnou konfiguraci formátu, volitelný DocOptions a token pro zrušení. Uzavřete serverovou relaci explicitně, když ji prohlížeč již nepotřebuje:
viewer.CloseDocument(token);Po přechodu nepoužívejte klasický token znovu. Otevřete každý dokument znovu pomocí aktuálního API.
Konfigurační třídy
Aktuální API odděluje starosti:
| Oblast | Aktuální typ |
|---|---|
| Cesty middleware, licencování, registrace pluginů | DoconutOptions |
| Heslo, časový limit, zabezpečení, vodoznak | DocOptions |
| Renderování formátu a DPI | PdfConfig, WordConfig, ExcelConfig, and other BaseConfig types |
| Výchozí nastavení widgetu prohlížeče | ViewerConfig or the equivalent JavaScript options |
| Generovaný CSS a skripty | CssConfig and ScriptConfig |
Neproměňujte DocOptions.ImageResolution jako řídící prvek renderování. Je zastaralý; nastavte BaseConfig.ImageResolution v konfiguraci specifické pro formát. Přezkoumejte všechna výchozí nastavení místo předpokladu, že klasická konfigurace má stejné chování.
Toolbar Vieweru, Vyhledávání a Anotace
Nepamatujte staré skripty jeden po druhém. Aktuální referenční aplikace skládají kompletní balíček stránky:
- vygenerujte CSS Vieweru a licencované CSS pro Vyhledávání/Anotaci pomocí
ReferenceCss; - vykreslete toolbar Vieweru vlastněný aplikací;
- vykreslete
searchBarMount,annBarMounta požadovaný mount Vieweru; - vygenerujte skripty Vieweru a licencovaných modulů pomocí
ReferenceScripts; - načtěte vlastní
viewerToolbar.jsaplikace; - inicializujte jeden
objViewer; - inicializujte licencované pásky Vyhledávání a Anotace;
- zavolejte
attach(objViewer)na každé pásce; - otevřete dokument a zavolejte
objViewer.View(token).
Vyhledávání a Anotace jsou moduly připojené ke stejnému Vieweru, nikoli nezávislé toolbary. Hlavní toolbar patří hostitelské aplikaci; pásky Vyhledávání a Anotace jsou vložené, zdroje řízené schopnostmi.
Odstraňte ručně zkopírované klasické soubory jako documentLinks.js a docViewer.UI.js až poté, co aktuální stránka funguje se zdroji vygenerovanými ReferenceCss a ReferenceScripts.
Registrace pluginu
Klasické statické metody plugin‑licencí neregistrují aktuální pluginy. Nainstalujte a zaregistrujte každý vydaný balíček explicitně:
builder.Services.AddDoconut(options =>
{
options.AddPlugin<Doconut.Plugins.Converter.ConverterPlugin>();
options.AddPlugin<Doconut.Plugins.Dicom.DicomPlugin>();
});AddDoconut() ověřuje registrované schopnosti pluginů při spuštění. Converter a DICOM jsou vydané .NET 6 pluginy. Normální vyhledávání a anotace jsou vestavěné licencované funkce, nikoli balíčky AddPlugin<TPlugin>().
Bezpečnost relace a dokumentu
Současná integrace svazuje dokumenty s neprůhlednými tokeny a kešovanými relacemi. S výchozím nastavením UnsafeMode = false přidává UseDoconut() zabezpečení přístupu k dokumentům a hostitel musí nakonfigurovat ASP.NET relaci:
builder.Services.AddSession();
app.UseSession();Udržujte DocOptions.IsSecured = true, pokud revizní návrh nevyžaduje jinak. Nikdy nepoužívejte UnsafeMode = true jako migrační zkratku. Otestujte požadavky bez tokenu, s poškozeným tokenem, s prošlým tokenem a s tokenem z jiné relace prohlížeče.
Distribuovaná referenční aplikace přidává přístupové lístky a podrobnosti o transportu. Tyto API nejsou vyžadovány pro běžnou jednojádrovou migraci.
Testování migrace
V minimálním rozsahu ověřte:
- spuštění aplikace s produkční licencí a všemi registrovanými pluginy;
- CSS/scripts pro Viewer a všechny požadavky na obrázky stránek pod zvolenými cestami;
- otevření dokumentu, navigaci, přiblížení, miniatury, tisk a explicitní uzavření;
- vyhledávání v dokumentu obsahujícím text a stav nevyhledatelného souboru pouze s obrázkem;
- načtení, uložení, export a řízení oprávnění anotací;
- zjištění cíle Converteru, výstup, stažení a stav vodoznaku;
- stránky DICOM, snímky a animace; technická metadata .NET 6 nejsou k dispozici;
- dokumenty chráněné heslem, vlastní fonty, ne‑latinský text a nakonfigurované časové limity;
- odmítnutí tokenu napříč relacemi a chování při vypršení relace;
- mobilní zařízení, tmavý režim a cesta produkčního reverzního proxy.
Plán návratu
Uchovávejte klasický artefakt nasazení, odpovídající balíčky, licenční soubory a zkopírované zdroje prohlížeče společně. Bezpečný návrat přepíná celou generaci aplikace; neprovádí kombinaci klasického serveru s aktuálními skripty ani aktuálního serveru s klasickými voláními DocImage.axd.
Před přechodem dokumentujte:
- nasazovací slot nebo artefakt použitý pro návrat;
- dopad na databázi/keš, pokud existuje;
- jak budou neaktivní relace dokumentů neplatné;
- kontrolu zdraví a testovací dokument použitý k rozhodnutí o návratu;
- kdo může obnovit předchozí sadu balíčků a konfiguraci.
Historická dokumentace
Přeložený klasický manuál je stále k dispozici na Legacy .NET 6 nastavení. Nový Klasická integrační brána vysvětluje stejné identifikační signály a odkazuje zpět na tento migrační průvodce.
Uchovávejte historické URL v záložkách a podpoře, dokud existují klasické instalace. Dokumentuje jinou generaci a není přesměrováno na současné API.
Byla tato stránka užitečná?