Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

1 Παρουσίαση Παρουσίαση: Κακαλέτρης Γιώργος.NET Framework.

Παρόμοιες παρουσιάσεις


Παρουσίαση με θέμα: "1 Παρουσίαση Παρουσίαση: Κακαλέτρης Γιώργος.NET Framework."— Μεταγράφημα παρουσίασης:

1 1 Παρουσίαση Παρουσίαση: Κακαλέτρης Γιώργος.NET Framework

2 2 Θέματα Τι είναι το.NET Λειτουργία του.NET Εκτελέσιμα.NET OOP σε.NET Εσωτερικά Χαρακτηριστικά

3 3.NET Framework Τι είναι το.NET Framework Μεταγλωττιστές C++, C#, VB, J#, Perl, SmallTalk, Oberon … Περιβάλλον Εκτέλεσης Loader Profiler JIT Compiler Class Libraries Εξωτερικές Υπηρεσίες / Εξυπηρετητές Υλικό Debuggers Verifier Λειτουργικό Σύστημα

4 4 Που και πως «τρέχει» το.NET MS.NET Framework –Σαν πρόσθετο στοιχείο σε: Windows 98/98b/Me/NT4/2000 –Υπάρχει ενσωματωμένο σε Windows XP/2003 MS.NET Framework SDK –Windows NT4/2000/XP/2003 MS Shared Source CLI (Rotor) –FreeBSD –Windows XP/2003 MONO Implementation –Linux SS CLI –Linux ports (Macadamian κλπ)

5 5 Τι προσπαθεί να πετύχει το.NET Βελτιωμένο απλοποιημένο προγραμματιστικό μοντέλο. Βελτίωση των διαδικασιών εγκατάστασης και συντήρησης. «Εξίσωση» γλωσσών προγραμματισμού. Ανεξαρτησία από πλατφόρμα υλικού. Βελτίωση χαρακτηριστικών ασφάλειας εκτελούμενου κώδικα.

6 6 Τυποποίηση του.NET Οκτώβρης 2000 Microsoft + Intel + HP Technical committee TC39 –Technical Group 1 ECMAScript –Technical Group 2 C# –Technical Group 3 CLI –Μορφοποίηση αρχείων (File Format) –Ανοιχτό σύστημα μεταδεδομένων (Metadata System) –Κοινό σύστημα τύπων (Common Type System) –Ενδιάμεση γλώσσα (Intermediate Language) –Πρόσβαση στην υποκείμενη πλατφόρμα (P/Invoke) –Βασική βιβλιοθήκη κλάσεων για τυπικές και μικρές υπολογιστικές μονάδες

7 7 Γλώσσες Προγραμματισμού Υπάρχουν σχεδόν όλες οι γνωστές γλώσσες: –C++ (with Managed Extensions), C#, VB.NET, J#, JavaScript, VBScript, Perl, COBOL, Component Pascal, Oberon, Python, RPG, Scheme, APL, Fortran, Eiffel, Haskell, Mercury, ML, Mondrian Διαφοροποιούνται ως: –Συντακτικό –Χαρακτηριστικά των CLR/CTS/ MSIL που εκθέτουν –Ευκολίες εκμετάλλευσης δυνατοτήτων των CLR/CTS/MSIL –Βασικοί τύποι –Πρόσθετες βιβλιοθήκες κλάσεων –κλπ Ομογενοποιούνται ως προς: –Απλή κληρονομικότητα –Χαρακτηριστικά επαναχρησιμοποίησης συνιστωσών –Συμπεριφορά αντικειμένων –κλπ

8 8 Managed vs Unmanaged Code Unmanaged Code –Τυπικός κώδικας γλώσσας μηχανής (native code) –Εκτός ελέγχου για το.NET runtime –C++, VB6 κλπ Managed Code –Τυπικός κώδικας ενδιάμεσης γλώσσας (IL) –Υπό τον πλήρη έλεγχο του.NET runtime (CLR) –C#, VB.NET, J# κλπ Διαλειτουργικότητα –Managed σε Unmanaged : CLR Hosting. –Unmanaged σε Managed : P/Invoke, COM Interoperability.

9 9 Common Language Runtime (CLR) Το περιβάλλον εκτέλεσης εφαρμογών.NET. Βρίσκεται στο MSCorEE.DLL, MSCorWks/MSCorSvr.DLL Είναι το ανάλογο της JVM Είναι υπεύθυνο για: –Διαχείριση εκτελέσιμου (Application hosting) –Εντοπισμό και φόρτωση συνιστωσών / εφαρμογών –Μεταγλώττιση IL σε CPU native code (JIT compilation) –Επαλήθευση κώδικα (Verification) –Χειρισμό διαδικασιών αποσφαλμάτωσης –Ελέγχους ασφαλείας κώδικα –Συνεργασία με CPU Native Code (P/Invoke) –Χειρισμό exceptions

