Άδεια
Δυνατότητες, επίπεδα άδειας και η υπηρεσία άδειας
Αυτή η σελίδα είναι η αναφορά χρόνου εκτέλεσης για το πώς μια άδεια διαμορφώνει τη συμπεριφορά του Doconut: τι επιτρέπει κάθε κατάσταση άδειας, πώς χορηγούνται οι δυνατότητες, και πώς να τις εξετάσετε από τον κώδικα. (Για φόρτωση μιας άδειας, δείτε Ρύθμιση Άδειας.)
Καταστάσεις άδειας και τι κάνουν
| Κατάσταση | Ανοίγει έγγραφα; | Υδατογράφημα | Δυνατότητες |
|---|---|---|---|
| Πλήρης (πληρωμένη) άδεια (εντός του παραθύρου συνδρομής/ενημέρωσης) | Ναι | Καμία | Οι αγορασθείσες (Has* flags) |
| Προσωρινή άδεια (Developer/NFR — η άδεια αξιολόγησης, πριν από την ημερομηνία λήξης) | Ναι | Καμία | Όλες — γενική χορήγηση (το κανάλι αξιολόγησης) |
| Ληγμένη (μια προσωρινή άδεια πέρα από την ημερομηνία λήξης της, ή μια πληρωμένη συνδρομή πέρα από την ημερομηνία ανανέωσης) | Ναι | Υδατογράφημα αξιολόγησης | Καμία χορηγία |
| Καμία άδεια αρχείο καθόλου | Ναι | Υδατογράφημα αξιολόγησης | Καμία χορηγία |
| Βρέθηκε αλλά απορρίφθηκε (μη έγκυρη υπογραφή, παραποιημένο, σε μαύρη λίστα, ή μια έκδοση νεότερη από το παράθυρο έκδοσης της άδειας) | Όχι — LicenseException σε κάθε άνοιγμα | — | — |
Δύο συνέπειες που αξίζει να εσωτερικεύσετε:
- Ένα ελλιπές αρχείο άδειας δεν είναι προσωρινή άδεια. Χωρίς αρχείο άδειας, οι σελίδες εμφανίζονται με υδατογράφημα και καμία δυνατότητα (αναζήτηση, σχολιασμός, πρόσθετα) δεν είναι ενεργή. Η πλήρης, χωρίς υδατογράφημα εμπειρία απαιτεί μια πραγματική Προσωρινή άδεια (λάβετε ένα).
- Μόνο μια απορριφθείσα άδεια εμποδίζει το άνοιγμα. Η λήξη της συνδρομής/προγράμματος μειώνεται σε εμφάνιση με υδατογράφημα· όμως η ανάπτυξη μιας έκδοσης νεότερης από το παράθυρο έκδοσης της άδειας απορρίπτεται και αποτυγχάνει άμεσα με
LicenseException, ώστε να το εντοπίσετε κατά την ανάπτυξη — όχι με σιωπηλή αποστολή εξόδου με υδατογράφημα. Η εξαίρεση (απόOpenDocumentAsync) μεταφέρει τον λόγο απόLicense.RejectionMessage.
Δυνατότητες
Doconut ελέγχει προαιρετική λειτουργικότητα μέσω δυνατότητας. Σήμερα αυτές είναι τα προαιρετικά πρόσθετα Converter και DICOM καθώς και οι ενσωματωμένες λειτουργίες Αναζήτηση και Σχόλιο, καθεμία χορηγείται από την άδειά σας. Ο βασικός προβολέας δεν είναι δυνατότητα — είναι η προϋπόθεση, εμφανιζόμενη ως 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) από το DoconutHost.Services. Είναι singleton — η άδεια αναλύεται μία φορά, στο DoconutHost.Initialize:
| Μέλος | Σημασία |
|---|---|
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.
// GET /Features - feature-flag your UI from the same source of truth the SDK uses
public ActionResult Index()
{
var lic = Doconut.DoconutHost.Services.GetRequiredService<IDoconutLicenseService>();
return Json(new
{
viewer = lic.IsViewerLicensed || lic.IsTemporary,
search = lic.IsCapabilityGranted(LicenseCapability.Search),
annotation = lic.IsCapabilityGranted(LicenseCapability.Annotation),
conversion = lic.HasConverter,
dicom = lic.HasDicom,
}, JsonRequestBehavior.AllowGet);
}Έλεγχος υγείας
Doconut καταχωρεί έναν έλεγχο υγείας "doconut" που αναφέρει την κατάσταση της άδειας. Το κλασικό ASP.NET δεν έχει δικό του endpoint υγείας, οπότε εκθέστε το από έναν ελεγκτή:
// GET /Health - Doconut registers a "doconut" health check that reports the license state:
// Healthy (valid), Degraded (trial or no license file), Unhealthy (expired).
public async Task<ActionResult> Index()
{
var health = Doconut.DoconutHost.Services.GetRequiredService<HealthCheckService>();
HealthReport report = await health.CheckHealthAsync();
Response.StatusCode = report.Status == HealthStatus.Unhealthy ? 503 : 200;
return Content(report.Status.ToString(), "text/plain");
}Συνδέστε το με την παρακολούθησή σας και μια συνδρομή που λήγει γίνεται ειδοποίηση αντί για εισιτήριο υποστήριξης. Δείτε το DoconutHost για τις τιμές κατάστασης.
Αναβαθμίσεις έκδοσης
Μια άδεια καλύπτει ένα παράθυρο έκδοσης. Η ενημέρωση του πακέτου NuGet σε μια έκδοση νεότερη από αυτό το παράθυρο καθιστά την άδεια μη έγκυρη για αυτήν την έκδοση: το IsVersionValid γίνεται false και το άνοιγμα μπλοκάρεται με LicenseException (ο λόγος βρίσκεται στο License.RejectionMessage) — αποτυχία άμεσης εκτέλεσης, ώστε μια παλιά ή μη αδειοδοτημένη έκδοση να εντοπιστεί κατά την ανάπτυξη αντί να υδατογραφεί σιωπηλά την παραγωγική έξοδο. Ανανεώστε τη συνδρομή, αντικαταστήστε το .lic στο wwwroot, και επανεκκινήστε την πισίνα εφαρμογών ώστε το DoconutHost.Initialize φορτώσει τη νέα άδεια.
Ήταν αυτή η σελίδα χρήσιμη;