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í:
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í:
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ě:
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ší:
| Funkce | Jak je povoleno | Schopnost | Přispívá |
|---|---|---|---|
| Anotace | Vestavěno v prohlížeči; zahrnout zdroje anotací | Annotation | Tvorba 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ána | Search | Nativní textový index, zvýraznění a navigace výsledků |
| Konvertor | Nainstalujte Doconut.NET6.Converter a zaregistrujte ConverterPlugin | Converter | C# konverzní služba a volitelný webový widget |
| DICOM | Nainstalujte Doconut.NET6.Dicom a zaregistrujte DicomPlugin | Dicom | Prohlíž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ů
| Plugin | Balíček | Schopnost | Přispívá |
|---|---|---|---|
| Konvertor | Doconut.NET6.Converter | Converter | Schopnost konverze dokumentů |
| DICOM | Doconut.NET6.Dicom | Dicom | Prohlíž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:
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
LicenseCapabilityje ověřováno běhemAddDoconut()— 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í
IDoconutLicenseServicepřed vydáním.
Byla tato stránka užitečná?