10 10 Common Type System (CTS) Περιγράφει ιδιότητες και συμπεριφορά των τύπων: –Μέλη τύπων: Πεδία, μέθοδοι, ιδιότητες και γεγονότα. –Κανόνες πρόσβασης μελών: ιδιωτική, προστατευμένη, δημόσια κλπ –Κανόνες και συμπεριφορά κληρονομικότητας –Διάρκεια ζωής αντικειμένων Εξισώνει σε ουσιαστικά θέματα τη συμπεριφορά των γλωσσών. Επιτρέπει τη στενή συνεργασία μεταξύ διαφορετικών γλωσσών.

11 11 Common Language Specification (CLS) Ελάχιστο set δυνατοτήτων και χαρακτηριστικών του CLR/CTS και που πρέπει να υποστηρίζει ένας μεταγλωττιστής. Ένας τύπος που θα πρέπει να χρησιμοποιείται και από άλλες γλώσσες θα πρέπει να περιορίζεται ΜΟΝΟ στο CLS. Οι περιορισμοί αναφέρονται μόνο στα εξαγόμενα στοιχεία ενός assembly. Τυπικές γλώσσες –VB: όλα τα εξαγόμενα είναι CLS compliant. –C#: επιτρέπει μη CLS compliant features. C# VB J# CLS CTS/CLRMSIL

12 12 MSIL Ενδιάμεση γλώσσα (~”OO Assembly”). Stack Based (δεν υπάρχουν καταχωρητές). Εντολές χωρίς τύπους.

13 13 Framework Class Library (FCL) Η βιβλιοθήκη συνιστωσών που συνοδεύει το.NET Framework. Ορίζει τύπους που εκμεταλλεύονται: –.NET compilers –.NET εφαρμογές. –CLR. Επιτρέπει τη δημιουργία των παρακάτω τύπων εφαρμογών: –XML Web Services –Web Forms –Windows Forms –Console Applications –Windows Services –Component libraries Βασικότερο μέρος της κάτω από το System namespace. (MSCorLib.DLL)

14 14 Βασικές Βιβλιοθήκες FCL System: Βασικοί τύποι. System.IO: Χειρισμός αρχείων και γενικά εισόδου/εξόδου System.Data: προσπέλαση βάσεων δεδομένων, OLEdb, ADO, ADO.NET κλπ System.Collections: Ευρετήρια, κατακερματισμένοι πίνακες, συλλογές, ουρές, σωροί κλπ System.Threading: Χειρισμός threads, ενδοεπικοινωνία κλπ System.Reflection: ενδοσκόπηση και δημιουργία κώδικα και εκτελέσιμων. System.Security: Χειρισμός κρυπτογραφίας, ελέγχων ασφαλείας, προσπέλασης σχετικών υπηρεσιών καταλόγου συστήματος κλπ System.Web.Services: Κλάσεις υποστήριξης δημιουργίας webservices. System.Web.Forms: Κλάσεις υποστήριξης δημιουργίας διαδικτυακών εφαρμογών. System.Windows.Forms: Κλάσεις υποστήριξης δημιουργίας τυπικών εφαρμογών Windows. System.Runtime.InteropServices: κλήσεις που επιτρέπουν την προσπέλαση σε COM objects, Win32 DLLs και Win32 API. System.XML: κλάσεις και κλήσεις χειρισμού XML δεδομένων. System.Text: χειρισμός κειμένου / κωδικοποιήσεων

15 15 Assemblies - Executables Managed Modules –Παράγονται από τους μεταγλωττιστές –Επικεφαλίδες (PE & CLR) –Μεταδεδομένα (Metadata) –Κώδικας ενδιάμεσης γλώσσας (IL Code) Assemblies –Παράγονται από τους linkers/μεταγλωττιστές –Πλήρως αυτοπεριγραφόμενες δομικές μονάδες –Λογική μονάδα ομαδοποίησης εκτελέσιμων αρχείων (modules) και αρχείων πόρων (resource files) –Ελάχιστη μονάδα επαναχρησιμοποίησης, ασφάλειας και διαχείρισης έκδοσης –Αποτελούνται από 1 ή περισσότερα αρχεία –Περιέχουν ειδικά μεταδεδομένα (manifest) –Στατικά ή Δυναμικά –Ισχυρά ή αδύναμα ονομασμένα. Μέσω Assemblies: –Κατακερματισμός στοιχείων για μείωση χρόνου και χώρου μεταφόρτωσης. –Προσθήκη μη αυστηρά δομημένων πόρων (text, image κλπ). –Ενσωμάτωση τύπων πολλών γλωσσών προγραμματισμού σε ένα στοιχείο.

