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 Register zpětné volání proti registru pluginů umístěnému na 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 této 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í:

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>(() => …) — 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žadovací 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řepíše vestavěný prohlížeč (plugin si nárokuje rozšíření, které 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á jednu z jejich schopností vynechává, 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() vydávají balíčky skriptů/stylů pro funkce řízené licencí (vyhledávání, anotace, …) pouze když licence je povolí, takže UI widgetu zůstává v souladu s tím, co server skutečně provede.

Mapa funkcí a pluginů

Uživatelské rozhraní produktu 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íAnnotationAutorování v prohlížeči, perzistence relace a exporty s vypáleným vodotiskem
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 potřebaSearchNativní textový index, zvýraznění a navigace výsledků
KonvertorNainstalujte Doconut.NET8.Converter a zaregistrujte ConverterPluginConverterC# konverzní služba a volitelný webový widget
DICOMNainstalujte Doconut.NET8.Dicom a zaregistrujte DicomPluginDicomProhlížení medicínských obrazů pro .dcm a .ima

Anotace a běžné Vyhledávání nepoužívají AddPlugin<TPlugin>(); jejich balíčky jsou vydávány pouze když licence udělí odpovídající schopnost. Konvertor a DICOM jsou opt‑in IDoconutPlugin implementace.

Vydané balíčky pluginů

PluginBalíčekSchopnostPřispívá
KonvertorDoconut.NET8.ConverterConverterSchopnost konverze dokumentů
DICOMDoconut.NET8.DicomDicomProhlížení medicínských obrazů (.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 — vaše vlastní obsluha formátu

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šemi — vestavěnými i pluginy — a nejsou řízeny licencí (jsou vaším kódem). Továrna přepne na 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 odemkne vše; produkční odemkne to, co jste zakoupili. Ověřte pomocí IDoconutLicenseService před vydáním.

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