Αδειοδότηση

Δυνατότητες, επίπεδα αδειών και η υπηρεσία αδειών

Αυτή η σελίδα είναι η αναφορά χρόνου εκτέλεσης για το πώς μια άδεια διαμορφώνει τη συμπεριφορά του Doconut: τι επιτρέπει κάθε κατάσταση άδειας, πώς χορηγούνται οι δυνατότητες και πώς να τις ελέγξετε από τον κώδικα. (Για φόρτωση μιας άδειας, δείτε το Ξεκινώντας → Ρύθμιση Άδειας.)

Καταστάσεις άδειας και τι κάνουν

ΚατάστασηΑνοίγει έγγραφα;ΥδατογράφημαΔυνατότητες
Πλήρης (πληρωμένη) άδεια (εντός του παραθύρου συνδρομής/ενημέρωσης)ΝαιΚανέναΟι αγορασμένες (Has* flags)
Προσωρινή άδεια (Developer/NFR — η άδεια αξιολόγησης, πριν από την ημερομηνία λήξης της)ΝαιΚανέναΌλα — γενική χορήγηση (το κανάλι αξιολόγησης)
Ληγμένη (μια προσωρινή άδεια μετά την ημερομηνία λήξης της, ή μια πληρωμένη συνδρομή μετά την ημερομηνία ανανέωσης)ΝαιΥδατογράφημα αξιολόγησηςΚαμία χορήγηση
Καμία αρχείο άδειαςΝαιΥδατογράφημα αξιολόγησηςΚαμία χορήγηση
Βρέθηκε αλλά απορρίφθηκε (μη έγκυρη υπογραφή, παραποιημένο, σε μαύρη λίστα, ή μια έκδοση νεότερη από το παράθυρο έκδοσης της άδειας)Όχι — LicenseException σε κάθε άνοιγμα

Δύο συνέπειες που αξίζει να εσωτερικεύσετε:

  • Μια ελλιπής άδεια δεν είναι προσωρινή άδεια. Χωρίς αρχείο άδειας, οι σελίδες εμφανίζονται με υδατογράφημα και καμία δυνατότητα (αναζήτηση, σχολιασμός, πρόσθετα) δεν είναι ενεργή. Η πλήρης, χωρίς υδατογράφημα εμπειρία απαιτεί μια πραγματική Προσωρινή άδεια (αποκτήστε μία).
  • Μόνο μια απορριφθείσα άδεια εμποδίζει το άνοιγμα. Η λήξη του ημερολογίου/συνδρομής μετατρέπει την απόδοση σε υδατογράφημα· όμως η ανάπτυξη μιας έκδοσης νεότερης από το παράθυρο έκδοσης της άδειας απορρίπτεται και αποτυγχάνει άμεσα με ένα LicenseException, ώστε να το εντοπίσετε κατά την ανάπτυξη — όχι με σιωπηρή αποστολή εξόδου με υδατογράφημα. Η εξαίρεση αυτή (από το OpenDocumentAsync) μεταφέρει τον λόγο από το License.RejectionMessage.

Δυνατότητες

Το Doconut ελέγχει την προαιρετική λειτουργικότητα με δυνατότητα. Σήμερα αυτές είναι τα πρόσθετα Converter και DICOM με δυνατότητα επιλογής, καθώς και οι ενσωματωμένες λειτουργίες Search και Annotation, καθεμία χορηγείται από την άδειά σας. Ο βασικός προβολέας δεν είναι δυνατότητα — είναι η προϋπόθεση, εμφανιζόμενη ως IsViewerLicensed:

csharp
bool viewerLicensed = lic.IsViewerLicensed; // non-TRIAL license present AND covering this build's version

Η μοναδική πύλη που χρησιμοποιεί ολόκληρη η αλυσίδα είναι το IsCapabilityGranted:

csharp
bool searchGranted = lic.IsCapabilityGranted(LicenseCapability.Search);

Η λογική του, ακριβώς από την υλοποίηση: μια ενεργή (μη ληγμένη) Προσωρινή άδεια χορηγεί κάθε δυνατότητα — συμπεριλαμβανομένων των δυνατοτήτων που δεν έχουν ακόμη αφιερωμένη σημαία αγοράς· μια πραγματική αγορασμένη άδεια χορηγεί ακριβώς τις σημαίες Has* της και είναι προεπιλογή-απόρριψη για ό,τι δεν είναι αντιστοιχισμένο. (Ένα παλιό αρχείο τύπου TRIAL δεν αποτελεί δικαίωμα — αντιμετωπίζεται ως χωρίς άδεια: υδατογράφημα, καμία χορήγηση.)