16 16 Assembly Identification Ονομασία –Όνομα αρχείου Έκδοση –Τέσσερα ψηφία Κουλτούρα –EL –EN-US κλπ Τιμή κατακερματισμού του δημοσίου κλειδιού του εκδότη.

17 17 Δημιουργία Assemblies VB Source CodeC# Source CodeJ# Source Code VB CompilerC# ComplierJ# Complier Managed Module Resource File VB Compiler C# Complier J# Complier Assembly Linker MS IL MSIL Assembler Assembly Manifest Managed Module Resource File Managed Module

18 18 AppDomain Χώρος εκτέλεσης μιας.NET Εφαρμογής. Τα AppDomains είναι διαχωρισμένα μεταξύ τους ως προς: –Εκτέλεση –Ασφάλεια –Ρύθμιση λειτουργίας Σε κάθε Windows process που τρέχει CLR: –Πολλά AppDomains (ένα default) –Ένα χώρο ουδέτερων assemblies Μπορούν να αποφορτωθούν (Τα Assemblies όχι). Προσφέρουν μηνύματα κατάστασης προς hosted εφαρμογή. Ανταλλαγή αντικειμένων μεταξύ AppDomains (By value) μέσω serialization. Τα AppDomains προσφέρουν ασφάλεια ανάλογη των Processes λόγω του Verification. Στις κλήσεις μεθόδων μεταξύ AppDomains γίνεται thread transition. Windows Process CLR, GC Heap, Thread Pool AppDomain #1 (Default) AppDomain #2 Loader HeapAssembly App.EXE Assembly Types.DLL Assembly Sys.DLL Type1 x86 Type2 x86 Type3 x86 Loader HeapAssembly Plugin.DLL Assembly Types2.DLL Assembly Sys.DLL Type1 x86 Type2 x86 Type3 x86 Domain Neutral Assemblies Loader Heap Type1 x86 Type2 x86 Assembly MSCorLib.DLL

19 19 Types Περιέχουν:Περιέχουν: –Constants: πάντα ~static. –Fields: readonly ή read/write, static ή instance. –Instance constructors. –Type constructors. –Operator overloads. –Conversion operators. –Properties. –Events: static ή instance. –Types (nested types). Χαρακτηρίζονται:Χαρακτηρίζονται: –Normal –Abstract –Sealed Χαρακτηρισμός Μελών Πεδία: –Static –Read only –Read write Μέθοδοι: –Static –Instance –Virtual –Shadows –Override –Abstruct –Final Πρόσβαση: –Private –Family –Family and Assembly –Family –Family or Assembly –public

20 20 Primitive Types –Τύπος που o compiler αναγνωρίζει και χειρίζεται διαφανώς ως προς: Μετατροπές Αναθέσεις Έλεγχο και Έκθεση σφαλμάτων –Αντιστοιχεί σε τύπο του υποκείμενου FCL.

21 21 Value Types –Δεσμεύονται στο thread stack ή ενσωματώνονται στο χώρο ενός reference type. Δεν εμπίπτουν σε GC. Δεν ειδοποιούνται για την καταστροφή τους μέσω Finalize μεθόδου. –Η χρήση τους δε γίνεται μέσω δείκτη αλλά με την ίδια την τιμή. Δεν απαιτείται επίλυση της αναφοράς για τη χρήση τους. Μια μεταβλητή που δείχνει σε ValueType έχει πάντα έγκυρη τιμή. Η ανάθεση μεταβλητής σε άλλη και γενικά η ανάθεση προκαλούν αντιγραφή. –Δεν επιτρέπουν να δημιουργούνται τύποι κληρονόμοι (αυτόματα sealed). Δεν έχουν method tables. Δεν έχουν SyncBlockIndex entries. –Κληρονομούν από το System.ValueType. –Boxed και Unboxed μορφή –Τυπικά valuetypes: Structures Enumerators

22 22 Reference Types –Δεσμεύσεις από το διαχειριζόμενο σωρό. Η δέσμευση αντικειμένου ενδέχεται να ξεκινήσει GC. –Η στιγμιοτύπηση επιστρέφει το δείκτη σε αυτές. Μια μεταβλητή που αναφέρεται σε reference type μπορεί να είναι άκυρη Ο γενικός τρόπος μεταφοράς είναι με παράδοση του δείκτη. –Κληρονομούν από το System.Object. –Μεγάλο κόστος χρήσης. –Πάντα boxed μορφή.

23 23 System.Object Όλα τα αντικείμενα πρέπει να κληρονομούν από τον τύπο System.Object Επιτρέπει βασικές δυνατότητες στον τύπο: –Σύγκριση δύο στιγμιότυπων για ισότητα –Απόδοση αναγνωριστικού (hash) ανά στιγμιότυπο –Αναγνώριση του πραγματικού τύπου ενός στιγμιότυπου –«Ρηχή» αντιγραφή ενός στιγμιότυπου –Απόδοση βασικής αναπαράστασης σε συμβολοσειρά, ενός στιγμιότυπου.

