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í:
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í:
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ě:
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ší:
| Funkce | Jak je povoleno | Schopnost | Přispívá |
|---|---|---|---|
| Annotation | Vestavěno v prohlížeči; zahrnuje zdroje anotací | Annotation | Tvorba v prohlížeči, perzistence relace a exporty s vloženými anotacemi |
| Search | Vestavě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ána | Search | Nativní textový index, zvýraznění a navigace ve výsledcích |
| Converter | Nainstalujte Doconut.NET8.Converter a zaregistrujte ConverterPlugin | Converter | C# konverzní služba a volitelný webový widget |
| DICOM | Nainstalujte Doconut.NET8.Dicom a zaregistrujte DicomPlugin | Dicom | Prohlížení medicínských obrázků pro .dcm a .ima |
Vydané balíčky pluginů
| Plugin | Balíček | Schopnost | Přispívá |
|---|---|---|---|
| Converter | Doconut.NET8.Converter | Converter | Schopnost konverze dokumentů |
| DICOM | Doconut.NET8.Dicom | Dicom | Prohlíž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:
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
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á?