Αδειοδότηση

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

Αυτή η σελίδα είναι η αναφορά χρόνου εκτέλεσης για το πώς μια άδεια διαμορφώνει τη συμπεριφορά του 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() να φορτώνει τη νέα άδεια.

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