Αδειοδότηση

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

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

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