Lisanslama
Yetenekler, lisans seviyeleri ve lisans hizmeti
Bu sayfa, bir lisansın Doconut'un davranışını nasıl şekillendirdiğine dair çalışma zamanı referansıdır: her lisans durumunun neyi izin verdiği, yeteneklerin nasıl verildiği ve tüm bunların koddan nasıl inceleneceği. (Bir lisans yüklemek için, Başlarken → Lisans Kurulumu bölümüne bakın.)
Lisans durumları ve ne yaptıkları
| Durum | Belgeler açılır mı? | Filigran | Yetenekler |
|---|---|---|---|
| Tam (ücretli) lisans (abonelik/güncelleme penceresi içinde) | Evet | Yok | Satın alınanlar (Has* bayrakları) |
| Geçici lisans (Geliştirici/NFR — değerlendirme lisansı, son tarihinden önce) | Evet | Yok | Tümü — genel izin (değerlendirme hunisi) |
| Süresi dolmuş (son tarihini geçmiş geçici lisans veya yenileme tarihini geçmiş ücretli abonelik) | Evet | Değerlendirme filigranı | Hiçbir şey verilmedi |
| Hiç lisans dosyası yok | Evet | Değerlendirme filigranı | Hiçbir şey verilmedi |
| Bulundu ancak reddedildi (geçersiz imza, değiştirilmiş, kara listeye alınmış veya lisansın sürüm penceresinden daha yeni bir yapı) | Hayır — LicenseException her açmada | — | — |
İçselleştirmeniz gereken iki sonuç:
- Eksik bir lisans geçici bir lisans değildir. Lisans dosyası yoksa, sayfalar filigranlı olarak gösterilir ve hiçbir yetenek (arama, açıklama, eklentiler) aktif olmaz. Tam özellikli, filigransız deneyim gerçek bir Geçici lisans gerektirir (bir tane alın).
- Yalnızca reddedilen bir lisans açmayı engeller. Takvim/abonelik süresi dolması filigranlı gösterime düşer; ancak bir yapı lisansın sürüm penceresinden daha yeni olduğunda reddedilir ve
LicenseExceptionile hızlıca başarısız olur, böylece dağıtımda yakalanır — sessizce filigranlı çıktı gönderilmez. Bu istisna (OpenDocumentAsync'tan) nedeniLicense.RejectionMessageiçinde taşır.
Yetenekler
Doconut, isteğe bağlı işlevselliği yetenek ile kısıtlar. Bugün bunlar, isteğe bağlı Converter ve DICOM eklentileri ile yerleşik Search ve Annotation özellikleridir; her biri lisansınız tarafından verilir. Temel görüntüleyici bir yetenek değildir — önkoşul olarak IsViewerLicensed şeklinde sunulur:
bool viewerLicensed = lic.IsViewerLicensed; // non-TRIAL license present AND covering this build's versionTüm işlem hattının kullandığı tek kapı IsCapabilityGranteddır:
bool searchGranted = lic.IsCapabilityGranted(LicenseCapability.Search);Mantığı, uygulamadan kelimesi kelimesine: aktif (süresi dolmamış) Geçici lisans her yeteneği verir — henüz özel bir satın alma bayrağı olmayan yetenekler dahil; gerçek satın alınmış bir lisans yalnızca Has* bayraklarını verir ve eşlenmemiş şeyler için varsayılan reddetme uygular. (Eski bir TRIAL‑tip dosya hak değildir — lisanssız olarak değerlendirilir: filigranlı, hiçbir şey verilmez.)
Geçici lisanslar
Geçici (Geliştirici/NFR) lisanslar bir ExpiryNote etiketiyle işaretlenir ve kesin bir son tarih taşır:
| Üye | Anlam |
|---|---|
IsTemporary | Bir ExpiryNote etiketi bulunur (algılama sadece etiket varlığına bakar — notun metnine bakmaz, dinamik) |
ExpiryNote | Lisansa gömülü bilgilendirici metin |
LicenseExpiry | Kesin son tarih (DateTime?) |
Son tarih anlamı seviyeye göre değişir: geçici bir lisans yalnızca LicenseExpiry tarihiyle sona erer (abonelik penceresi göz ardı edilir; tarih eksikse süresi dolmuş kabul edilir, güvenli hata). Diğer tüm lisanslar abonelik/güncelleme penceresi tarihine göre sona erer.
IDoconutLicenseService referansı
IDoconutLicenseService'i enjekte edin (namespace Doconut.Core.Interfaces; singleton olarak kaydedilir — lisans başlangıçta bir kez ayrıştırılır):
| Üye | Anlam |
|---|---|
License | Tam DoconutLicenseInfo anlık görüntüsü (aşağıda) |
IsTrial | Eski bir TRIAL‑tip dosya (lisanssız olarak değerlendirilir — hak değildir) |
IsTemporary / ExpiryNote / LicenseExpiry | Geçici‑lisans işaretçileri |
IsExpired | Yukarıdaki seviye kurallarına göre süresi dolmuş |
IsVersionValid | Bu yapı lisansın destek penceresi içinde mi |
IsViewerLicensed | Non‑TRIAL dosya bulunmuş ve sürüm kapsanıyor — temel önkoşul |
IsCapabilityGranted(cap) | Tek yetenek kapısı |
HasSearch HasAnnotation HasConverter HasDicom | Yeteneğe göre ayrı ayrı satın alma bayrakları — geçici‑bilinçli yanıt için IsCapabilityGranted kullanın |
IsValidForDomain(host) | Host kapsamı; V4 lisansları *.* joker karakterini kullanır |
LicenseRejectionReason | Boş değilse ⇒ açma bu mesajla engellenir |
DoconutLicenseInfo yönetim panelleri için görüntülenebilir anlık görüntüyü sunar: Owner, Email, LicenseType, Domain, IsLicenseFileFound, IsVersionValid, IsTrial, IsExpired, Has* bayrakları, geçici‑lisans alanları ve RejectionMessage.
// SDK'nın kullandığı aynı gerçek kaynağından UI'nizi özellik‑bayrağıyla yönetin
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,
}));Sağlık kontrolü
AddDoconut() bir "doconut" sağlık kontrolü kaydeder; bu kontrol lisans/son tarih durumunu standart ASP.NET Core mekanizmasıyla raporlar:
app.MapHealthChecks("/health");Bunu izleme sisteminize bağlayın; süresi dolan bir abonelik bir destek bileti yerine bir uyarı haline gelir.
Sürüm yükseltmeleri
Bir lisans bir sürüm penceresini kapsar. NuGet paketini bu pencerenin daha yeni bir yapı ile güncellemek lisansı bu yapı için geçersiz kılar: IsVersionValid false olur ve LicenseException ile açma engellenir (License.RejectionMessage içinde neden bulunur) — kasıtlı olarak hızlı‑başarısız, böylece eski ya da lisanssız bir yapı dağıtımda yakalanır, sessizce üretim çıktısı filigranlanmaz. Aboneliği yenileyin, .lic dosyasını değiştirin ve uygulamayı yeniden başlatın; AddDoconut() yeni lisansı yükleyecektir.
Bu sayfa yardımcı oldu mu?