Licencování
Funkce, úrovně licencí a licenční služba
Tato stránka je referenční příručkou za běhu, jak licence ovlivňuje chování Doconut: co každá stav licence umožňuje, jak jsou přidělovány funkce a jak to vše zkontrolovat z kódu. (Pro načítání licence viz Začínáme → Nastavení licence.)
Stavy licence a co dělají
| Stav | Otevírá dokumenty? | Vodoznak | Funkce |
|---|---|---|---|
| Plná (placená) licence (v rámci jejího období předplatného/aktualizace) | Ano | Žádný | Ty zakoupené (Has* flags) |
| Dočasná licence (Developer/NFR — evaluační licence, před datem vypršení) | Ano | Žádný | Vše — plošné udělení (evaluační trychtýř) |
| Vypršela (dočasná licence po datu vypršení nebo placené předplatné po datu obnovení) | Ano | Vodoznak hodnocení | Žádné uděleno |
| Žádný licenční soubor | Ano | Vodoznak hodnocení | Žádné uděleno |
| Nalezen, ale odmítnut (neplatný podpis, poškozený, na černé listině, nebo sestavení novější než verzní okno licence) | Ne — LicenseException při každém otevření | — | — |
Dvě důsledky, které stojí za internalizaci:
- Chybějící licence není dočasná licence. Bez licenčního souboru jsou stránky zobrazovány s vodoznakem a žádná funkce (vyhledávání, anotace, pluginy) není aktivní. Plnohodnotný, bezvodoznakový zážitek vyžaduje skutečnou Dočasnou licenci (získat).
- Pouze odmítnutá licence blokuje otevírání. Vypršení kalendáře/předplatného vede k renderování s vodoznakem; ale nasazení sestavení novějšího než verzní okno licence je odmítnuto a rychle selže s
LicenseException, takže jej zachytíte při nasazení — ne tiše odesíláním výstupu s vodoznakem. Tato výjimka (zOpenDocumentAsync) nese důvod zLicense.RejectionMessage.
Funkce
Doconut řídí volitelnou funkčnost pomocí funkce. Dnes jsou to volitelné pluginy Converter a DICOM plus vestavěné funkce Search a Annotation, každá udělená vaší licencí. Základní prohlížeč není funkcí — je předpokladem, vystupujícím jako IsViewerLicensed:
bool viewerLicensed = lic.IsViewerLicensed; // non-TRIAL license present AND covering this build's versionJedna brána, kterou celý pipeline používá, je IsCapabilityGranted:
bool searchGranted = lic.IsCapabilityGranted(LicenseCapability.Search);Jeho logika, doslovně z implementace: aktivní (nevypršená) Dočasná licence uděluje každou funkci — včetně funkcí, které ještě nemají dedikovaný nákupní příznak; skutečná zakoupená licence uděluje přesně své Has* příznaky a je defaultně zamítnutá pro vše, co není mapováno. (Legacy soubor typu TRIAL není oprávněním — je považován za nelicencovaný: s vodoznakem, nic není uděleno.)
Dočasné licence
Dočasné (Developer/NFR) licence jsou označeny tagem ExpiryNote a mají pevné datum vypršení:
| Člen | Význam |
|---|---|
IsTemporary | Tag ExpiryNote je přítomen (detekce probíhá přítomností tagu — nikdy neporovnávat text poznámky, je dynamický) |
ExpiryNote | Informační text vložený do licence |
LicenseExpiry | Pevné datum vypršení (DateTime?) |
Semantika vypršení se liší podle úrovně: dočasná licence vyprší k datu LicenseExpiry pouze (její okno předplatného je ignorováno; dočasná licence bez data je považována za vypršenou, bezpečnostní režim). Každá jiná licence vyprší k datu jejího okna předplatného/aktualizace.
Odkaz na IDoconutLicenseService
Vložte IDoconutLicenseService (namespace Doconut.Core.Interfaces; registrovaný jako singleton — licence je načtena jednou při spuštění):
| Člen | Význam |
|---|---|
License | Úplný snímek DoconutLicenseInfo (níže) |
IsTrial | Legacy soubor typu TRIAL (považován za nelicencovaný — není oprávněním) |
IsTemporary / ExpiryNote / LicenseExpiry | Značky dočasné licence |
IsExpired | Vypršela podle výše uvedených pravidel úrovně |
IsVersionValid | Toto sestavení spadá do podpůrného okna licence |
IsViewerLicensed | Nalezen soubor, který není TRIAL, a verze je pokryta — základní předpoklad |
IsCapabilityGranted(cap) | Jedna brána pro funkci |
HasSearch HasAnnotation HasConverter HasDicom | Uvolněno podle nákupních příznaků pro jednotlivé funkce — použijte IsCapabilityGranted pro odpověď zohledňující dočasnost |
IsValidForDomain(host) | Pokrytí hosta; licence V4 používají zástupný znak *.* |
LicenseRejectionReason | Neprázdné ⇒ otevírání je blokováno touto zprávou |
DoconutLicenseInfo poskytuje uživatelsky přívětivý snímek pro administrační panely: Owner, Email, LicenseType, Domain, IsLicenseFileFound, IsVersionValid, IsTrial, IsExpired, příznaky Has*, pole dočasné licence a RejectionMessage.
// Feature-flag your UI from the same source of truth the SDK uses
app.MapGet("/api/features", (IDoconutLicenseService lic) => Results.Ok(new
{
viewer = lic.IsViewerLicensed || lic.IsTemporary,
search = lic.IsCapabilityGranted(LicenseCapability.Search),
annotation = lic.IsCapabilityGranted(LicenseCapability.Annotation),
conversion = lic.HasConverter,
dicom = lic.HasDicom,
}));Kontrola zdraví
AddDoconut() registruje health check "doconut", který hlásí stav licence/vypršení prostřednictvím standardního mechanismu ASP.NET Core:
app.MapHealthChecks("/health");Propojte jej se svým monitorováním a vypršející předplatné se stane upozorněním místo tiketů podpory.
Aktualizace verzí
Licence pokrývá verzní okno. Aktualizace balíčku NuGet na sestavení novější než toto okno způsobí, že licence je pro toto sestavení neplatná: IsVersionValid se nastaví na false a otevírání je blokováno s LicenseException (důvod je v License.RejectionMessage) — úmyslně selhává rychle, aby bylo zastaralé nebo nelicencované sestavení zachyceno při nasazení místo tiše vodotiskovat produkční výstup. Obnovte předplatné, nahraďte soubor .lic a restartujte aplikaci, aby AddDoconut() načetl novou licenci.
Byla tato stránka užitečná?