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

 

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

C# Global Variables

Îåêßíçóå áðü ôï ìÝëïò Θανάσης Διαμάντης. Τελευταία δημοσίευση από το μέλος anjelinio στις 05-11-2007, 18:18. Υπάρχουν 9 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  02-11-2007, 16:30 36914

    C# Global Variables

    Γεία σε όλους. Καινούριος εδω και ερχόμενος από το χώρο του Delphi. Φιλοδοξώ να μπώ στο χώρο του .net. Θα ήθελα να κάνω την εξής ερώτηση:

    Οκ Έχω φτιάξει τις κλάσεις μου σε C# με τα workspaces κτλ κτλ και θέλω να φτιάξω μία μεταβλητή τυπου μίας κλάσης και να τη δημιουργησω στο OnNewSession του Global.asax και να μπορώ να αναφερθώ από όλες τις Σελίδες σε αυτή τη μεταβλητη.  Πού μπορώ να ορίσω μία τέτοιεα μεταβλητή για να τη "βλέπει" και το global.asax και οι σελίδες μου φυσικά μέσω του "using"?

    Ευχαριστώ προκαταβολικά

  •  02-11-2007, 17:41 36916 σε απάντηση της 36914

    Απ: C# Global Variables

    Υπάρχουν διάφορα σημεία σε ένα ASP.NET app που μπορείς να σώσεις "global" πράγματα - ανάλογα βέβαια με το πόσο  "global" εννοείς.

    • Μπορείς να σώσεις στο Application (HttpContext.Current.Application). Ότι σώσεις εκεί φαίνεται απο όλες τις σελίδες, για όλους τους χρήστες, χρησιμοποιώντας κάτι σαν:

                MyObjectType myObj = (MyObjectType)Application["the key I've used to store my object"];

                Αυτό έχει την ιδιομορφία ότι 2 διαφορετικοί, "παράλληλοι" χρήστες, έχουν πρόσβαση στο ίδιο instance του αντικειμένου σου. Ότι αλλαγές κάνει ο ένας, τις βλέπουν όλοι.

    • Με τον ίδιο ακριβώς τρόπο, μπορείς και να σώζεις στο Session, όπου κάθε χρήστης παίρνει το δικό του instance, αλλά φορτώνεις το Session του κάθε χρήστη, και κατα συνέπεια τη μνήμη του server.
    • Με τον ίδιο τρόπο όμως, μπορείς να σώζεις στο HttpContext.Current.Items όπου ότι βάλεις μέσα είναι διαθέσιμο στην τρέχουσα σελίδα, και μόλις εκτελεστεί το request, σβήνεται απο τη μνήμη.
    Προσωπικά προτιμώ τον τρίτο τρόπο αν θέλω να έχει διαφορετικό instance ο κάθε χρήστης.



    Angel
    O:]
  •  02-11-2007, 19:05 36919 σε απάντηση της 36916

    Απ: C# Global Variables

    Να ρωτήσω γιατί θέλεις να έχεις μία global μεταβλητή? Οι global μεταβλητές συνήθως δημιουργούν προβλήματα, και σε περιβάλλον Web μπορεί να δημιουργήσουν αρκετούς μπελάδες. Σκέψου ότι μία εφαρμογή web την χρησιμοποιούν ταυτόχρονα πολλοί χρήστες, και μπορεί να εκτελείται σε φάρμα από πολλούς servers. Κατά συνέπεια η πρόσβαση σε "global" μεταβλητές μπορεί να απαιτεί συγχρονισμό (αν αποθηκευθεί στο Application) ή πρόσβαση σε κάποια βάση (αν αποθηκευθεί στο Session). Με άλλα λόγια, καθυστέρηση.

    Αναφέρεις ότι θέλεις να αποθηκεύσεις κάποια κλάση σε global μεταβλητή. Τί ακριβώς προσπαθείς να πετύχεις? Να αποθηκεύσεις δεδομένα? Να έχεις ένα μόνο αντικείμενο το οποίο θα παρέχει κάποιες μεθόδους? Κάτι άλλο? Υπάρχουν διάφοροι μηχανισμοί στη ASP.NET οι οποίοι μπορούν να τα κάνουν όλα αυτά χωρίς να δημιουργούν προβλήματα. Πες μας καλύτερα τί θέλεις να κάνεις.


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  03-11-2007, 01:40 36927 σε απάντηση της 36916

    Απ: C# Global Variables

    Να προσθέσω στο Post του anjelinio ότι μπορείς να χρησιμοποιήσεις και κάποια database για να έχεις αποθηκευμένο κάτι και να μπορείς να το βλέπεις globally, από όλες τις σελίδες σου.
    Dimitris-Ilias Gkanatsios
    Developer Evangelist, Microsoft Hellas

    My Blog
    StudentGuru
    Twitter
    Facebook
  •  05-11-2007, 15:09 36957 σε απάντηση της 36919

    Απ: C# Global Variables

    Ας υποθέσουμε οτι το πράσινο χρώμα που έχω βαλει στις 40 σελίδες της εφαρμογής μου δεν αρέσει στον πελάτη και θέλει να το αλλάξει σε κόκκινο. Θα ήταν βολικό να πάω να αλλάζω σε καθε μία σελίδα ξεχωριστά το χρώμα, ή οταν φτιάχνω την καθε μία στο PageLoad να αναθέσω το χρώμα φόντου από μία "Global" μεταβλητή την οποία όποτε θέλω να μπορώ να αλλάξω εύκολα?

  •  05-11-2007, 15:12 36958 σε απάντηση της 36916

    Απ: C# Global Variables

    Ευχαριστώ πολύ για την απάντηση.....

    Καθότι είμαι ακόμα κομματάκι άσχετος με τη σύνταξη της c# σε ποιό ακριβώς σημείο θα μπορούσα να κάνω αυτό τον ορισμό. Όπου και αν πρασπάθησα ο compiler μου λέει ότι ¨"δεν είναι δεκτός ο ορισμός σε αυτό το σημείο"΄.

  •  05-11-2007, 15:20 36959 σε απάντηση της 36927

    Απ: C# Global Variables

    Δεν είναι και πολύ καλό για την απόδοση της εφαρμογής κάθε φορά που χρειάζομαι το παραμικρό να τρέχω στη βάση. Πολλά πράγματα καλύτερο να κρατιωνται στη μνήμη ειδικά άν αλάζουν κάθε Αγίου Σεραφείμ ανήμερα....
  •  05-11-2007, 16:57 36965 σε απάντηση της 36959

    Απ: C# Global Variables

    Αν το θέμα σου έχει να κάνει με UI, χρώματα κτλ, καλό θα είναι να κοιτάξεις το support του ASP.NET για skins, και λίγο css. Σε καμμία περίπτωση μη βαρύνεις την εφαρμογή σου τόσο στη βάση όσο και στη μνήμη αν μιλάμε για κάτι τέτοιο.

    Angel
    O:]
  •  05-11-2007, 17:23 36968 σε απάντηση της 36965

    Απ: C# Global Variables

    φίλε anjelino θα συμφωνήσω μαζί σου ότι στην περιπτωση του χρωματος φοτντου καλύτερο είναι να χρησιμοποιηθεί το CSS. Κακό παράδειγμα από μέρους μου. Ο στόχος μου είναι να φτίαξω καταχώρηση παραστατικών Αποθήκης (μία απλή για αρχη). Εκεί γιά παράδειγμά η αρίθμηση που πρεπει να δώσω το Παραστατικό έχει να κάνει με το Χρήστη τη Σειρά του παραστατικού την αιτία κίνησης (Πράξη) την αποθήκη και άλλες παραμέτρους που αφορούν το χρήστη. Το να γράψω κώδικά και SQL είναι δεδομένο (όπως έχω κάνει ήδη στη Delphi) για να δωσω τελικα αρίθμηση.  

    Η καλύτερη ίσως λύση είναι να το φτιάξω Wεb Service αλλα μιάς και είμαι σε κατάστηαση "μαθητείας" στο VWD θα ήθελα να ξέρω πώς γίνεται καί με απευθείας κώδικα. Γι αυτή μίλησα συγκεκριμένα για μεταβλητή τύπου μιάς κλάσης που θα φιλοξενει όλες αυτές τις ρουτίνες.

     

    Ευχαριστώ για την υπομονή.....

  •  05-11-2007, 18:18 36969 σε απάντηση της 36968

    Απ: C# Global Variables

    Τότε σαν συμβιβασμό μεταξύ μνήμης και βάσης ... θα σου έλεγα να κοιτάξεις τα SQL Cache Dependencies του ASP.NET 2.0, ίσως σε κάποιο συνδιασμό με ένα object στη μνήμη ( ή στην cache ... ).

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

    Angel
    O:]
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems