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í:
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í:
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ě:
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ší:
| Funkce | Jak je povoleno | Schopnost | Přispívá |
|---|---|---|---|
| Annotation | Vestavěno v prohlížeči; zahrnout zdroje anotací | Annotation | Autorování v prohlížeči, perzistence relace a exporty s vypálenými anotacemi |
| Search | Vestavěno ve prohlížečích podporujících vyhledávatelné formáty; zahrnout zdroje vyhledávání a povolit extrakci tam, kde je potřeba | Search | Nativní textový index, zvýraznění a navigace výsledků |
| Converter | Nainstalujte Doconut.NET6.Converter a zaregistrujte ConverterPlugin | Converter | Služba konverze v C# a volitelný webový widget |
| DICOM | Nainstalujte Doconut.NET6.Dicom a zaregistrujte DicomPlugin | Dicom | Prohlíž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ů
| Plugin | Balíček | Schopnost | Přispívá |
|---|---|---|---|
| Converter | Doconut.NET6.Converter | Converter | Schopnost konverze dokumentů |
| DICOM | Doconut.NET6.Dicom | Dicom | Prohlíž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:
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
LicenseCapabilityje ověřována běhemAddDoconut()— 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í
IDoconutLicenseServicepřed vydáním.
Byla tato stránka užitečná?