Άδεια

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

Αυτή η σελίδα είναι η αναφορά χρόνου εκτέλεσης για το πώς μια άδεια διαμορφώνει τη συμπεριφορά του Doconut: τι επιτρέπει κάθε κατάσταση άδειας, πώς χορηγούνται οι δυνατότητες, και πώς να τις εξετάσετε από τον κώδικα. (Για φόρτωση μιας άδειας, δείτε Ρύθμιση Άδειας.)

Καταστάσεις άδειας και τι κάνουν

ΚατάστασηΑνοίγει έγγραφα;ΥδατογράφημαΔυνατότητες
Πλήρης (πληρωμένη) άδεια (εντός του παραθύρου συνδρομής/ενημέρωσης)ΝαιΚαμίαΟι αγορασθείσες (Has* flags)
Προσωρινή άδεια (Developer/NFR — η άδεια αξιολόγησης, πριν από την ημερομηνία λήξης)ΝαιΚαμίαΌλες — γενική χορήγηση (το κανάλι αξιολόγησης)
Ληγμένη (μια προσωρινή άδεια πέρα από την ημερομηνία λήξης της, ή μια πληρωμένη συνδρομή πέρα από την ημερομηνία ανανέωσης)ΝαιΥδατογράφημα αξιολόγησηςΚαμία χορηγία
Καμία άδεια αρχείο καθόλουΝαιΥδατογράφημα αξιολόγησηςΚαμία χορηγία
Βρέθηκε αλλά απορρίφθηκε (μη έγκυρη υπογραφή, παραποιημένο, σε μαύρη λίστα, ή μια έκδοση νεότερη από το παράθυρο έκδοσης της άδειας)Όχι — LicenseException σε κάθε άνοιγμα——

Δύο συνέπειες που αξίζει να εσωτερικεύσετε:

  • Ένα ελλιπές αρχείο άδειας δεν είναι προσωρινή άδεια. Χωρίς αρχείο άδειας, οι σελίδες εμφανίζονται με υδατογράφημα και καμία δυνατότητα (αναζήτηση, σχολιασμός, πρόσθετα) δεν είναι ενεργή. Η πλήρης, χωρίς υδατογράφημα εμπειρία απαιτεί μια πραγματική Προσωρινή άδεια (λάβετε ένα).
  • Μόνο μια απορριφθείσα άδεια εμποδίζει το άνοιγμα. Η λήξη της συνδρομής/προγράμματος μειώνεται σε εμφάνιση με υδατογράφημα· όμως η ανάπτυξη μιας έκδοσης νεότερης από το παράθυρο έκδοσης της άδειας απορρίπτεται και αποτυγχάνει άμεσα με LicenseException, ώστε να το εντοπίσετε κατά την ανάπτυξη — όχι με σιωπηλή αποστολή εξόδου με υδατογράφημα. Η εξαίρεση (από OpenDocumentAsync) μεταφέρει τον λόγο από License.RejectionMessage.

Δυνατότητες

Doconut ελέγχει προαιρετική λειτουργικότητα μέσω δυνατότητας. Σήμερα αυτές είναι τα προαιρετικά πρόσθετα Converter και DICOM καθώς και οι ενσωματωμένες λειτουργίες Αναζήτηση και Σχόλιο, καθεμία χορηγείται από την άδειά σας. Ο βασικός προβολέας δεν είναι δυνατότητα — είναι η προϋπόθεση, εμφανιζόμενη ως 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) από το 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.

csharp
// 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 υγείας, οπότε εκθέστε το από έναν ελεγκτή:

csharp
// 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 φορτώσει τη νέα άδεια.

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