Lisanslama
Yetenekler, lisans katmanları ve lisans hizmeti
Bu sayfa, bir lisansın Doconut 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ü — kapsamlı izin (değerlendirme akışı) |
| Süresi dolmuş (son tarihi geçmiş bir geçici lisans veya yenileme tarihini geçmiş bir ücretli abonelik) | Evet | Değerlendirme filigranı | Hiçbiri verilmedi |
| Hiç lisans dosyası yok | Evet | Değerlendirme filigranı | Hiçbiri 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 — her açmada LicenseException | — | — |
İki önemli sonuç:
- Eksik bir lisans geçici bir lisans değildir. Lisans dosyası olmadığında, sayfalar filigranlı olarak görüntülenir ve hiçbir yetenek (arama, açıklama, eklentiler) aktif değildir. 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üresinin dolması filigranlı görüntülemeye düşer; ancak bir yapıyı lisansın sürüm penceresinden daha yeni bir sürüme dağıtmak reddedilir ve
LicenseExceptionile hızlı bir şekilde başarısız olur, böylece dağıtımda yakalarsınız — sessizce filigranlı çıktı göndermek yerine. 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 ve her biri lisansınız tarafından verilir. Temel görüntüleyici bir yetenek değildir — önkoşuldur ve IsViewerLicensed olarak ortaya çıkar:
bool viewerLicensed = lic.IsViewerLicensed; // non-TRIAL license present AND covering this build's versionTüm işlem hattının kullandığı tek kapı IsCapabilityGranted'dır:
bool searchGranted = lic.IsCapabilityGranted(LicenseCapability.Search);Mantığı, uygulamadan alıntılandığı gibi: aktif (süresi dolmamış) Geçici bir lisans tüm yetenekleri verir — henüz özel bir satın alma bayrağı olmayan yetenekler dahil; gerçek bir satın alınmış lisans tam olarak Has* bayraklarını verir ve eşlenmemiş her şey için varsayılan reddet durumundadır. (Eski bir TRIAL tipi dosya hak değildir — lisanssız olarak değerlendirilir: filigranlı, hiçbir şey verilmez.)
Geçici lisanslar
Normal Arama ve Açıklama mevcut yeteneklerini doğrudan kullanır.
Geçici (Geliştirici/NFR) lisanslar bir ExpiryNote etiketiyle işaretlenir ve kesin bir son tarih taşır:
| Üye | Anlam |
|---|---|
IsTemporary | Bir ExpiryNote etiketi mevcuttur (algılama etiket varlığına göre yapılır — notun metniyle eşleşmez, dinamikdir) |
ExpiryNote | Lisansa gömülü bilgilendirici metin |
LicenseExpiry | Kesin son tarih (DateTime?) |
Son tarih anlamı katmana göre farklıdır: geçici bir lisans yalnızca LicenseExpiry tarihi itibarıyla sona erer (abonelik penceresi yok sayılır; tarihi olmayan bir geçici lisans süresi dolmuş olarak değerlendirilir, 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 tipi dosya (lisanssız olarak değerlendirilir — hak değildir) |
IsTemporary / ExpiryNote / LicenseExpiry | Geçici lisans işaretçileri |
IsExpired | Yukarıdaki katman kurallarına göre süresi dolmuş |
IsVersionValid | Bu yapı lisansın destek penceresi içinde |
IsViewerLicensed | TRIAL olmayan dosya bulunmuş ve sürüm kapsanmış — temel önkoşul |
IsCapabilityGranted(cap) | Tek yetenek kapısı |
HasSearch HasAnnotation HasConverter HasDicom | Yeteneğe göre satın alma bayrakları — geçici farkındalıklı cevap için IsCapabilityGranted kullanın |
IsValidForDomain(host) | Host kapsamı; V4 lisansları *.* joker karakterini kullanır |
LicenseRejectionReason | Boş değil ⇒ açma bu mesajla engellenir |
DoconutLicenseInfo, yönetim panelleri için görüntü dostu bir anlık görüntü sunar: Owner, Email, LicenseType, Domain, IsLicenseFileFound, IsVersionValid, IsTrial, IsExpired, Has* bayrakları, geçici lisans alanları ve 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,
}));Sağlık kontrolü
AddDoconut() bir "doconut" sağlık kontrolü kaydeder ve lisans/süre durumu raporunu standart ASP.NET Core mekanizmasıyla bildirir:
app.MapHealthChecks("/health");Bunu izleme sisteminize bağlayın ve süresi dolmakta olan bir abonelik, destek talebi 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ısına güncellemek, lisansı bu yapı için geçersiz kılar: IsVersionValid false olur ve açma LicenseException ile engellenir (neden License.RejectionMessage içinde bulunur) — kasıtlı olarak hızlı başarısızlık, böylece eski veya lisanssız bir yapı dağıtımda yakalanır, üretim çıktısı sessizce filigranlanmaz. Aboneliği yenileyin, .lic dosyasını değiştirin ve uygulamayı yeniden başlatın, böylece AddDoconut() yeni lisansı yükler.
Bu sayfa yardımcı oldu mu?