Licencování
Schopnosti, úrovně licencí a licenční služba
Tato stránka je referenční příručka za běhu, jak licence ovlivňuje chování Doconut: co umožňuje každý stav licence, jak jsou přidělovány schopnosti a jak je lze zkontrolovat z kódu. (Pro načítání licence viz Nastavení licence.)
Stavy licence a co dělají
| Stav | Otevírá dokumenty? | Vodoznak | Schopnosti |
|---|---|---|---|
| Plná (placená) licence (v rámci jejího období předplatného/aktualizace) | Ano | Žádný | Ty zakoupené (Has* příznaky) |
| Dočasná licence (Developer/NFR — evaluační licence, před datem vypršení) | Ano | Žádný | Vše — plošné povolení (evaluační kanál) |
| Vypršela (dočasná licence po datu vypršení nebo placené předplatné po datu obnovení) | Ano | Evaluační vodoznak | Žádná přidělena |
| Žádný licenční soubor | Ano | Evaluační vodoznak | Žádná přidělena |
| 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. Pokud není licenční soubor, stránky se zobrazují s vodoznakem a žádná schopnost (vyhledávání, anotace, pluginy) není aktivní. Plnohodnotný, bezvodoznakový zážitek vyžaduje skutečnou Dočasnou licenci (získat ji).
- Pouze odmítnutá licence blokuje otevírání. Vypršení kalendáře/předplatného vede k vykreslová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.
Schopnosti
Doconut omezuje volitelnou funkčnost pomocí schopnosti. Dnes jsou to volitelné pluginy Converter a DICOM plus vestavěné funkce Search a Annotation, každá přidělena vaší licencí. Základní prohlížeč není schopnost — je to předpoklad, vystavený 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 přiděluje každou schopnost — včetně schopností, které ještě nemají dedikovaný nákupní příznak; skutečná zakoupená licence přiděluje přesně své Has* příznaky a je defaultně zamítnuta pro vše, co není mapováno. (Legacy soubor typu TRIAL není oprávněním — je považován za nelicencovaný: vodoznak, nic nepřiděleno.)
Dočasné licence
Dočasné (Developer/NFR) licence jsou označeny tagem ExpiryNote a mají pevné datum vypršení:
| Pole | 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ší pouze k datu LicenseExpiry (pouze datum) (její okno předplatného se ignoruje; dočasná licence bez data je považována za vypršenou, bezpečnostní režim). Každá jiná licence vyprší k datu svého okna předplatného/aktualizace.
Reference IDoconutLicenseService
Získejte IDoconutLicenseService (namespace Doconut.Core.Interfaces) z DoconutHost.Services. Je to singleton — licence je parsována jednou, v DoconutHost.Initialize:
| Č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 ne-TRIAL soubor a verze je pokryta — základní předpoklad |
IsCapabilityGranted(cap) | Jedna brána pro schopnost |
HasSearch HasAnnotation HasConverter HasDicom | Uvolněno podle nákupních příznaků pro každou schopnost — 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 admin panely: Owner, Email, LicenseType, Domain, IsLicenseFileFound, IsVersionValid, IsTrial, IsExpired, příznaky Has*, pole dočasné licence a RejectionMessage.
// GET /Features - feature-flag your UI from the same source of truth the SDK uses
public ActionResult Index()
{
var lic = Doconut.DoconutHost.Services.GetRequiredService<IDoconutLicenseService>();
return Json(new
{
viewer = lic.IsViewerLicensed || lic.IsTemporary,
search = lic.IsCapabilityGranted(LicenseCapability.Search),
annotation = lic.IsCapabilityGranted(LicenseCapability.Annotation),
conversion = lic.HasConverter,
dicom = lic.HasDicom,
}, JsonRequestBehavior.AllowGet);
}Kontrola zdraví
Doconut registruje kontrolu zdraví "doconut", která hlásí stav licence. Classic ASP.NET nemá vlastní endpoint pro zdraví, takže ji vystavte z kontroleru:
// GET /Health - Doconut registers a "doconut" health check that reports the license state:
// Healthy (valid), Degraded (trial or no license file), Unhealthy (expired).
public async Task<ActionResult> Index()
{
var health = Doconut.DoconutHost.Services.GetRequiredService<HealthCheckService>();
HealthReport report = await health.CheckHealthAsync();
Response.StatusCode = report.Status == HealthStatus.Unhealthy ? 503 : 200;
return Content(report.Status.ToString(), "text/plain");
}Zapojte ji do svého monitoringu a vypršející předplatné se stane upozorněním místo ticketu podpory. Viz DoconutHost pro hodnoty stavů.
Aktualizace verzí
Licence pokrývá verzní okno. Aktualizace NuGet balíčku 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ě rychlé selhání, takže zastaralé nebo nelicencované sestavení je zachyceno při nasazení místo tichého vodoznakování produkčního výstupu. Obnovte předplatné, nahraďte .lic v wwwroot a recyklujte aplikační pool, aby DoconutHost.Initialize načetl novou licenci.
Byla tato stránka užitečná?