Προγραμματισμός

Πώς να εργαστείτε με τις συνεδρίες στο ASP.Net

Το HTTP είναι ένα πρωτόκολλο χωρίς κατάσταση. Αυτό συνεπάγεται ότι κάθε φορά που ένα νέο αίτημα αποστέλλεται από τον πελάτη στον διακομιστή, οι πληροφορίες κατάστασης του προηγούμενου αιτήματος χάνονται. Υπάρχουν διάφοροι τρόποι αποθήκευσης και διαχείρισης της κατάστασης στο ASP.Net. Το αντικείμενο συνεδρίας είναι ένα από αυτά, ενώ τα άλλα είναι αντικείμενα προσωρινής αποθήκευσης και εφαρμογής.

Η προσωρινή αποθήκευση βελτιώνει την απόδοση της εφαρμογής ελαχιστοποιώντας την κατανάλωση πόρων στο σύστημά σας. Μπορείτε να αποθηκεύσετε δεδομένα ή ιστοσελίδες που χρησιμοποιούνται συχνά για να βελτιώσετε την απόδοση και την απόδοση και την επεκτασιμότητα της εφαρμογής μειώνοντας την κατανάλωση των πόρων του διακομιστή.

Μπορείτε να ορίσετε την περίοδο λειτουργίας ως μια περίοδο σύνδεσης μεταξύ διακομιστή και πελάτη - το αντικείμενο περιόδου σύνδεσης περιέχει δεδομένα που αντιστοιχούν στην περίοδο λειτουργίας ενός χρήστη. Το Session είναι μια τεχνική διαχείρισης κατάστασης διακομιστή που χρησιμοποιείται για την αποθήκευση συγκεκριμένων πληροφοριών χρήστη στη μνήμη για μετέπειτα ανάκτηση.

Τρόποι αποθήκευσης δεδομένων συνεδρίας

Το αντικείμενο συνεδρίας δημιουργείται και διαχειρίζεται από την πλευρά του διακομιστή. Η λειτουργία αποθήκευσης περιόδου λειτουργίας καθορίζει πού θα πρέπει να αποθηκεύονται τα δεδομένα περιόδου σύνδεσης. Η κατάσταση συνεδρίας μπορεί να αποθηκευτεί σε έναν από τους παρακάτω τρόπους:

  1. In - Process: Αποθηκεύεται στην ίδια διαδικασία ASP.Net
  2. State Server: Αποθηκεύτηκε σε κάποιο άλλο σύστημα
  3. SQL Server: Αποθηκεύεται στη βάση δεδομένων SQLServer
  4. Προσαρμοσμένο: αυτό σας επιτρέπει να αποθηκεύετε δεδομένα περιόδου λειτουργίας χρησιμοποιώντας έναν προσαρμοσμένο πάροχο αποθήκευσης

Η λειτουργία αποθήκευσης δεδομένων περιόδου λειτουργίας In-Proc είναι η προεπιλεγμένη και είναι επίσης η ταχύτερη από όλες τις διαθέσιμες λειτουργίες αποθήκευσης. Σε αυτήν τη λειτουργία, τα δεδομένα περιόδου λειτουργίας αποθηκεύονται στη μνήμη του διακομιστή - εντός της διαδικασίας ASP.Net Worker. Θα πρέπει να χρησιμοποιήσετε αυτήν τη λειτουργία εάν ο όγκος των δεδομένων που πρέπει να αποθηκευτούν στη συνεδρία είναι μικρότερος και εάν δεν θα χρειαστεί να διατηρηθούν τα δεδομένα. Θα πρέπει να σημειωθεί ότι τα δεδομένα περιόδου σύνδεσης που είναι αποθηκευμένα σε αυτήν τη λειτουργία είναι ασταθή, δηλαδή, μόλις τερματιστεί η περίοδος λειτουργίας, τα δεδομένα περιόδου σύνδεσης χάνονται. Έτσι, τα δεδομένα στη συνεδρία είναι διαθέσιμα όσο η περίοδος λειτουργίας είναι ζωντανή.

Στη λειτουργία State Server, τα δεδομένα περιόδου λειτουργίας αποθηκεύονται σε ξεχωριστή διαδικασία - αυτό ονομάζεται ASP.Net State Service. Με άλλα λόγια, τα δεδομένα περιόδου λειτουργίας σε αυτήν τη λειτουργία αποθηκεύονται εκτός της διαδικασίας ASP.Net Worker ή της ομάδας εφαρμογών στα IIS. Σε αντίθεση με τη λειτουργία In-Proc, τα δεδομένα περιόδου λειτουργίας στη λειτουργία State Server διατηρούνται, δηλαδή δεν χάνονται μετά την επανεκκίνηση της εφαρμογής ιστού.

