.NET
Colin Fahey
1. Ορισμός των .NET
Ο όρος αναφέρεται στην ".NET" μετά τη συλλογή των τεχνολογιών:
(1) Framework Class Library (FCL)
(2) Intermediate Language (IL)
(3) Common Language Runtime (CLR)
1.1 Framework Class Library (FCL)
Η Framework Class Library (FCL) είναι ένα εκτεταμένο σύνολο των μαθητών για να υποστηρίξει:
* Δοχεία (Array, String, List, ...)
* Πολυνηματικό (threads, thread pools)
* Δικτύωσης (πρίζες, τα πρωτόκολλα, τους πελάτες, τους διακομιστές)
* Αρχείο εργασιών
* Ροές δεδομένων
* Μεταβλητών (regular expressions, XML χειρισμό)
* Μαθηματικών πράξεων
* Εξαίρεση το χειρισμό
* Γλωσσικών χαρακτηριστικών (προβληματισμού, στοίβα ίχνος, δυναμικό κώδικα)
Η Framework Class Library (FCL) υλοποιείται για πολλές διαφορετικές πλατφόρμες ( Windows, Linux, MacOS, ... ).
Έτσι, ένα ενιαίο πρόγραμμα το οποίο χρησιμοποιεί το Framework Class Library (FCL) μπορεί να αναπτυχθεί χωρίς σημαντική γνώση των διαφορών μεταξύ των στόχων πλατφόρμες.
Η Framework Class Library (FCL) περιέχει χρήσιμα υποδείγματα των θεμελιωδών εννοιών της επιστήμης των υπολογιστών (όπως το "νήμα, υποδοχή, ρεύμα" κλπ).
Υπό μια έννοια, η Framework Class Library (FCL) δίνει κάθε λειτουργικό σύστημα που υποστηρίζεται μια σύγχρονη, υψηλού επιπέδου, συνεπή διασύνδεση προγραμματισμού.
Η Framework Class Library (FCL) είναι μία από τις πλέον προηγμένες, πλήρεις, ομοιόμορφα σχεδιασμένη, καλά τεκμηριωμένες συλλογές των λειτουργιών και των τύπων δεδομένων που διατίθενται στους προγραμματιστές.
Δυστυχώς, οι ακόλουθες πτυχές πολυμέσων δεν είναι μέρος της Framework Class Library (FCL): ηχητική καταγραφή, αναπαραγωγή ήχου, βίντεο, αναπαραγωγή βίντεο, 3D λιώσιμο, joystick εισροών, ( CD/DVD, ... ) συσκευή ελέγχου, κ.λπ.
Microsoft έχει .NET έκδοση του DirectX βιβλιοθήκες για τους Windows λειτουργικό σύστημα.
Υπάρχουν C# περιτυλίγματος για OpenGL, OpenAL, GLUT, SDL, κτλ, αλλά αυτό δεν είναι πολύ βολική, όπως έχοντας ως τέτοιες λειτουργίες πολυμέσων να συμπεριληφθεί στον πυρήνα Framework Class Library (FCL) και περιλαμβάνεται στον τελικό χρήστη "run-time" βιβλιοθήκες.
Ένα από τα προβλήματα των αναπτυσσόμενων προγράμματα που χρησιμοποιούν οι βιβλιοθήκες, είναι ότι η προβλεπόμενη σειρά των τελικών χρηστών θα απαιτήσει στήριξη για τις επιλεγμένες βιβλιοθήκες.
Εάν δεν είναι βολικό να κατεβάσετε και να εγκαταστήσετε τα απαραίτητα βιβλιοθήκες, ο τελικός χρήστης μπορεί να επιλέξει να μην χρησιμοποιήσετε ένα πρόγραμμα που απαιτούν αυτές τις βιβλιοθήκες.
Ένας τελικός χρήστης μπορεί επίσης να είναι απρόθυμοι να περιμένουν για μια βιβλιοθήκη για να κατεβάσετε από μια ηλεκτρονική τοποθεσία.
Εάν ένα πρόγραμμα ανάπτυξης απαιτεί ένα τελικό χρήστη να βρει, να αποκτήσουν, και την εγκατάσταση των βιβλιοθηκών, όλα χωρίς βοήθεια από ένα συγκεκριμένο πρόγραμμα, τότε ο τελικός χρήστης μπορεί να επιλέξει να μην χρησιμοποιεί το πρόγραμμα.
Για παράδειγμα, πολλά έργα ανοικτού κώδικα απαιτούν οι τελικοί χρήστες να βρίσκουν, κατεβάσετε και να εγκαταστήσετε, πολλές διαφορετικές βιβλιοθήκες από άλλα έργα ανοικτού κώδικα (παραδείγματα: openssl, zlib, libpng, libjpg, glut, ...), η οποία είναι χρονοβόρα καταναλώνουν, περίπλοκο, απογοητευτικό, και θα μπορούσε να οδηγήσει σε τελικούς χρήστες στην επιλογή της αναζήτησης εναλλακτικών προϊόντων ή των προγραμμάτων.
Η υπηρεσία "Windows Update" προφανώς βοηθά να αναπτύξετε 1.1 έκδοση του .NET run-time βιβλιοθήκες να Windows χρήστες.
Αυτές οι βιβλιοθήκες χρόνου εκτέλεσης περιλαμβάνονται Windows XP με το λειτουργικό σύστημα.
Ως εκ τούτου, δημιουργώντας Windows προγράμματα που απαιτούν .NET 1.1 φαίνεται απολύτως εύλογη.
Επίσης, οι βιβλιοθήκες χρόνου εκτέλεσης για Microsoft's υλοποιήσεις του .NET Framework Class Library (FCL) μπορεί να αναδιανεμηθεί ελεύθερα, έτσι ώστε οι προγραμματιστές μπορεί να παράσχει αυτές τις βιβλιοθήκες για τους τελικούς χρήστες που δεν διαθέτουν ήδη οι βιβλιοθήκες.
Το λειτουργικό σύστημα Windows Vista πλοίων με τα .NET 3.0 βιβλιοθήκες χρόνου εκτέλεσης (ένας συνδυασμός και των .NET Framework Class Libraries και αρκετές νέες βιβλιοθήκες, όπως η "Windows Presentation Foundation" (WPF)).
Ως εκ τούτου, αναπτύσσοντας .NET 2.0 και .NET 3.0 προγράμματα για Windows Vista δεν απαιτεί την εγκαταστάτες για την .NET run-time βιβλιοθήκες.
1.2 Intermediate Language (IL)
Η Intermediate Language (IL) είναι ένα μικρό σύνολο απλών, επεξεργαστή-ανεξάρτητο, λειτουργικό σύστημα, ανεξάρτητα από οδηγίες που αρκούν για να εκφράσουν πλήρως τις δομές δεδομένων και των λειτουργιών των πολλών διαφορετικών υψηλού επιπέδου γλώσσες προγραμματισμού ( C++, C#, F#, Visual Basic, Java, Ocaml, ... ).
Πηγαίο κώδικα γραμμένο σε μια υψηλού επιπέδου γλώσσα που μπορεί να συγκεντρωθεί σε ένα αντίστοιχο "Intermediate Language" μορφή.
"Intermediate Language" κώδικα σε μια μορφή μπορεί εύκολα να συνδυαστεί με άλλο κωδικό σε μορφή "Intermediate Language".
Ένα πρόγραμμα ηλεκτρονικού υπολογιστή (που ονομάζονται επίσης "λογισμικό)" μπορεί να περιλαμβάνει τον πηγαίο κώδικα γραμμένο σε πολλές διαφορετικές γλώσσες υψηλού επιπέδου (π.χ., C#, C++, και Visual Basic).
Όλα πηγαίος κώδικας είναι δυνατόν να καταρτισθεί (που μετατρέπεται) σε μορφή "Intermediate Language" να επιτρέπουν την εύκολη συνδυασμό με άλλους μεταγλωττισμένο κώδικα.
Προγράμματα σε "Intermediate Language" μορφή είναι συνήθως μετατρέπονται σε μηχανές-συγκεκριμένες οδηγίες (π.χ. οδηγίες CPU) λίγο πριν από την εκτέλεση (π.χ., "Just-In-Time" (JIT) μετατροπή των IL να CPU οδηγίες).
Όμως, ένα πρόγραμμα μπορεί επίσης να εκτελεστεί στο πλαίσιο μιας Virtual Machine (VM) έχει ως σκοπό να ερμηνεύσει Intermediate Language (IL) οδηγίες.
Κωδικός γραμμένα σε διάφορες γλώσσες υψηλού επιπέδου ( C#, F#, Ocaml, C++, Visual Basic, ... ), μπορεί να συγκεντρωθεί για να Intermediate Language (IL) μορφή με τη χρήση κατάλληλης compiler για οποιαδήποτε υποστηριζόμενη πλατφόρμα ( Windows, Linux, MacOS X, ... ), και το αρχείο που προκύπτει, με ενσωματωμένες Intermediate Language (IL) κώδικα, είναι πλατφόρμα-ανεξάρτητη και μπορεί να εκτελεστεί σε οποιαδήποτε πλατφόρμα που έχει εφαρμογή του .NET Common Language Runtime (CLR).
Η Intermediate Language (IL) κώδικα που δημιουργείται από το μεταγλωττιστή είναι ουσιαστικά ανεξάρτητη από την πλατφόρμα με την οποία ο compiler εκτελέστηκε.
1.3 Common Language Runtime (CLR)
Η Common Language Runtime (CLR) είναι ο μηχανισμός που ευθύνεται για την εκτέλεση κώδικα που υποβλήθηκαν στο Intermediate Language (IL) μορφή.
Η Common Language Runtime (CLR) προσφέρει διάφορες υπηρεσίες.
Η Common Language Runtime (CLR) μπορούν να μετατρέψουν Intermediate Language (IL) κώδικα με τις οδηγίες που είναι ιθαγενή στην πλατφόρμα (π.χ., CPU οδηγίες).
Η μετατροπή από το Intermediate Language (IL) σε συγκεκριμένη πλατφόρμα (π.χ., CPU ειδικά) τις οδηγίες μπορεί να συμβεί πριν από κάθε εκτέλεση (δηλαδή, ένα "Ahead-Of-Time" (AOT) μετατροπή), ή μπορεί να γίνει σταδιακά, όπως το πρόγραμμα εκτελεί (δηλαδή, "Just-In-Time" (JIT) μετατροπής) .
Η Just-In-Time (JIT) μετατροπής μπορούν να χρησιμοποιούν τις στατιστικές σχετικά με το πρόγραμμα εξελίσσεται η εκτέλεση δυναμικά να βελτιστοποιήσετε την μετατροπή κώδικα (π.χ.: εντοπισμός χρησιμοποιούνται συχνά βρόχους και υποκαταστημάτων, και βελτιστοποίηση τους, σύμφωνα με παρατηρηθεί η συμπεριφορά (η οποία εξαρτάται από τα τρέχοντα στοιχεία και γεγονότα)).
Η Common Language Runtime (CLR) διαχειρίζεται τη μνήμη κατανέμεται εξ ονόματος του προγράμματος.
Ως εκ τούτου, η CLR διασφαλίζει ότι το πρόγραμμα δεν παραλείπουν να χορηγηθεί πρόσβαση μνήμης, ενώ η αναφορά σε τέτοιου είδους μνήμη παραμένει, και εξασφαλίζει ότι οι εκχωρήσεις μνήμης έχουν ακυρωθεί, καθώς και ότι η μνήμη είναι διαθέσιμα και πάλι για τις μελλοντικές χορηγήσεις μετά από το πρόγραμμα διαθέτει όλα τα στοιχεία αυτών των χορηγήσεων .
Η Common Language Runtime (CLR) ανιχνεύει όταν το πρόγραμμα δεν έχει πλέον μια αναφορά σε μια μνήμη κατανομή, κατανομή και η μνήμη είναι χαρακτηριστική για deallocation.
Η Common Language Runtime (CLR) χρησιμοποιεί κάθε μιας ποικιλίας αλγορίθμων "της συλλογής" των "απορριμμάτων" (π.χ.: "mark-and-sweep") να εντοπίσει και να διεκδικήσει εκ νέου μπλοκ μνήμης δεν είναι πλέον προσβάσιμα από ένα πρόγραμμα.
Το πρόγραμμα χειρίζεται Common Language Runtime (CLR) εξαιρέσεις.
Η Common Language Runtime (CLR) εφαρμόζει πολιτικές ασφάλειας.
Η Common Language Runtime (CLR) χρησιμοποιεί το μηχανισμό "P/Invoke" να φορτώσει την πλατφόρμα ειδικών βιβλιοθηκών και επικαλούνται (πρόσκληση) λειτουργεί στο πλαίσιο αυτών των βιβλιοθηκών.
2. .NET ( FCL, IL, CLR ) υλοποιήσεις από Microsoft
2.1 Εισαγωγή
Η .NET παραδειγματική ( FCL, IL, CLR ) έχει υλοποιηθεί από Microsoft.
Η τελευταία έκδοση, "3.0", κυκλοφόρησε το 2006.10.
.NET 3.0 απαρτίζεται από τους .NET 2.0 Framework Class Libraries και αρκετές νέες βιβλιοθήκες, όπως η "Windows Presentation Foundation" (WPF) που συνδέονται με την "Silverlight" (πρώην WPF/E, πρώην Sparkle, ...) browser plugin για Firefox και Internet Explorer.
Microsoft διχάζει την .NET 2.0 λογισμικού σε δύο διαφορετικές συσκευασίες:
(1) .NET Framework Version 2.0 Redistributable Package
Το πακέτο αναδιανομής που απαιτούνται από τους τελικούς χρήστες να εκτελούν προγράμματα που κατασκευάζονται για τη .NET παραδειγματική. Αυτό το πακέτο θα πρέπει να εγκατασταθεί από προγραμματιστές πριν από την εγκατάσταση και τη χρήση του .NET Software Development Kit (SDK) αναφέρονται παρακάτω.
(2) .NET Framework Version 2.0 Software Development Kit
Το κιτ ανάπτυξης λογισμικού (SDK) απαιτείται από προγραμματιστές να καταρτίζουν C# πηγαίο κώδικα για να Intermediate Language (IL) αρχεία προγράμματος.
Το πακέτο αυτό περιέχει διάφορα εργαλεία ανάπτυξης και τεκμηρίωση.
2.2 .NET Framework Version 2.0 Redistributable Package
Το πακέτο αναδιανομής που απαιτούνται από τους τελικούς χρήστες να εκτελούν προγράμματα που κατασκευάζονται για τη .NET παραδειγματική.
Αυτό το πακέτο θα πρέπει να εγκατασταθεί από προγραμματιστές πριν από την εγκατάσταση και τη χρήση του .NET Software Development Kit (SDK) αναφέρονται παρακάτω.
Η ακόλουθη σελίδα του Internet είναι το κύριο .NET σελίδα λήψης:
Η ενότητα που ονομάζεται ".NET Framework Version 2.0 Redistributable Package" έχει συνδέσμους για τρεις πλατφόρμες υλικού: "Download x86 version", "Download x64 version", "Download IA64 version".
Για παράδειγμα, μετά τη σύνδεση "Download x86 version", οδηγεί σε μια σελίδα με τίτλο "Microsoft .NET Framework Version 2.0 Redistributable Package (x86)"
(Όνομα αρχείου: dotnetfx.exe? Έκδοση: RC1? Ημερομηνία Δημοσίευσης: 3/22/2006? Γλώσσα: Αγγλικά? Download Μέγεθος: 22.4 MB)
Τοπικά αποθηκευμένη έκδοση (μόνο για αναφορά? Ενδεχομένως απαρχαιωμένες):
(Το όνομα του αρχείου έχει αλλάξει εδώ από το αρχικό όνομα του αρχείου της "dotnetfx.exe" να αποφευχθεί η σύγχυση με την έκδοση 1.1 installer που ονομάζονται επίσης "dotnetfx.exe".)
2.3 .NET Framework Version 2.0 Software Development Kit (SDK)
Το κιτ ανάπτυξης λογισμικού (SDK) απαιτείται από προγραμματιστές να καταρτίζουν C# πηγαίο κώδικα για να Intermediate Language (IL) αρχεία προγράμματος.
Το πακέτο αυτό περιέχει διάφορα εργαλεία ανάπτυξης και τεκμηρίωση.
Η ακόλουθη σελίδα του Internet είναι το κύριο .NET σελίδα λήψης:
Η ενότητα που ονομάζεται ".NET Framework Version 2.0 Software Development Kit" έχει συνδέσμους για τρεις πλατφόρμες υλικού: "Download x86 version", "Download x64 version", "Download IA64 version".
Για παράδειγμα, μετά τη σύνδεση "Download x86 version", οδηγεί σε μια σελίδα με τίτλο ".NET Framework 2.0 Software Development Kit (SDK) (x86)"
(Όνομα αρχείου: setup.exe? Έκδοση: 2.0? Ημερομηνία Δημοσίευσης: 11/7/2005? Γλώσσα: Αγγλικά? Download Μέγεθος: 354.0 MB)
Τοπικά αποθηκευμένη έκδοση (μόνο για αναφορά? Ενδεχομένως απαρχαιωμένες):
(Το όνομα του αρχείου έχει αλλάξει εδώ από το αρχικό όνομα του αρχείου της "setup.exe" να αποφευχθεί η σύγχυση με όλα τα άλλα αρχεία εγκατάστασης ονομάζεται "setup.exe".)
3. Microsoft Visual C#: Integrated Development Environment (IDE) πρόγραμμα
3.1 Εισαγωγή
Μια Integrated Development Environment (IDE) πρόγραμμα επιτρέπει προγραμματιστής για να επεξεργαστείτε τον πηγαίο κώδικα και να εκτελούν διάφορα εργαλεία (παραδείγματα: compiler, εντοπισμού σφαλμάτων, ...) στο πλαίσιο μιας ενιαίας, ενοποιητικό πρόγραμμα, το οποίο συμπληρώνεται με χρήσιμες οπτικές ενδείξεις και τους ελέγχους.
"Microsoft Visual C# 2005 Express Edition" είναι ένα μη-κόστους (δεν απαιτείται πληρωμή) IDE διαθέσιμη για λήψη από Microsoft.
Για μη ανάπτυξη βάσεων δεδομένων, είναι σχεδόν αδύνατο να διακρίνει αυτό το προϊόν δεν κόστους από τη λιανική ομόλογό του, "Microsoft Visual C# 2005".
I χρησιμοποιούν συχνά και τα δύο προϊόντα, επαγγελματικά και για αναψυχή, και δεν έχω ακόμη παρατηρήσει καμία πρακτική διαφορά μεταξύ των προϊόντων.
3.2 Επίσημη σύνδεσμοι
Το διαδικτυακό τόπο της κύριας σελίδας:
Η σελίδα που αφορούν "Visual C# Express Edition":
Κάντε κλικ στο κουμπί "Download Now" στη δεξιά πλευρά της σελίδας για να επιλέξετε ένα download επιλογή.
(Μια μέθοδος είναι να δρομολογήσει ένα πρόγραμμα εγκατάστασης που θα κατεβάσετε αρχεία από Microsoft κατά τη διάρκεια κάθε εγκατάσταση.
Μια δεύτερη μέθοδος είναι να κατεβάσετε ένα πλήρες CD-ROM "ISO" εικόνας, η οποία επιτρέπει την μελλοντική εγκατάσταση χωρίς σύνδεση.
Η ISO εικόνας, "VCS.iso" (451,837,952 bytes? CRC 55884F2C) για 32-bit x86 αγγλικά, μπορούν να καούν σε ένα CD-ROM χρησιμοποιώντας "Nero 7 Ultra", για παράδειγμα. )
4. .NET ( FCL, IL, CLR ) εφαρμογή από την Mono Project
4.1 Εισαγωγή
Η .NET παραδειγματική ( FCL, IL, CLR ) έχει υλοποιηθεί από τους συμμετέχοντες σε μια ομάδα γνωστή ως Mono Project.
4.2 Επίσημη σύνδεσμοι
Project site:
Λογισμικό σελίδα λήψης:
4.3 Τοπικά αποθηκευμένη έκδοση
Τοπικά αποθηκευμένη έκδοση του εγκαταστάτη (μόνο για αναφορά? Ενδεχομένως απαρχαιωμένες):
4.4 .NET 2.0 ανάπτυξη με Mono
Η "mcs" compiler, και την τεκμηρίωση, το Νοέμβριο του 2006, ως επί το πλείστον αφορούν C# 1.0 και FCL 1.1.
Ωστόσο, το "mcs" compiler είναι σε θέση να καταρτίζουν C# 2.0 κωδικός που δεν περιέχουν γενικά ή γενική βάση τις δυνατότητες, αλλά περιορίζει το API να 1.0.
Για να γίνει πλήρης C# 2.0 ανάπτυξη, με FCL 2.0 βιβλιοθήκες, η χρήση "gmcs" compiler.
Ανατρέξτε στην ακόλουθη σελίδα στο site Mono:
5. SharpDevelop: μια open-source Integrated Development Environment (IDE) πρόγραμμα
5.1 Εισαγωγή
Μια Integrated Development Environment (IDE) πρόγραμμα επιτρέπει σε προγραμματιστές να επεξεργαστείτε τον πηγαίο κώδικα και να εκτελούν διάφορα εργαλεία (παραδείγματα: compiler, εντοπισμού σφαλμάτων, ...) στο πλαίσιο μιας ενιαίας, ενοποιητικό πρόγραμμα, το οποίο συμπληρώνεται με χρήσιμες οπτικές ενδείξεις και τους ελέγχους.
SharpDevelop είναι μια εξαιρετική, open-source IDE πρόγραμμα για C# / .NET ανάπτυξη.
Αυτό IDE μοιάζει η Microsoft Visual C# IDE, και, από ορισμένες απόψεις, το SharpDevelop IDE έχει βελτιωθεί μετά την Microsoft προϊόν.
Ωστόσο, Microsoft Visual C# έχει κάποια χαρακτηριστικά (π.χ.: debugging) SharpDevelop ότι το πρόγραμμα δεν έχουν (κατά τη στιγμή της παρούσας γραπτώς).
5.2 Επίσημη σύνδεσμοι
Η απλή κύρια σελίδα του Internet site:
Η σελίδα που αφορούν "The Open Source Development Environment for .NET":
Η σελίδα λήψης, το οποίο έχει λεπτομέρειες σχετικά με την 1.1 και 2.0 εκδόσεις του SharpDevelop:
5.3 Τοπικά αποθηκευμένη έκδοση
Τοπικά αποθηκευμένη έκδοση του εγκαταστάτη (μόνο για αναφορά? Ενδεχομένως απαρχαιωμένες):
6. Χρήσιμα C# / .NET / IL εργαλεία
6.1 SciTech Software ".NET Memory Profiler"
Αυτό δείχνει profiler μνήμη των χορηγήσεων, καθώς και άλλων πόρων, ότι καταρτίζονται .NET πρόγραμμα ή συναρμολόγηση, ενώ καθιστά εκτέλεσης.
Το πραγματικό χρόνο γράφημα δίνει τη δυνατότητα ενός ατόμου να δει με λεπτομέρεια, πώς τις δράσεις του προγράμματος (όπως οι δράσεις που ενεργοποιούνται από το χρήστη εισροών ή άλλες εκδηλώσεις) επηρεάζει την κατανομή μνήμης και της συλλογής απορριμμάτων.
Το πραγματικό χρόνο πίνακα με σκοπό δίνει τη δυνατότητα στο άτομο να μάθει λεπτομέρειες σχετικά με εκχωρήσεις μνήμης.
Αυτό profiler άμεσα και δραστικά, αποκάλυψε σπάταλη χρήση μνήμης σε πραγματικό χρόνο Direct3D πρόγραμμα μου είχε αναπτύξει.
Ένας τρόπος διεξαγωγής των ανοδικών ράμπες και ξαφνικές σταγόνες (λόγω "συλλογής απορριμμάτων)" στη χρήση μνήμης γραφικών παραστάσεων συνδυάζεται άψογα με την περιοδική, πολύ σύντομη-παύσεις στην 3D σχεδίαση μου πρόγραμμα.
Το profiler επέτρεψε μου να ανακαλύψουν ότι η συχνή χορήγηση προσωρινής αντικείμενα ήταν συσσωρευτεί πολλή μνήμη, προκαλώντας συχνά τη συλλογή απορριμμάτων, και λαμβάνοντας αρκετό χρόνο για κάθε συλλογή απορριμμάτων να προκαλέσει κάποιες περιόδους κατάρτισης πρέπει να χαθεί.
Το profiler του σε πραγματικό χρόνο πίνακα των χορηγούμενων τύπων αντικειμένου αποκάλυψε τα είδη των αντικειμένων, τα οποία καταναλώνονται τα πιο μνήμης, και τα οποία καταναλώνονται χορηγήσεων μνήμης στο υψηλότερο επιτόκιο (byte ανά δευτερόλεπτο), και η οποία χορηγήσεων είχε το υψηλότερο ποσοστό διάθεσης.
Μελετώντας τα γραφήματα σε πραγματικό χρόνο, καθώς και σε πραγματικό χρόνο πίνακες, επέτρεψε μου να επικεντρωθεί στη μελέτη του τρόπου με τον οποίο ορισμένοι τύποι δεδομένων είχαν χρησιμοποιηθεί κατά τη δική μου κώδικα.
Τροποποίηση κώδικα για την αποφυγή συχνών κατανομές των προσωρινών αντικειμένων μπορεί να μειώσει σημαντικά το συνολικό ποσοστό της κατανομής της μνήμης και της διάθεσης, και ως εκ τούτου μπορεί να μειώσει τη συχνότητα συλλογής των απορριμμάτων ενεργοποίησης.
("Bytes/sec" πιστεύω είναι ένα πολύ αποκαλυπτικό για το στατιστικό πραγματικό χρόνο χρήσης της μνήμης, πέραν "Live instances".
) Βλέποντας όλα αυτά τα οποία ενημερώνονται πολύ γρήγορα, με τη μορφή πίνακα, και είναι σε θέση να επιλέγουν τον τρόπο με τον οποίο οι σειρές είναι η διαλογή, τη διαλογή και η παράμετρος αλλάζει ανά πάσα στιγμή, να κάνει την εμπειρία των σπουδών σε πραγματικό χρόνο το πρόγραμμα άσκησης και πολύ κατατοπιστική.
Memory κατανομή απαντήσεων στην αλληλεπίδραση του χρήστη με το τρέχον πρόγραμμα μπορεί να μελετηθεί, και η δοκιμή μπορεί να προσαρμοστεί γρήγορα στην ανατροφοδότηση για να περιορίσετε το πιο ενδιαφέρουσα πτυχή.
(Για παράδειγμα, το 2006 July εκδοχή είχε τα εξής χαρακτηριστικά: έκδοση 2.6.89? 4.3 MB? USA $127.00? Download 14 ημερών-οριακή εκδοχή, δεν το κόστος, για αξιολόγηση.)
6.2 FxCop: .NET κωδικό αναλυτής / κριτικός
FxCop αναλύει μια καταρτίζονται .NET πρόγραμμα (ή συγκεντρωθεί συναρμολόγηση) και παράγει μια έκθεση που θα απαριθμεί τα πιθανά προβλήματα με τον αρχικό πηγαίο κώδικα.
Πιθανά προβλήματα απόδοσης και τα προβλήματα ασφαλείας που εντοπίστηκαν.
Πιθανές κωδικοποίησης σύμβαση παραβιάσεις εντοπίζονται.
FxCop δεν απαιτούν πρόσβαση στο αρχικό πηγαίο κώδικα για να εκτελέσουν την ανάλυση.
Μόνο οι καταρτιζόμενες .NET πρόγραμμα (το οποίο περιέχει IL).
Ωστόσο, η έκθεση προσφέρει FxCop συνδέσμους προς συγκεκριμένους αριθμούς στη γραμμή του αρχικού κώδικα πηγής.
Εάν η Microsoft Visual C# 2005 IDE είναι ενεργός, πατώντας την υπερσύνδεση στο FxCop έκθεση θα προκαλέσει την IDE να στημόνι στο σχετικό αρχείο προέλευσης και αριθμό γραμμής.
FxCop έχει, κατά τη γνώμη μου, μία μάλλον δύσκολη τρόπος ενσωμάτωσης με την Microsoft Visual C# 2005 IDE.
Ωστόσο, μόλις αυτή συσταθεί, FxCop παράγει μια πολύ ενδιαφέρουσα και πιθανώς πολύτιμη έκθεσή του.
Η έκθεση περιέχει λεπτομερείς οδηγίες για το πώς να βελτιώσουμε το αρχικό πηγαίο κώδικα.
Νομίζω ότι είναι χρήσιμο να αναλύουμε ένα πρόγραμμα χρησιμοποιώντας FxCop σε περιοδική βάση.
Δεν θα εκπλαγείτε αν κάποια σχέδια ανάπτυξης λογισμικού ή επιχειρήσεις που απαιτούνται όλο τον κώδικα που γράφτηκε από προγραμματιστές σε αποδόσεις δεν προειδοποιήσεις ή επικρίσεις από FxCop.
Κανόνες μπορεί να προστεθεί ή να αφαιρεθεί από το FxCop βάσης δεδομένων, ανάλογα με τις ανάγκες.
FxCop είναι ένα open-source, δωρεάν πρόγραμμα.
6.3 "Reflector for .NET": decompiler / αναλυτής
Από Lutz Roeder's Internet site:
"Reflector is the class browser, explorer, analyzer and documentation viewer for .NET. Reflector allows to easily view, navigate, search, decompile and analyze .NET assemblies in C#, Visual Basic and IL."
"Reflector" μπορεί να βοηθήσει ένα πρόσωπο που μελετούν τον τρόπο με τον τρίτο μέρος βιβλιοθήκες είναι γραπτές.
Μερικές φορές, θα ήταν πολύ χρήσιμο να γνωρίζουμε ακριβώς πώς μια μέθοδος σε συγκρότημα υλοποιείται.
Αν μια μέθοδος συμπεριφέρεται σε ένα απροσδόκητο ή μυστηριώδη τρόπο, τότε "Reflector" μπορεί να χρησιμοποιηθεί για να δείτε την εφαρμογή του.
Με βλέπω την υλοποίηση, την προγραμματιστής μπορεί να εργαστεί γύρω από τα προβλήματα που προκαλούνται από συγκεκριμένες υλοποιήσεις της βιβλιοθήκης μεθόδους.
Ένας φίλος μου είπε ότι "Reflector" τον βοήθησαν να μάθουν περισσότερα για τη συμπεριφορά των ανεπαρκώς τεκμηριωμένες μεθόδους με τη Microsoft εφαρμογή του Framework Class Libraries (FCL).
"Reflector" μπορούν να είναι χρήσιμες όταν τεκμηρίωση για μια βιβλιοθήκη μέθοδος αποτελείται από λίγες μόνο λέξεις, όπως "καθορίζει την αξία" ή "το πρόγραμμα χειρισμού."
Εάν μια βιβλιοθήκη λειτουργεί επικαλούμενο την αποτυχία για άγνωστο λόγο (όταν το σύνολο των παραμέτρων που φαίνεται να ισχύει), τότε χρησιμοποιώντας "Reflector" να εξετάσουμε την εφαρμογή της βιβλιοθήκης μπορεί να λειτουργήσει αποκαλύψει την αιτία της αποτυχίας.
"Reflector" εκτελεί κάποια "αντίστροφης μηχανικής" του .NET πρόγραμμα ή συναρμολόγηση.
Άλλοι οργανισμοί κοινής ωφελείας, συμπεριλαμβανομένης ενδεχομένως "Reflector" ίδια, μπορεί να αποδώσει τον πηγαίο κώδικα για προγράμματα ή συγκροτήματα κατασκευάζονται με βάση obfuscated πηγαίο κώδικα.
Αυτή είναι προφανώς μια πηγή ανησυχίας για μερικούς προγραμματιστές και τους επενδυτές.
(2006 July: Reflector.zip αυτή έκδοση 4.2.45.0)
7. Internet φόρουμ συζήτησης
Google που ψάχνουν είναι ο καλύτερος τρόπος για να βρείτε απαντήσεις σε συγκεκριμένες ερωτήσεις για οποιοδήποτε θέμα, αλλά οι τοποθεσίες κάτω επανειλημμένα εμφανίζονται στα αποτελέσματα αναζήτησης για C# και .NET ερωτήσεις.
Οι περιοχές που βρίσκονται κάτω από απίθανα για την εξερεύνηση των πολλών δροσερά πράγματα οι άνθρωποι έχουν γίνει με C# και .NET.
"The Code Project" site έχει χιλιάδες ενδιαφέροντα και χρήσιμα άρθρα, για C#, C++, και άλλες γλώσσες προγραμματισμού και παραγωγής.
Η "MSDN Code Gallery" site έχει πολλά ενδιαφέροντα άρθρα και δείγματα κώδικα που σχετίζονται με Microsoft τεχνολογίες.
Άλλους δικτυακούς τόπους που σχετίζονται με C# και .NET:
8. Γενικές σημειώσεις
8.1 Ανεξαρτησία πλατφόρμας
Η Intermediate Language (IL), όπως Java "byte code," είναι ανεξάρτητες πλατφόρμας.
Κάθε .NET συμμορφώνεται compiler θα δημιουργήσει πλατφόρμα ανεξάρτητη Intermediate Language (IL) κωδικό σε μορφή προγραμμάτων ή των συγκροτημάτων.
Προγράμματα συσκευάζονται ως εκτελέσιμα ("*.exe" αρχεία) πρέπει να έχει κάποια πλατφόρμα που εξαρτώνται από κώδικα ειδικά για ένα λειτουργικό σύστημα, με σκοπό τη σωστή ερμηνεία και ξεκίνησε ως εκτελέσιμα προγράμματα στο πλαίσιο του το συγκεκριμένο λειτουργικό σύστημα.
Ωστόσο, τα αυτόχθονα εκτελέσιμο τμήμα του αρχείου του λογισμικού εξυπηρετεί μόνο να κινήσει τη .NET CLR κινητήρα, την υποβολή των IL κώδικα που περιέχεται μέσα στο Λογισμικό του αρχείου προς εκτέλεση από το CLR κινητήρα.
Microsoft προσφέρει μια υλοποίηση του .NET ωφέλειας (compiler, ...), και η εφαρμογή του Framework Class Library (FCL), μόνο για το Windows λειτουργικό σύστημα.
Η Mono Project προσφέρει εφαρμογές των .NET ωφέλειας (compiler, ...), και υλοποιήσεις του Framework Class Library (FCL), για τα ακόλουθα λειτουργικά συστήματα: Windows, Linux, MacOS X, και BSD.
8.2 Ταχύτητα σε σύγκριση με non-CLR C / C++
Η Common Language Runtime (CLR) πτυχή της .NET είναι το πλαίσιο στο οποίο μια C# πρόγραμμα εκτελεί.
Τα "σκουπίδια" CLR εκτελεί προγράμματα "συλλογής" και δίνει τη δυνατότητα να κινήσει "μη διαχειριζόμενων" λειτουργιών σε βιβλιοθήκες (όλες οι βιβλιοθήκες δεν υλοποιούνται στο Intermediate Language (IL)).
Κάθε λειτουργία την κάνει πιο καθαρή από τα μαθηματικά, τα καθαρόαιμα string χειραγώγησης, της μνήμης ή καθαρή αντιγραφή, θα κινήσει τις λειτουργίες σε "μη διαχειριζόμενων" βιβλιοθήκες.
Όλες οι πράξεις αρχείο, socket πράξεις, ενέργειες κατάρτισης, η συμβολή δράσεων (ποντίκι, το πληκτρολόγιο), επιχειρήσεις παραγωγής (κονσόλα), πλατφόρμα νήμα εργασίες, εργασίες ακριβείας με χρονοδιακόπτη, windowing εργασίες, κλπ, θα κινήσει τις λειτουργίες σε "μη διαχειριζόμενων βιβλιοθήκες."
Δυστυχώς, ο μηχανισμός της επικαλούμενη "μη διαχειριζόμενων" λειτουργιών από την CLR απαιτεί σημαντικό χρονικό διάστημα.
Ως εκ τούτου, η συνολική ταχύτητα της εκτέλεσης ενός προγράμματος, στο πλαίσιο της CLR είναι noticably βραδύτερη από ένα πρόγραμμα που μπορεί να επικαλεστεί "μη διαχειριζόμενων" λειτουργιών άμεσα.
Για ορισμένα είδη λογισμικού, η ταχύτητα μπορεί να είναι σημαντική.
Για ορισμένα είδη του λογισμικού, την ταχύτητα μπορούν να κάνουν μια σημαντική διαφορά στην υποκειμενική ή ψυχολογική εμπειρία για ένα άτομο που χρησιμοποιεί το λογισμικό.
Για ορισμένα είδη του λογισμικού, την ταχύτητα μπορούν να κάνουν τη διαφορά μεταξύ επίτευξη ενός στόχου και της αποτυχίας.
Πολυνηματικό, αυξάνοντας CPU ταχύτητες, καθώς και βελτιώσεις στην CLR κώδικα δημιουργίας εγκαταστάσεων, θα συμβάλει στην εκτέλεση λογισμικού, στο πλαίσιο της CLR εκτελέσει γρηγορότερα.
Ωστόσο, κάθε κώδικα που εκτελεί εκτός των CLR, και προβάλλει άμεσα πλατφόρμα βιβλιοθήκες, αναπόφευκτα θα εκτελέσει σημαντικά ταχύτερους ρυθμούς από το λογισμικό που εκτελείται στο πλαίσιο του CLR.
Οι διαβεβαιώσεις που επέφερε το CLR να C# λογισμικού, όπως η ασφάλεια γεφύρωση του χάσματος μεταξύ του διαχειριζόμενου κώδικα και μη διαχειριζόμενων κώδικα, έρχεται με ένα κόστος που είναι απίθανο να μειωθούν.
Ως εκ τούτου, κάθε πρόγραμμα που είναι πολύ πλατφόρμα έντασης (παραδείγματα: 3D προσομοίωση ή παιχνίδι, το αρχείο επεξεργαστή, διακομιστή δικτύου, κτλ) είναι πιθανό να εκτελέσει μια τάξη μεγέθους ταχύτερα από ό, τι έξω από το CLR όταν εκτελεσθεί εντός των CLR.
Η διαφορά είναι τεράστια.
Επίσης, κάθε πρόγραμμα που εκτελεί ένα σημαντικό ποσό του χαμηλού επιπέδου χειραγώγηση των δεδομένων που θα εκτελέσει σημαντικά ταχύτερους ρυθμούς από ό, τι έξω από το CLR εντός της CLR.
Προγράμματα εκτέλεσης στο πλαίσιο της CLR εκτελέσει τόσο γρήγορα ώστε να είναι χρήσιμο για πολλούς πρακτικούς σκοπούς.
Όπως CPU ταχύτητες αυξάνονται, και ως κώδικας λαμβάνει καλύτερα πλεονέκτημα των πολλαπλών CPUs, εκτέλεσης των προγραμμάτων στο πλαίσιο της CLR θα μπορεί να χρησιμοποιείται για περισσότερα καθήκοντα που απαιτούν ένα υψηλό ποσοστό υπολογισμού.
Ωστόσο, στα μέσα της 2008 το CLR δεν είναι ακόμη κατάλληλες για 3D παιχνίδια κάθε φινέτσας, αν δεν ληφθεί πολύ επιθετική προσπάθεια να μειωθεί ο αριθμός των κλήσεων για να λειτουργήσει η βιβλιοθήκη 3D (OpenGL ή Direct3D), ενδεχομένως με τη χρήση εννοιών όπως "shader προγράμματα" και να "εμφανίσετε λίστες?" τίποτα για να μειώσει τον αριθμό των κλήσεων λειτουργίας.