24 24 Strings System.String Type –Δε μεταβάλλεται μετά τη δημιουργία (Immutable). –Συνήθως δε δημιουργούνται μέσω newobj αλλά μέσω ldstr από τα metadata (Interning). –Όμοιες στιγμιοτυπήσεις δείχνουν σε ίδια δεδομένα (string pooling) StringBuilder Type. –Δεν είναι immutable και επιτρέπει το χειρισμό strings. –Πλέον αποδοτικό. –Εσωτερικά δείχνει σε πίνακα χαρακτήρων.

25 25 Namespaces Imports / Using κλπ για τους compilers. Δηλώνονται ρητά (π.χ. Namespace statement) Ομαδοποίηση θεματικά συναφών συνιστωσών. Άγνωστα για το CLR (μόνο πλήρεις ονομασίες) Ένα assembly μπορεί να περιέχει πολλά namespaces. Πολλά assemblies μπορούν να γεμίζουν το ίδιο namespace. Το όνομα ενός namespace είναι ανεξάρτητο του ονόματος ενός assembly.

26 26 Events / Delegates Events –Βασίζονται στη χρήση delegates. –Βήματα: Ορισμός τύπου για πέρασμα παραμέτρων (arguments). Ορισμός ενός delegate που καθορίζει το πρότυπο συνάρτησης ειδοποίησης και θα αποθηκεύει τους ενδιαφερόμενους για ειδοποίηση. Δημιουργία μεθόδων εγγραφής και διαγραφής ενδιαφερομένων. Δημιουργία μεθόδου εξαπόλυσης του μηνύματος (virtual protected συνήθως με ονοματολογία OnEventName) Υλοποίηση λειτουργικότητας εξαπόλυσης του μηνύματος. Delegates –«Δείκτες σε συναρτήσεις». –Επιτρέπουν ανάρτηση λειτουργικότητας κατά την εκτέλεση. –Type safe. –Multicast ή Single-cast

27 27 Object Lifetime Δημιουργία –Τελεστής New –Δέσμευση από το διαχειριζόμενο χώρο μνήμης (managed heap) για τα την κατάστασης του αντικειμένου. –Δέσμευση χώρου εσωτερικών δομών για το χειρισμό του αντικειμένου: Δείκτης σε πίνακα μεθόδων Δείκτης σε SyncBlockIndex –Κλήση του constructor. –Δεν υπάρχει destructor (GC) Καταστροφή –Αυτόματη (GC) –Γίνεται κάποια στιγμή μεταξύ της απαλοιφής της τελευταίας αναφοράς στο αντικείμενο και του τερματισμού του AppDomain: Απαλοιφή αναφορών Καλείται από το σύστημα η Finalize μέθοδός του, ώστε το αντικείμενο να απελευθερώσει πόρους. Απελευθερώνεται η μνήμη. –Dispose pattern: βοηθά στην αιτιοκρατική απελευθέρωση πόρων.

28 28 JIT Compiler Μεταγλώττιση κατά την είσοδο σε μέθοδο. –Επίλυση assembly dependencies κατά την είσοδο σε μέθοδο (αναφορές τύπων) Διευκολύνεται από την MSIL και τα Metadata. Μειονεκτήματα –Αυξημένη καθυστέρηση κατά την 1η εκτέλεση μεθόδου –Αυξημένες απαιτήσεις μνήμης Πλεονεκτήματα –Βελτιστοποίηση για CPU, μνήμη, OS, κατάσταση συστήματος. –Δυνατότητα παρακολούθησης συμπεριφοράς και βελτιστοποίηση Pre-JITing –Μεταγλώττιση άπαξ κατά την εγκατάσταση.

29 29 Εκτέλεση Διαχειριζόμενου κώδικα Φόρτωση εκτελέσιμης συνιστώσας (exe/dll). Αν το σύστημα δεν έχει γνώση του.NET: –Μεταπήδηση μέσω stub (native code) σε σημείο που εισάγεται από το CLR DLL. –Αρχικοποιείται το CLR. –Εντοπίζεται το διαχειριζόμενο σημείο εισόδου (managed code entry point). Αν το σύστημα έχει γνώση του.NET ο παραπάνω stub κώδικας αγνοείται. Εφόσον το επόμενο σημείο μεταπήδησης (εδώ είναι η entry method) δεν έχει μεταγλωττιστεί σε native CPU code: –Διαβάζονται όλοι οι αναφερόμενοι τύποι της «περιοχής». –Δημιουργείται πίνακας μεταπήδησης για κάθε νέο αναφερόμενο τύπο και μέθοδό του. –Αρχικοποιείται ο πίνακας σε προκαθορισμένο σημείο εντός του CLR. –Γίνεται μεταπήδηση στο σημείο εκτέλεσης. –Γίνεται μεταγλώττιση της MSIL σε native κώδικα (JIT Compiler). –Αντικαθίσταται η εγγραφή του πίνακα σημείων μεταπήδησης ώστε να δείχνει σε native κώδικα. Γίνεται μεταπήδηση στο native κώδικα.

