Αδειοδότηση
Δυνατότητες, επίπεδα αδειών και η υπηρεσία αδειών
Αυτή η σελίδα είναι η αναφορά χρόνου εκτέλεσης για το πώς μια άδεια διαμορφώνει τη συμπεριφορά του Doconut: τι επιτρέπει κάθε κατάσταση άδειας, πώς χορηγούνται οι δυνατότητες και πώς να τις ελέγξετε όλο από τον κώδικα. (Για φόρτωση μιας άδειας, δείτε το Ξεκινώντας → Ρύθμιση Άδειας.)
Καταστάσεις άδειας και τι κάνουν
| Κατάσταση | Ανοίγει έγγραφα; | Υδατογράφημα | Δυνατότητες |
|---|---|---|---|
| Πλήρης (πληρωμένη) άδεια (εντός του παραθύρου συνδρομής/ενημέρωσης) | Ναι | Καμία | Οι αγορασθείσες (Has* flags) |
| Προσωρινή άδεια (Developer/NFR — η άδεια αξιολόγησης, πριν από την ημερομηνία λήξης) | Ναι | Καμία | Όλες — γενική χορήγηση (το κανάλι αξιολόγησης) |
| Ληγμένη (μια προσωρινή άδεια πέραν της ημερομηνίας λήξης της, ή μια πληρωμένη συνδρομή πέραν της ημερομηνίας ανανέωσης) | Ναι | Υδατογράφημα αξιολόγησης | Καμία χορηγία |
| Καμία αρχείο άδειας καθόλου | Ναι | Υδατογράφημα αξιολόγησης | Καμία χορηγία |
| Βρέθηκε αλλά απορρίφθηκε (μη έγκυρη υπογραφή, παραποιημένο, σε μαύρη λίστα, ή μια έκδοση νεότερη από το παράθυρο έκδοσης της άδειας) | Όχι — LicenseException σε κάθε άνοιγμα | — | — |
Δύο συνέπειες που αξίζει να εσωτερικεύσετε:
- Ένα ελλιπές αρχείο άδειας δεν είναι προσωρινή άδεια. Χωρίς αρχείο άδειας, οι σελίδες εμφανίζονται με υδατογράφημα και καμία δυνατότητα (αναζήτηση, σχολιασμός, πρόσθετα) δεν είναι ενεργή. Η πλήρης, χωρίς υδατογράφημα εμπειρία απαιτεί μια πραγματική Προσωρινή άδεια (παίρνετε μία).
- Μόνο μια απορριφθείσα άδεια εμποδίζει το άνοιγμα. Η λήξη ημερολογίου/συνδρομής μετατρέπει την απόδοση σε υδατογράφημα· όμως η ανάπτυξη μιας έκδοσης νεότερης από το παράθυρο έκδοσης της άδειας απορρίπτεται και αποτυγχάνει γρήγορα με ένα
LicenseException, έτσι το εντοπίζετε κατά την ανάπτυξη — όχι με σιωπηλή αποστολή υδατογραφημένου αποτελέσματος. Η εξαίρεση (από τοOpenDocumentAsync) μεταφέρει τον λόγο από τοLicense.RejectionMessage.
Δυνατότητες
Το Doconut ελέγχει την προαιρετική λειτουργικότητα μέσω δυνατότητας. Σήμερα αυτές είναι τα πρόσθετα Converter και DICOM με επιλογή, καθώς και οι ενσωματωμένες λειτουργίες Search και Annotation, καθεμία χορηγείται από την άδειά σας. Ο βασικός προβολέας δεν είναι δυνατότητα — είναι η προαπαιτούμενη, εμφανιζόμενη ως IsViewerLicensed:
bool viewerLicensed = lic.IsViewerLicensed; // non-TRIAL license present AND covering this build's versionΗ μοναδική πύλη που χρησιμοποιεί ολόκληρη η αλυσίδα είναι το IsCapabilityGranted:
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.
// 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:
app.MapHealthChecks("/health");Συνδέστε το στην παρακολούθησή σας και μια συνδρομή που λήγει γίνεται ειδοποίηση αντί για αίτημα υποστήριξης.
Αναβαθμίσεις έκδοσης
Μια άδεια καλύπτει ένα παράθυρο έκδοσης. Η ενημέρωση του πακέτου NuGet σε μια έκδοση νεότερη από αυτό το παράθυρο καθιστά την άδεια άκυρη για αυτήν την έκδοση: το IsVersionValid γίνεται false και το άνοιγμα αποκλείεται με ένα LicenseException (ο λόγος βρίσκεται στο License.RejectionMessage) — σκόπιμα αποτυγχάνει γρήγορα, ώστε μια παλιά ή χωρίς άδεια έκδοση να εντοπιστεί κατά την ανάπτυξη αντί για σιωπηλή υδατογράφημα της παραγωγικής εξόδου. Ανανεώστε τη συνδρομή, αντικαταστήστε το .lic και επανεκκινήστε την εφαρμογή ώστε το AddDoconut() να φορτώσει τη νέα άδεια.
Ήταν αυτή η σελίδα χρήσιμη;