Systém pluginů

Rozšiřte prohlížeč pomocí pluginů

Jádro Doconut zůstává štíhlé; volitelná funkčnost je dodávána jako pluginy — samostatné balíčky NuGet, které přispívají prohlížeči nebo službami a jsou aktivovány vaší licencí. Tato stránka vysvětluje model registrace, jak se řízení licencí chová za běhu, a jak připojit vlastní prohlížeč.

Registrace pluginu

Každý balíček pluginu vystavuje jednu třídu pluginu. Zaregistrujete ji jednou při spuštění:

csharp
builder.Services.AddDoconut(options =>
{
    options.AddPlugin<Doconut.Plugins.Converter.ConverterPlugin>();
    options.AddPlugin<Doconut.Plugins.Dicom.DicomPlugin>();
});

AddPlugin<TPlugin>() vytvoří instanci pluginu a zavolá jeho Register zpětné volání vůči registru pluginů uloženému v DoconutOptions. Všechno, co plugin přispívá, je označeno požadovanou schopností pluginu. AddDoconut() okamžitě ověřuje registrované pluginy: chybějící licence, starý soubor TRIAL nebo placená licence bez požadované schopnosti způsobí selhání spuštění s InvalidOperationException. Registrace Temporary/Demo je zachována po vypršení, ale její runtime schopnosti jsou po datu vypršení odebrány.

Smlouva

Plugin implementuje úmyslně malý rozhraní:

text
public interface IDoconutPlugin
{
    string Name { get; }                          // e.g. "Doconut DICOM Viewer"
    LicenseCapability RequiredCapability { get; } // the license gate
    void Register(IDoconutPluginBuilder builder); // contribute viewers/services
}

Uvnitř Register builder přijímá dva typy příspěvků:

  • builder.RegisterViewer(".dcm", () => new DicomViewer()) — prohlížeč pro příponu souboru,
  • builder.RegisterService<TContract>(() => …) — typová služba, kterou mohou ostatní části pipeline vyhledat.

Schopnosti a řízení

Schopnosti jsou jednotky licence. Converter a Dicom jsou dodávány jako volitelné pluginy; Search a Annotation jsou vestavěné funkce řízené stejným způsobem. Základní prohlížeč není schopnost — je předpokladem, vystaveným jako IsViewerLicensed v licenční službě.

Ověření při spuštění normálně zabraňuje nelicencovanému pluginu vstoupit do požadavkové pipeline. Továrna na prohlížeče také uplatňuje dvě obranné runtime pravidla, která jsou důležitá, pokud se oprávnění po spuštění změní:

  • Plugin přepisuje vestavěný prohlížeč (plugin si nárokuje příponu, kterou také obsluhuje vestavěný registr): pokud je schopnost licencována, vítězí prohlížeč pluginu; bez ní Doconut tiše přepne na vestavěný prohlížeč. Uživatelé stále vidí svůj dokument — jen nedostanou funkci pluginu.
  • Formát pouze pro plugin (např. .dcm — DICOM nemá vestavěný prohlížeč): bez schopnosti volání otevření selže tvrdě:
text
LicenseException: This document type requires the 'Dicom' plugin license.

Aktivní dočasná licence uděluje všechny schopnosti (s čistým, neoznačeným základním prohlížením). To je klasický zdroj překvapení při nasazení: registrace stejných pluginů s zakoupenou licencí, která jednu z jejich schopností neobsahuje, způsobí selhání AddDoconut() během spuštění. Porovnejte IsCapabilityGranted(...) se svým plánem před nasazením. Naopak: s žádnou licencí vůbec, nic není uděleno — chybějící licence není dočasná licence.

Stejné řízení se objevuje na straně klienta: Viewer.ReferenceScripts() a ReferenceCss() generují balíčky skriptů/stylů pro funkce řízené licencí (search, annotation, …) pouze když licence umožňuje jejich použití, takže UI widgetu zůstává v souladu s tím, co server skutečně provede.

Mapa funkcí a pluginů

Produktové UI používá „plugin“ jako široký štítek funkce, ale registrace na serveru se liší:

FunkceJak je povolenoSchopnostPřispívá
AnnotationVestavěno v prohlížeči; zahrnout zdroje anotacíAnnotationAutorování v prohlížeči, perzistence relace a exporty s vypálenými anotacemi
SearchVestavěno ve prohlížečích podporujících vyhledávatelné formáty; zahrnout zdroje vyhledávání a povolit extrakci tam, kde je potřebaSearchNativní textový index, zvýraznění a navigace výsledků
ConverterNainstalujte Doconut.NET6.Converter a zaregistrujte ConverterPluginConverterSlužba konverze v C# a volitelný webový widget
DICOMNainstalujte Doconut.NET6.Dicom a zaregistrujte DicomPluginDicomProhlížení medicínských obrázků pro .dcm a .ima

Annotation a běžné Search nepoužívají AddPlugin<TPlugin>(); jejich balíčky jsou generovány pouze když licence udělí odpovídající schopnost. Converter a DICOM jsou vydané volitelné implementace IDoconutPlugin pro tuto sadu dokumentace.

Schválené artefakty .NET 6 obsahují Doconut.NET6.Converter a Doconut.NET6.Dicom ve stejné verzi jako hlavní balíček.

Vydané balíčky pluginů

PluginBalíčekSchopnostPřispívá
ConverterDoconut.NET6.ConverterConverterSchopnost konverze dokumentů
DICOMDoconut.NET6.DicomDicomProhlížení medicínských obrázků (.dcm — formát pouze pro plugin)

Každý má vlastní stránku pod Plugins s konfigurací a použitím.

Vlastní prohlížeče — váš vlastní formátový handler

Můžete připojit prohlížeč do pipeline bez psaní balíčku pluginu, přímo z Program.cs:

text
builder.Services.AddDoconut(options =>
{
    options.RegisterViewer(
        ".myext",
        () => new MyCustomViewer(),               // implements IFormatViewer
        () => new ImageConfig { ImageResolution = 150 }); // optional default config
});

Vlastní prohlížeče mají přednost před všemi — vestavěnými i pluginy — a nejsou řízeny licencí (jsou vaším kódem). Továrna se vrátí k ImageConfig, pokud neposkytnete výchozí konfiguraci.

Závěry

  • Pluginy jsou registrovány explicitně a jejich LicenseCapability je ověřována během AddDoconut() — chybějící nebo nedostatečné ne‑dočasné oprávnění selže okamžitě.
  • Pluginy typu override selhávají elegantně; formáty pouze pro plugin selžou s LicenseException.
  • Aktivní dočasná licence odemyká vše; produkční licence odemyká to, co jste zakoupili. Ověřte pomocí IDoconutLicenseService před vydáním.

Byla tato stránka užitečná?