Προσωρινές άδειες

Οι προσωρινές (Developer/NFR) άδειες σημειώνονται με ετικέτα ExpiryNote και έχουν σκληρή ημερομηνία λήξης:

ΜέλοςΣημασία
IsTemporaryΥπάρχει ετικέτα ExpiryNote (η ανίχνευση γίνεται με την παρουσία της ετικέτας — ποτέ με το κείμενο της σημείωσης, είναι δυναμική)
ExpiryNoteΠληροφοριακό κείμενο ενσωματωμένο στην άδεια
LicenseExpiryΗ σκληρή ημερομηνία λήξης (DateTime?)

Η σημασία της λήξης διαφέρει ανά επίπεδο: μια προσωρινή άδεια λήγει μόνο την ημερομηνία LicenseExpiry (το παράθυρο συνδρομής αγνοείται· μια προσωρινή άδεια χωρίς ημερομηνία θεωρείται ληγμένη, ασφαλής αποτυχία). Κάθε άλλη άδεια λήγει την ημερομηνία του παραθύρου συνδρομής/ενημέρωσης.

Αναφορά IDoconutLicenseService

Ενσωματώστε το IDoconutLicenseService (namespace Doconut.Core.Interfaces; καταχωρημένο ως singleton — η άδεια αναλύεται μία φορά κατά την εκκίνηση):

ΜέλοςΣημασία
LicenseΠλήρης στιγμιότυπο DoconutLicenseInfo (παρακάτω)
IsTrialΈνα παλιό αρχείο τύπου TRIAL (θεωρείται χωρίς άδεια — όχι δικαίωμα)
IsTemporary / ExpiryNote / LicenseExpiryΔείκτες προσωρινής άδειας
IsExpiredΛηγμένη σύμφωνα με τους κανόνες επιπέδου παραπάνω
IsVersionValidΑυτή η έκδοση εμπίπτει στο παράθυρο υποστήριξης της άδειας
IsViewerLicensedΒρέθηκε αρχείο μη-TRIAL και η έκδοση καλύπτεται — βασική προϋπόθεση
IsCapabilityGranted(cap)Η μοναδική πύλη δυνατότητας
HasSearch HasAnnotation HasConverter HasDicomΑπελευθερώνονται ανά σημαία αγοράς δυνατότητας — χρησιμοποιήστε IsCapabilityGranted για την απάντηση που λαμβάνει υπόψη τις προσωρινές άδειες
IsValidForDomain(host)Κάλυψη κεντρικού υπολογιστή· οι άδειες V4 χρησιμοποιούν το μπαλαντέρ *.*
LicenseRejectionReasonΜη κενό ⇒ το άνοιγμα εμποδίζεται με αυτό το μήνυμα

DoconutLicenseInfo εκθέτει το φιλικό προς την εμφάνιση στιγμιότυπο για πίνακες διαχείρισης: Owner, Email, LicenseType, Domain, IsLicenseFileFound, IsVersionValid, IsTrial, IsExpired, τις σημαίες Has*, τα πεδία προσωρινής άδειας, και το RejectionMessage.

csharp
// 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,
}));

Έλεγχος υγείας

AddDoconut() καταχωρεί έναν έλεγχο υγείας "doconut" που αναφέρει την κατάσταση άδειας/λήξης μέσω του τυπικού μηχανισμού ASP.NET Core:

csharp
app.MapHealthChecks("/health");

Συνδέστε το με την παρακολούθησή σας και μια λήγουσα συνδρομή γίνεται ειδοποίηση αντί για αίτημα υποστήριξης.

Αναβαθμίσεις έκδοσης

Μια άδεια καλύπτει ένα παράθυρο έκδοσης. Η ενημέρωση του πακέτου NuGet σε μια έκδοση νεότερη από αυτό το παράθυρο καθιστά την άδεια άκυρη για αυτήν την έκδοση: το IsVersionValid γίνεται false και το άνοιγμα εμποδίζεται με ένα LicenseException (ο λόγος βρίσκεται στο License.RejectionMessage) — σκόπιμα αποτυγχάνει άμεσα, ώστε μια παλιά ή χωρίς άδεια έκδοση να εντοπιστεί κατά την ανάπτυξη αντί για σιωπηλή υδατογράφημα της παραγωγικής εξόδου. Ανανεώστε τη συνδρομή, αντικαταστήστε το .lic, και επανεκκινήστε την εφαρμογή ώστε το AddDoconut() φορτώνει τη νέα άδεια.

Ήταν αυτή η σελίδα χρήσιμη;