Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Azure Web site & dates

Îåêßíçóå áðü ôï ìÝëïò George Parissis. Τελευταία δημοσίευση από το μέλος George Parissis στις 04-11-2014, 06:06. Υπάρχουν 5 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  02-11-2014, 21:07 75884

    Azure Web site & dates

    Το πρόβλημα αφορά ερωτήματα στην βάση από ένα web site που έχω στο Azure.

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

    Έχω φτιάξει λοιπόν ένα Generic Repository και ένα Base Entity και στο repository για όλα τα queries έχω βάλει ValidFrom<=Now and ValidUntil>=Now. Μέχρι εδώ όλα καλά. Τοπικά τα πάντα τρέχουν και εμφανίζονται όπως θα έπρεπε.

    Ανεβάζω την βάση στο Azure και κάνω upload το web site σε ένα Standard Plan και εκεί ξεκινάνε τα περίεργα. Όταν καταχωρώ μία νέα εγγραφή η καταχώρηση γίνεται στην βάση αλλά όταν κάνω refresh δεν εμφανίζεται. Θα πρέπει να περιμένω λίγο, γύρω στο ένα δευτερόλεπτο το έχω υπολογίσει για να εμφανιστεί. Και δεν μπορώ να καταλάβω το γιατί. Από την στιγμή που το ίδιο το instance δίνει την ώρα της καταχώρησης είναι λογικό λαμβάνοντας υπόψιν την μορφή του ερωτήματος που γίνεται από το ίδιο το instance να μου φέρει αμέσως την εγγραφή και όχι να περιμένω. Τοπικά δεν έχω κανένα πρόβλημα. Τα πεδία έχουν σωθεί με datatype2(0). Και αυτό που λέω δεν γίνεται τυχαία, αλλά πάντα.

    Έχει κανείς να μου προτείνει μια ιδέα για το που να συνεχίσω να ψάχνω ή αν έχει αντιμετωπίσει κάτι παρόμοιο;

    Ευχαριστώ.

  •  02-11-2014, 23:40 75885 σε απάντηση της 75884

    Απ: Azure Web site & dates

    Τι είναι το datatype2(0); Είναι κάτι που μου διαφεύγει;

    Πόσα πεδία nvarchar(max) έχεις ανά record;

     

    George J. 


    George J. Capnias: Χειροπρακτικός Υπολογιστών, Ύψιστος Γκουράρχης της Κουμπουτερολογίας
    w: capnias.org, t: @gcapnias, l: gr.linkedin.com/in/gcapnias
    dotNETZone.gr News
  •  02-11-2014, 23:59 75886 σε απάντηση της 75884

    Απ: Azure Web site & dates

    Δεν υπάρχει datatype2. Μήπως εννοείς DateTime2 ? 

    Όσον αφορά το Azure Web Sites - μάλλον είναι εντελώς άσχετο με το πρόβλημα. Ποιός υπολογίζει τους χρόνους ValidFrom και ValidUntil, καθώς και τους χρόνους των φίλτρων? Αν είναι η εφαρμογή και σώζεις χρόνους σε επίπεδο millisecond, είναι σχεδόν σίγουρο ότι θα πέσεις σε διαφορές μεταξύ των ρολογιών του site και της βάσης. Θα πρέπει και οι δύο χρόνοι να υπολογίζονται από τη βάση αν δεν θέλεις τέτοια παράξενα. Αν από την άλλη έχεις μπλέξει timezones, π.χ. υπολογίζεις τους χρόνους με ελληνικό timezone αλλά φιλτράρεις ως GMT, θα έχεις πάλι πρόβλημα. Εκεί όμως θα έχεις καθυστέρηση 2 ωρών μέχρι να εμφανιστούν οι σωστές εγγραφές.

    Το ότι τοπικά δεν έχεις πρόβλημα δεν σημαίνει τίποτε - τοπικά προφανώς site και βάση είναι στο ίδιο μηχάνημα, άρα έχουν και το ίδιο ρολόι.  Αν είχες δύο διαφορετικά μηχανήματα είναι πιθανόν να αντιμετώπιζες παρόμοια προβλήματα.

     


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  03-11-2014, 04:42 75887 σε απάντηση της 75886

    Απ: Azure Web site & dates

    Ναι έχετε δίκιο, datetime2(0) είναι το datatype. Μάλλον η ώρα και η κούραση της ημέρας.

    Παναγιώτη να σου δώσω λίγο το flow να καταλάβεις. Ο χρήστης καταχωρεί μία εγγραφή. Στο Base Repository διαβάζω την ώρα του μηχανήματος και την περνάω στο πεδίο ValidFrom. Και η οποία καταχωρείτε. Μόλις γίνει αυτό αμέσως κάνω ένα read και κατ' επέκταση ένα refresh την σελίδα που βλέπει ο χρήστης για να δει αν έχουν καταχωρηθεί και εγγαρφές από άλλους. Οπότε αμέσως μετά την δημιουργία κάνω ανάγνωση διαβάζοντας ξανά την ώρα του μηχανήματος την οποία περνάω στο ερώτημα. Ακόμα και στο ίδιο δευτερόλεπτο να πέσω της δημιουργίας με την ανάγνωση, δεν θα πρέπει να με επηρεάζει γιατί έχω βάλει στο ερώτημα το ίσον. Οπότε δεν διαβάζω την ώρα από το instance που τρέχει ο sql server αλλά από το instance που τρέχει το site και για την δημιουργία της εγγραφής αλλά και για την ανάγνωση. Και εδώ είναι που προβληματίζομαι. Έχεις δίκιο ότι κάτι παίζει με τα δύο instances αλλά θα έπρεπε με το σενάριο που σου περιγράφω;

  •  03-11-2014, 21:14 75888 σε απάντηση της 75887

    Απ: Azure Web site & dates

    Ο Παναγιώτης πολύ σωστά έκανε και την παρατήρηση για τα διάφορα timezones. Πως αναθέτεις τις τιμές στις δυο μεταβλητές; Από την εμπειρία μου μέχρι τώρα είναι ότι θα πρέπει πάντα όλες οι ημερομηνίες να σόζωνται στην βάση σαν UTC (DateTime.UtcNow) μιας και αυτό κάνει την επεξεργασία αργότερα αρκετά πιο εύκολη.
    My dream is to fly over the rainbow so high!!!!
  •  04-11-2014, 06:06 75890 σε απάντηση της 75888

    Απ: Azure Web site & dates

    Δεν το νομίζω ότι εκεί είναι το πρόβλημα. Μην ξεχνάς ότι μιλάμε για instance στο azure. Δεν υπάρχει περίπτωση να γίνει λάθος ακόμα και να το θέλεις. UTC ή Local time είναι το ίδιο. Επίσης το data type που έχω επιλέξει δεν αποθηκεύει πληροφορία timezone οπότε ότι ανάγνωση και να κάνω στο instance το kind της ημερομηνίας είναι unknown το οποίο απο default θεωρεί την ημερομηνια σαν local. Άρα και date.utcnow να έγραφα ή απλά date.now για το instance του azure είναι το ίδιο.  Άλλωστε όπως περιέγραψα τον κώδικα για την απόδοση της τιμής την έχω κάνει σε ένα σημείο σε όλο μου το πρόγραμμα. Πόσες φορές ποια να κοιτάξω την εντολή Now για να δω αν έχω κάνει κάτι περίεργο εκεί. Τρεις μέρες τώρα παλεύω με αυτό. Δεν μπορώ να σκεφθώ κάτι άλλο. 
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems