Lisanslama
Kapasiteler, lisans katmanları 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, kapasitelerin nasıl verildiği ve tüm bunların koddan nasıl inceleneceği. (Bir lisansı yükleme için, Başlarken → Lisans Kurulumu bölümüne bakın.)
Lisans durumları ve ne yaptıkları
| Durum | Belge açar mı? | Filigran | Kapasiteler |
|---|---|---|---|
| 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 tarihi 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ı olmadığında, sayfalar filigranlı olarak görüntülenir ve hiçbir kapasiteler (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üresi dolduğunda filigranlı görüntüleme gerçekleşir; ancak bir yapıyı lisansın sürüm penceresinden daha yeni bir sürümde 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.
Kapasiteler
Doconut, isteğe bağlı işlevselliği kapasite ile kontrol eder. Şu anda 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 kapasite değildir — önkoşuldur ve IsViewerLicensed olarak sunulur:
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 lisans tüm kapasiteleri verir — henüz ayrı bir satın alma bayrağı olmayan kapasiteler dahil; gerçek satın alınmış bir lisans yalnızca Has* bayraklarını verir ve eşlenmemiş her şey için varsayılan olarak reddeder. (Eski bir TRIAL türü dosya hak değildir — lisanssız kabul edilir: filigranlı, hiçbir şey verilmez.)
Geçici lisanslar
Normal Search ve Annotation mevcut kapasitelerini 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 | ExpiryNote etiketi mevcut (algılama etiket varlığıyla yapılır — notun metniyle eşleşmez, dinamiktir) |
ExpiryNote | Lisansa gömülü bilgilendirici metin |
LicenseExpiry | Kesin son tarih (DateTime?) |
Son tarih anlamı katmana göre değişir: geçici bir lisans yalnızca LicenseExpiry tarihiyle sona erer (abonelik penceresi yok sayılır; tarihi olmayan geçici lisans 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 türü dosya (lisanssız kabul edilir — hak değildir) |
IsTemporary / ExpiryNote / LicenseExpiry | Geçici lisans işaretleyicileri |
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 kapasite kapısı |
HasSearch HasAnnotation HasConverter HasDicom | Kapasite başına satın alma bayraklarıyla sunulur — 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 anlık görüntüyü ortaya koyar: 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 dolma durumunu standart ASP.NET Core mekanizmasıyla raporlar:
app.MapHealthChecks("/health");Bunu izleme sisteminize bağlayın ve 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ısına güncellemek, lisansı bu yapı için geçersiz kılar: IsVersionValid false olur ve açma LicenseException ile engellenir (License.RejectionMessage içinde neden bulunur) — kasıtlı olarak hızlı başarısızlık, böylece eski veya lisanssız bir yapı dağıtımda yakalanır, sessizce üretim çıktısını filigranlamaz. 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?