30 30 Garbage Collector Αφορά στο διαχειριζόμενο σωρό και όχι το stack. Λειτουργία: –Τυπικά εκτελείται όταν γεμίσει μέρος της διαχειριζόμενη μνήμης (γενεά 0) κληθεί η System.GC.Collect() –Δημιουργούνται ρίζες «Roots»: Global variables Static variables Stack parameters CPU registers που δείχνουν σε reference Types. Αντικείμενα λίστας FReachable –Αρχικά όλα τα άλλα θεωρούνται σκουπίδια. –Δημιουργείται γράφος αναφορών ξεκινώντας από κάθε ρίζα. –Αν βρεθούν σημαντικά αχρησιμοποίητα τμήματα μνήμης: Καλούνται οι Finalize των αντικειμένων που δε χρησιμοποιούνται. Γίνεται μεταφορά για συμπίεση (memcopy) των αντικειμένων που χρησιμοποιούνται. Αναπροσαρμόζονται όλοι οι δείκτες. –Άλλα χαρακτηριστικά: Γενεές αντικειμένων: Finalization List: λίστα αντικειμένων που απαιτούν Finalization FReachable List: αντικείμενα που δε χρησιμοποιούνται και απαιτούν Finalization. Υλοποίηση Dispose Pattern για απελευθέρωση πόρων (IDisposable Interface). Ανάσταση αντικειμένων (resurrection) Short & Long Weak references (System.WeakReference Type).

31 31 Exceptions Ενιαίος μηχανισμός αναφοράς και χειρισμού σφαλμάτων –Try/Catch blocks Try Catch (conditional-unconditional) Finally –Throw Πηγή Exceptions –Εφαρμογής και συνιστωσών (πχ FCL) –Περιβάλλοντος / Χώρου εκτέλεσης / Συστήματος Συμβατότητα με CLS: Exceptions που κληρονομούν από System.Exception. Εφαρμογή πολιτικών για το χειρισμό unhandled exceptions: –Μέσω κώδικα. –Μέσω Registry και πολιτικών διαχείρισης. Προβληματισμοί: –Exceptions ή Return Values : Τι είναι σφάλμα; –Μη απόκρυψη exceptions. –Το FCL αποκλίνει από την ορθή υλοποίηση του μηχανισμού!

32 32 Verification Εκτελείται από το CLR όταν μεταφράζει IL σε CPU Instructions Ελέγχει ότι τα μεταδεδομένα είναι ορθά δομημένα. Βεβαιώνεται ότι κάθε οδηγία είναι «ασφαλής»: –Δε διαβάζεται μνήμη που δεν έχει προηγουμένως γραφεί. –Κάθε κλήση μεθόδου έχει σωστό αριθμό παραμέτρων. –Κάθε παράμετρος μεθόδου είναι του ορθού τύπου. –Κάθε μέθοδος έχει μία κλήση επιστροφής (return). –Κάθε μέθοδος έχει μία επιστρεφόμενη τιμή. –Κλπ Υπάρχει δυνατότητα απενεργοποίησης από Administrator.

33 33 Εγκατάσταση Εκτελέσιμα αρχεία –Απλή αντιγραφή τους στο σύστημα – στόχο (exe) –Μοναδική ανάγκη προετοιμασίας η δημιουργία shortcut. –Πιο σύνθετες διαδικασίες για «ειδικές εφαρμογές» (π.χ. Services κλπ) Συνιστώσες: –Privately Deployed Assemblies Τοπικά διατιθέμενες συνιστώσες. Προτεινόμενη λύση για το φαινόμενο DLL Hell. Καμία ανάγκη «registration»: εγκατάσταση με απλή αντιγραφή των assemblies στο χώρο εκτέλεσης της εφαρμογής. Η εφαρμογή τρέχει πάντα με τις συνιστώσες τις οποίες είχε αναπτυχθεί και δοκιμαστεί. XML Configuration scripts μπορούν να αλλάξουν το χώρο και τρόπο αναζήτησης συνιστωσών μιας εφαρμογής. –Globally Deployed Assemblies Ολικά διατιθέμενες συνιστώσες. Απαιτούν «registration» XML Configuration scripts καθορίζουν τη συμβατότητα μεταξύ τους. Διατίθενται μηχανισμοί αντιμετώπισης του φαινομένου DLL Hell.

