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 poskytuje 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ů umístěnému na DoconutOptions. Všechno, co plugin poskytuje, 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 této 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í:

csharp
public interface IDoconutPlugin
{
    string Name { get; }                          // např. "Doconut DICOM Viewer"
    LicenseCapability RequiredCapability { get; } // licenční brána
    void Register(IDoconutPluginBuilder builder); // přispívat k prohlížečům/službám
}

Uvnitř Register přijímá builder 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 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 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, vítězí pluginový prohlížeč; 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í open 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á vynechává jednu z jejich schopností, 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í (vyhledávání, anotace, …) pouze když licence umožní 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á
AnotaceVestavěno v prohlížeči; zahrnout zdroje anotacíAnnotationTvorba v prohlížeči, perzistence relace a exporty s vrytou anotací
VyhledáváníVestavěno v prohlížečích podporujících vyhledávatelné formáty; zahrnout zdroje vyhledávání a povolit extrakci tam, kde je vyžadovánaSearchNativní textový index, zvýraznění a navigace výsledků
KonvertorNainstalujte Doconut.NET6.Converter a zaregistrujte ConverterPluginConverterC# konverzní služba a volitelný webový widget
DICOMNainstalujte Doconut.NET6.Dicom a zaregistrujte DicomPluginDicomProhlížení lékařských obrazů pro .dcm a .ima

Anotace a běžné Vyhledávání nevyužívají AddPlugin<TPlugin>(); jejich balíčky jsou generovány pouze když licence udělí odpovídající schopnost. Konvertor 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á
KonvertorDoconut.NET6.ConverterConverterSchopnost konverze dokumentů
DICOMDoconut.NET6.DicomDicomProhlížení lékařských obrazů (.dcm — formát pouze pro plugin)

Každý má vlastní stránku pod Pluginy s jeho 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:

csharp
builder.Services.AddDoconut(options =>
{
    options.RegisterViewer(
        ".myext",
        () => new MyCustomViewer(),               // implementuje IFormatViewer
        () => new ImageConfig { ImageResolution = 150 }); // volitelná výchozí konfigurace
});

Vlastní prohlížeče mají přednost před všechno — 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áno během AddDoconut() — chybějící nebo nedostatečné ne-dočasné oprávnění selže rychle.
  • Pluginy typu override selhávají elegantně; formáty pouze pro plugin selžou s LicenseException.
  • Aktivní dočasná licence odemyká vše; produkční odemyká to, co jste zakoupili. Ověřte pomocí IDoconutLicenseService před vydáním.

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