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é poskytují prohlížeče nebo služby 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 zpětné volání Register proti 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ěří 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 Dočasná/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>(() => …) — typovaná 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 to předpoklad, vystavený jako IsViewerLicensed ve službě licence.

Validace při spuštění normálně zabraňuje nelicencovanému pluginu vstoupit do požadovacího řetězce. Továrna prohlíž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řepíše vestavěný prohlížeč (plugin si nárokuje příponu, kterou také obsluhuje vestavěný registr): pokud je schopnost licencována, vyhraje prohlížeč pluginu; pokud ne, 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. Na druhou stranu: 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; zahrnuje zdroje anotacíAnnotationTvorba v prohlížeči, perzistence relace a exporty s vloženými anotacemi
SearchVestavěno v prohlížečích podporujících vyhledávatelné formáty; zahrnuje zdroje pro vyhledávání a umožňuje extrakci tam, kde je vyžadovánaSearchNativní textový index, zvýraznění a navigace ve výsledcích
ConverterNainstalujte Doconut.NET8.Converter a zaregistrujte ConverterPluginConverterC# konverzní služba a volitelný webový widget
DICOMNainstalujte Doconut.NET8.Dicom a zaregistrujte DicomPluginDicomProhlížení medicínských obrázků pro .dcm a .ima

Vydané balíčky pluginů

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

Každý má vlastní stránku pod Pluginy se svou konfigurací a použitím.

Vlastní prohlížeče — váš vlastní obslužný formát

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 to váš kód). 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á?