34 34 Strong & Weak Assemblies Ίδιο format PE Weakly Named Assemblies: –Μόνο private deployment –Αναγνώριση από το filename. Strongly Named Assemblies –Private deployment –Global deployment –Αναγνώριση από 4 στοιχεία: Name Version Culture Public key token (PK hash) –Δημιουργούνται από τον compiler / AL με παροχή του ζεύγους Public / Private Key. –Εξασφαλίζεται το αναλλοίωτο των περιεχομένων τους. –Δεν εξασφαλίζεται η πηγή τους. –Side-by-Side execution.

35 35 Side-by-Side Execution MYSTRINGS.DLL Neutral V PK Application.EXE Neutral V PK MYSTRINGS.DLL Neutral V PK BLL.DLL Neutral V PK

36 36 Global Assembly Cache (GAC) Default θέση: C:\Windows\Assembly\GAC\ –Δυνατότητα υπέρβασης για δημιουργία κοινόχρηστου GAC. –HKLM\Software\Microsoft\Fusion\CacheLocation string Ατεκμηρίωτη δομή. Εγκατάσταση με GAVUtil.exe, Installer και ShFusion.dll. Γραφική περιήγηση με ShFusion.dll shell extension.

37 37 Global Assembly Cache (GAC) Directory of C:\WINDOWS\assembly\GAC 24/11/ :44 πμ. 24/11/ :44 πμ.. 11/07/ :25 πμ Accessibility 30/09/ :17 πμ ADODB 24/11/ :44 πμ CrystalDecisions.ReportSource 24/11/ :44 πμ CrystalDecisions.Windows.Forms 24/11/ :44 πμ CrystalReportPluginLib 13/07/ :31 πμ IEHost 11/07/ :25 πμ IIEHost 11/07/ :25 πμ ISymWrapper 30/09/ :17 πμ Microsoft.CF.WindowsCE.Forms 13/07/ :31 πμ Microsoft.JScript 24/11/ :44 πμ Microsoft.VisualBasic.Compatibility.Data 11/07/ :25 πμ Microsoft.VisualBasic.Vsa 11/07/ :22 πμ MSDATASRC 11/07/ :22 πμ Office 13/07/ :31 πμ Regcode 24/11/ :44 πμ SoapSudsCode 11/07/ :22 πμ stdole 13/07/ :31 πμ System 30/09/ :17 πμ System.CF.Design 30/09/ :17 πμ System.CF.Drawing 30/09/ :17 πμ System.CF.Package

38 38 Διαχείριση Εφαρμογών Αρχεία διαχείρισης / ρυθμίσεων –Σύνταξη XML –Καθορίζουν: Δέντρο αναζήτησης στοιχείων Συμβατότητα εκδόσεων συνιστωσών Συμβατότητα με CLR Τοπικά Configuration Files (.config) –Αρχεία στο χώρο της εφαρμογής (xxxx.config) –Ειδική κατηγορία: Publisher Policy αρχεία (συνιστώσας). Ολικά Configuration Files –Ένα ανά έκδοση του CLR (Machine.config) Διαχείριση.config αρχείων με: –MMC UI (“.NET Configuration” administrative tool) –Text editor (π.χ. Notepad) –System.Configuration namespace

39 39 Επιδιόρθωση Εφαρμογών Αρχείο καταγραφής αναφορών στιγμιοτύπου εφαρμογής. –Τηρείται από το CLR αυτόματα και ημερομηνιακά. –Δημιουργείται μία εγγραφή κάθε φορά που αλλάζει κάποιο αναφερόμενο assembly. “Fix An Application” –Εργαλείο επαναφοράς προηγούμενης κατάστασης για Windows NT/2000/XP/2003. –Μέσω των Wizards του.NET Framework για Win 98/Me. –Δημιουργεί application config file που χειρίζεται τις ανακατευθύνσεις.

40 40.NET Configuration MMC SnapIn

41 41 Παράδειγμα.config file Αρχείο προσδιορισμού θέσης: Παράδειγμα δήλωσης διαδρομής αναζήτησης assembly:

42 42 AOP και.NET Attributes: –Χαρακτηρισμοί στοιχείων. –Αλλάζουν τη συμπεριφορά των compilers, του CLR ή ακόμα και του εκτελέσιμου κώδικα. Custom Attributes: –Δημιουργούνται από τον προγραμματιστή. –Μοιάζουν με στιγμιότυπα που έχουν αποθηκευτεί (“serialized”) στα metadata και επανέρχονται για χρήση κατά τη στιγμή εκτέλεσης. –Κληρονομούν από το System.Attribute Class –Εφαρμόζονται σε επιλεγμένα στοιχεία. –Μπορεί να εφαρμόζονται μία ή περισσότερες φορές. –Μπορούν να αρχικοποιούνται μέσω constructor ή να δίνονται τιμές πεδίων μέσω ειδικής σύνταξης. –Ελέγχονται κατά το χρόνο εκτέλεσης και μεταβάλλουν τη συμπεριφορά του εκτελέσιμου. Ψευδο-attributes: –Συχνά χρησιμοποιούμενα ειδικά attributes

