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