Το παρακάτω απόσπασμα κώδικα δείχνει πώς μπορείτε να διαμορφώσετε την κατάσταση περιόδου σύνδεσης στην εφαρμογή σας για αποθήκευση σε αυτήν τη λειτουργία.

 

   

stateConnectionString = "tcpip = Διακομιστής: 1234"

cookieless = "ψεύτικο"

χρονικό όριο = "20" />

 

Η λειτουργία SQLServer της αποθήκευσης δεδομένων περιόδου λειτουργίας χρησιμοποιείται για τη διατήρηση δεδομένων περιόδου λειτουργίας της εφαρμογής σας στη βάση δεδομένων SQLServer. Παρόμοια με τη λειτουργία State Server της αποθήκευσης δεδομένων περιόδου λειτουργίας, η λειτουργία SQLServer σάς επιτρέπει επίσης να διατηρείτε τα δεδομένα περιόδου λειτουργίας της εφαρμογής σας κατά την επανεκκίνηση της εφαρμογής. Σημειώστε ότι πρέπει να βεβαιωθείτε ότι η βάση δεδομένων κατάστασης περιόδου σύνδεσης ASP.Net δημιουργείται πριν χρησιμοποιήσετε αυτήν τη λειτουργία. Μπορείτε να δημιουργήσετε αυτήν τη βάση δεδομένων χρησιμοποιώντας το βοηθητικό πρόγραμμα γραμμής εντολών Aspnet_regsql.exe.

Το παρακάτω απόσπασμα κώδικα δείχνει πώς μπορείτε να ρυθμίσετε τις παραμέτρους της εφαρμογής σας ώστε να αποθηκεύει δεδομένα περιόδου λειτουργίας σε μια βάση δεδομένων SQLServer.

 

   

sqlConnectionString = "πηγή δεδομένων = διακομιστής; id χρήστη = joydip; κωδικός πρόσβασης = sa1 @ 3"

cookieless = "false" χρονικό όριο = "20" />

 

Υποστήριξη για συμπίεση δεδομένων συνεδρίας

Το ASP.Net 4 της Microsoft παρουσίασε μια νέα δυνατότητα: συμπίεση κατάστασης περιόδου λειτουργίας. Με το ASP.Net 4 και μετά, μπορείτε να αξιοποιήσετε αυτήν την ενσωματωμένη λειτουργία για να συμπιέσετε τα δεδομένα περιόδου σύνδεσης για την αποθήκευση περιόδων εκτός διαδικασίας. Για να επωφεληθείτε από αυτήν τη δυνατότητα, το μόνο που χρειάζεται να κάνετε είναι να ορίσετε το χαρακτηριστικό compressionEnabled σε "true" στο αρχείο διαμόρφωσης της εφαρμογής σας. Το παρακάτω απόσπασμα κώδικα δείχνει πώς μπορεί να ρυθμιστεί.

<>

mode = "SQLServer"

stateConnectionString = "κάποια συμβολοσειρά σύνδεσης ..."

compressionEnabled = "true" />

Η κατάσταση περιόδου λειτουργίας σάς επιτρέπει να αποθηκεύετε συγκεκριμένα δεδομένα χρήστη στη μνήμη και να αναγνωρίζετε ένα συγκεκριμένο αίτημα μοναδικά. Τα δεδομένα περιόδου σύνδεσης αποθηκεύονται ως ζεύγη κλειδιών / τιμών στο SessionStateItemCollection και είναι προσβάσιμα μέσω της ιδιότητας HttpContext.Session.

Τα ακόλουθα παραδείγματα κώδικα δείχνουν πώς μπορείτε να αποθηκεύσετε και να ανακτήσετε δεδομένα περιόδου σύνδεσης.

HttpSessionState.Session ["UserName"] = "John"; // αποθηκεύει δεδομένα περιόδου σύνδεσης

string str = HttpSessionState.Session ["Όνομα χρήστη"]. ToString ();

// Ανακτά δεδομένα περιόδου σύνδεσης

HttpSessionState.Remove ("Κλειδί για κατάργηση");

// Καταργεί ένα αντικείμενο από την κατάσταση συνεδρίας