43 43 Εργαλεία.NET Framework VBC.EXE VBC.EXE : VB Complier CL.EXE CL.EXE : C++ Complier CS.EXE CS.EXE : C# Complier ILDASM.EXE ILDASM.EXE : IL Disassembler ILASM.EXE ILASM.EXE : IL Assembler AL.EXE AL.EXE : Assembly Linker MSCorEE.dll MSCorEE.dll : CLR Gacutil.exe Gacutil.exe : Εγκαθιστά strong assemblies σε GAC SN.exe SN.exe : Δημιουργεί το ζεύγος private/public key. NGEN.exe NGEN.exe : Μεταγλωττίζει ένα IL module σε native κώδικα και υπερβαίνει το “JITing”.

44 44 Περισσότερες Πληροφορίες / Αναφορές Links: ECMAECMA (http://www.ecma-international.org/) MS.NETMS.NET (http://www.microsoft.com/NET/) MONOMONO (http://www.go-mono.com/) Αναφορές: Applied Microsoft.NET Framework Programming (vb/c#) Jeffrey Richter, WinTellect, Microsoft Press Microsoft Developers Network NET Framework Essentials, Tbuan Thai & Hoang Lam, O’Reily.

45 45 ΠΡΟΣΘΕΤΕΣ ΔΙΑΦΑΝΕΙΕΣ

46 46 VB.NET vs C# VB.NET Πάντα CLS Compliant τύποι. Υπό συνθήκη catch Case insensitive / Case preserving Δεν υποστηρίζει υπερφόρτωση τελεστών. Προσφέρει μηχανισμό standard modules. Προαιρετικό weak casting. Δεν υποστηρίζει interface constructors. Optional παράμετροι μεθόδων. Πολλές ιδιότητες με παραμέτρους ανά τύπο. …C# Επιτρέπει μη CLS compliant τύπους (UInt32). Υποστηρίζει υπερφόρτωση τελεστών. Υποστηρίζει υπερφόρτωση μετατροπέων (=). Τελεστής «as» για τη μετατροπή τύπων. Checked/unchecked μεταβλητές. Indexer-default property : Μόνο μία ιδιότητα με παραμέτρους ανά τύπο (Item []) Δυνατότητα unsafe arrays (skip index checking). …

47 47 C++ Η μόνη γλώσσα πλέον που παράγει CPU native code στην πλατφόρμα VS.NET Με χρήση switch παράγει MSIL αντί x86 κώδικα. –/clr switch. –Ο παραγόμενος κώδικας τρέχει εντός CLR: Καταναλώνει τύπους και συνιστώσες.NET. Εξυπηρετείται από μέρος της λειτουργικότητας του CLR. Καταναλώνει τυπικές συνιστώσες x86 (DLLs κλπ). –Δε μεταγλωττίζει: inline assembly (__asm) μεταβλητό αριθμό παραμέτρων Διάφορες χαμηλού επιπέδου δυνατότητες (π.χ. Κλήσεις setjmp, __enable κλπ) –Ότι δε μεταγλωττίζει σε MSIL το μεταγλωττίζει σε εντολές x86. –Τα δεδομένα δεν είναι διαχειριζόμενα Δε στιγμιοτυπούνται στο διαχειριζόμενο χώρο (managed heap). Δε συλλέγονται με τυπικές διαδικασίες (garbage collection). Δεν έχουν μεταδεδομένα. Τα ονόματα των μεθόδων αλλοιώνονται. –Δεν επιτρέπει πολλαπλή κληρονομικότητα.

48 48 Boxing / Unboxing Boxing: –Μετατροπή ενός Value Type σε Reference Type. Δεσμεύεται μνήμη στο διαχειριζόμενο σωρό. Αντιγράφονται τα περιεχόμενα του Value Type. Χρησιμοποιείται ο δείκτης στο αντικείμενο που δημιουργήθηκε. –Η διαδικασία μπορεί να γίνει όταν απαιτείται δείκτης σε αντικείμενο πχ VT σε μέθοδο με παράμετρο τύπου System.Object. –Αποφευκτέα διαδικασία: εισάγει κόστος. Unboxing: –Η διαδικασία απόκτησης της τιμής ενός Reference Type. –Η συνοδεία του unboxing από αντιγραφή της τιμής στο stack την κάνει αντίστροφη διαδικασία του boxing. Η MSIL δεν εισάγει διαδικασία boxing. –Οι C# και VB εκτελούν τη διαδικασία αυτόματα. –H C++ προσφέρει τελεστές.

49 49 Publisher Policy Μεταφέρει την «σύσταση» του δημιουργού ενός assembly για τη χρήση μιας συγκεκριμένης έκδοσης. Πρόκειται για ειδικά ονομασμένο assembly: Policy.v_major.v_minor.assembly_name.dll Συνοδεύεται από ειδικά ονομασμένο configuration file: assembly_name.config Πρέπει να εγκατασταθεί στο GAC. Θα αναζητηθεί σαν policy αν ισχύει το apply publisherproperty. Πάντα θα χρησιμοποιηθούν τα machine policies. Συνίσταται η χρήση του μόνο για διόρθωση bugs.

50 50 Distributed Garbage Collector –Απαιτείται για το.NET Remoting –Βασίζεται σε άδειες που λήγουν και πρέπει να ανανεώνονται (Leases) –Server AppDomain: Leasemanager –Client AppDomain: Sponsor (registered client) –Ανανέωση άδειας: Έγκριση ανανέωσης κατά την ερώτηση του LeaseManager. Κλήση στο remote object Κλήση της Renew() της Lease κλάσης.

51 51.NET Remoting Example using System; using System.Runtime.Remoting; using System.Runtime.Remoting.Channels; using System.Runtime.Remoting.Channels.Tcp; public class CoHello : MarshalByRefObject { public static void Main( ) { TcpChannel channel = new TcpChannel(4000); ChannelServices.RegisterChannel(channel); RemotingConfiguration.RegisterWellKnownServiceT ype ( typeof(CoHello), // Type name "HelloDotNet", // URI WellKnownObjectMode.Singleton // SingleCall or Singleton ); System.Console.WriteLine("Hit to exit..."); System.Console.ReadLine( ); } public void SayHello( ) { Console.WriteLine("Hello, Universe of.NET"); } using System; using System.Runtime.Remoting; using System.Runtime.Remoting.Channels; using System.Runtime.Remoting.Channels.Tcp; public class Client { public static void Main( ) { try { TcpChannel channel = new TcpChannel( ); ChannelServices.RegisterChannel(channel); CoHello h = (CoHello) Activator.GetObject( typeof(CoHello), // Remote type "tcp:// :4000/HelloDotNet" // Location ); h.SayHello( ); } catch(Exception e) { Console.WriteLine(e.ToString( )); }

52 52 Πίνακες (Arrays) Κληρονομούν πάντα από το System.Array τύπο. Επιτρέπεται μετατροπή τύπων –Πίνακες ίδιων διαστάσεων –Δυνατή η μετατροπή κάθε μέλους. Σαν παράμετροι περνούν πάντα με αναφορά (by reference). Επιτρέπονται πολυδιάστατες και μη μηδενικής βάσης –Χαμηλότερη απόδοση Μονοδιάστατες, με μηδενική βάση (διανύσματα): –Εγγενής υποστήριξη από την IL. Jagged Arrays: –Πίνακες πινάκων –Μη CLS Compliant

53 53 Interfaces Interface Inheritance vs Implementation inheritance. Δεν κληρονομούν από το System.Object. Μπορούν να ορίζουν: –Events –Methods –Properties Μπορούν να ορίζουν static εκδόσεις των παραπάνων (μη συμβατά με CLS) Δεν επιτρέπεται να ορίζουν –Instance fields –Instance Constructors Επιτρέπεται –Private ορισμός ώστε να αποκρύπτονται από τη διεπαφή του τύπου υλοποίησης. –Πολλαπλός ορισμός συνώνυμων συναρτήσεων από πολλά υλοποιούμενα interfaces και επιλεκτικά: διαφοροποίηση των υλοποιήσεων του καθενός ενοποίηση υλοποίησης σε μία μέθοδο.

54 54 Διάφορα Το FCL/CLR προϋποθέτουν τα αντικείμενα να υλοποιούν συγκεκριμένη λειτουργικότητα ώστε να αποδίδουν τα αναμενόμενα. Πχ: –IConvertible και γενικά casts. –Equals/GetHashCode –Formating –IFormatProvider, ICustomFormatter –κλπ Object Cloning: –Swallow και Deep Copy. –Swallow copy: MemberWiseClone() Reflection –Μεγάλη σημασία για: Δημιουργία ανοικτών συστημάτων μέσω χρήσης pluggable components. Βελτίωση ευκαιριών επαναχρησιμοποίησης κώδικα (προσαρμογή με ενδοσκόπηση)

55 55 Ασφάλεια σε εφαρμογές.NET Code Access Security Code Verification Assembly Signing


Κατέβασμα ppt "1 Παρουσίαση Παρουσίαση: Κακαλέτρης Γιώργος.NET Framework."

Παρόμοιες παρουσιάσεις


Διαφημίσεις Google