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

 

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

Διαφορά κοινού dll και assembly

Îåêßíçóå áðü ôï ìÝëïò epp1123. Τελευταία δημοσίευση από το μέλος epp1123 στις 12-01-2009, 15:40. Υπάρχουν 5 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  09-01-2009, 19:20 47540

    Διαφορά κοινού dll και assembly

    Καλησπέρα. Έχει κάποιος την ευγενή καλοσύνη να μου εξηγήσει τη διαφορά ενός κοινού dll και ενός assembly. Διάβασα κάποια πράγματα, αλλά δε μπορώ ότι με βοήθησε και πολύ. Ευχαριστώ.
  •  09-01-2009, 19:46 47542 σε απάντηση της 47540

    Απ: Διαφορά κοινού dll και assembly

    Τι ακριβώς ακριβώς δεν έχεις καταλάβει.. Με λίγα λόγια, χοντρικά, κάθε κομμάτι που δημιουργείς με το .Net, (είτε .EXE, είτε .DLL) είναι ένα assembly, ένα σύνολο MSIL κώδικα το οποίο εκτελείτε στον εκάστοτε υπολογιστή, αφού μετατραπεί φυσικά σε απο τον JIT/Runtime σε κώδικα που "καταλαβαίνει" ο υπολογιστής.

    Αυτό που (νομίζω) ότι προσπαθείς να καταλάβεις είναι ποια η διαφορά ενός Native Win32 DLL με ένα DLL του .Net; Πολλές, αλλά απο τις πιο βασικές και κύριες είναι ότι το assembly του .Net χρειάζεται το framework (runtime) για να τρέξει ενώ το Win32 DLL συνήθως όχι, γιατί κάποιες φορές χρειάζεται κι αυτό κάποιο runtime ανάλογα με την γλώσσα και την έκδοση που έχει γίνει Compile.


    Παναγιώτης Κεφαλίδης

    "Για να επιτύχεις, θα πρέπει το πάθος σου για την επιτυχία να είναι μεγαλύτερο απο τον φόβο σου για την αποτυχία"

    Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Παρακαλώ διαβάστε τους όρους χρήσης.
  •  09-01-2009, 20:10 47543 σε απάντηση της 47542

    Απ: Διαφορά κοινού dll και assembly

    Ναι βασικά θέλω να καταλάβω τη διαφορά του κλασικού dll που ξέρουμε όλα αυτά τα χρόνια με το assembly. Εψαξα στο γούγλη αλλά δε βρήκα κάπου μαζεμένες τις διαφορές τους. Και πάλι ευχαριστώ
  •  09-01-2009, 20:17 47544 σε απάντηση της 47543

    Απ: Διαφορά κοινού dll και assembly

    Και τα "κοινά" dlls και τα assemblies είναι dlls. Η διαφορά είναι αυτή που εξήγησε ο Παναγιώτης, δηλαδή οτι το dll που περιέχει κώδικα που έχει γραφτεί σε .net χρειάζεται τα .net runtimes για να λειτουργήσει. Αλλα dll που είναι γραμμένα σε VB6, χρειάζονται το vb6 runtime για να λειτουργήσουν, άλλα που είναι γραμμένα σε άλλες γλώσσες δεν χρειάζονται τίποτα και άλλα χρειάζονται το runtime library της αντίστοιχης γλώσσας.

    Ολα έχουν ένα κοινό στοιχείο: Ειναι βιβλιοθήκες κώδικα, compiled είτε απευθείας σε γλώσσα μηχανής είτε σε κάποιο ενδιάμεσο κώδικα (εξ'ου και η απαίτηση για τα runtimes).


    Σωτήρης Φιλιππίδης

    DotSee Web Services

    View Sotiris Filippidis's profile on LinkedIn

    DotNetNuke them!
  •  09-01-2009, 20:20 47545 σε απάντηση της 47544

    Απ: Διαφορά κοινού dll και assembly

    A! Επίσης, αν ως "κλασικό dll" εννοείς τα com components τα οποία γίνονται register στο μηχάνημά σου με το κλασικό regsvr32, τότε να σου πω οτι εδώ υπάρχει μια διαφορά: Τα assemblies είναι DLLs που χρησιμοποιούνται από .net applications στο σημείο που βρίσκονται (συνήθως μαζί με το application) και όχι globally, όπως τα συνηθισμένα com components.

    Βεβαια υπάρχει (για να σε μπερδέψω και λίγο) και το GAC (Global Assembly Cache) στο .NET, το οποίο σου επιτρέπει να χρησιμοποιήσεις ένα .net assembly globally.


    Σωτήρης Φιλιππίδης

    DotSee Web Services

    View Sotiris Filippidis's profile on LinkedIn

    DotNetNuke them!
  •  12-01-2009, 15:40 47582 σε απάντηση της 47545

    Απ: Διαφορά κοινού dll και assembly

    Ευχαριστώ για την απάντηση, ξεκαθάρισε λίγο το τοπίο. Θα γράψω τι κατάλλαβα από το διάβασμα που έκανα και πείτε μου που κάνω λάθος.

    Τα .net assemblies μπορεί να είναι στατικά ή δυναμικά, σαν τα κλασικά dll. Εμπεριέχουν κώδικα που το common language runtime εκτελεί. Ο Microsoft intermediate language (MSIL) code σε ένα portable executable (PE) αρχείο δεν θα εκτελεστεί αν δεν υπάρχει ένα assembly manifest. Τα στατικά assemblies μπορούν να περιέχουν τύπους από το .NET Framework (interfaces και κλάσεις), όπως επίσης και άλλα resources πχ bitmaps, JPEGS κτλ.  Τα στατικά assemblies αποθηκεύονται στο σκληρό σε portable executable (PE) αρχεία. Μπορούμε επίσης να δημιουργήσουμε δυναμικά assemblies, τα οποία εκτελούνται απευθείας από τη μνήμη και δεν αποθηκεύονται στο δίσκο πριν την εκτέλεση. Επίσης υπάρχει και το assembly versioning, όπου το version καταγράφεται στο manifest.

    Τα dll, είναι βιβλιοθήκες  με shared library λογική. Συνήθως μπορεί να έχουν κατάληξη dll ή exe (όπως τα .net assemblies). Το file format τους είναι και σε αυτά το PE. Τα dll μπορούν να περιέχουν κώδικα δεδομένα ή resourses. Ωστόσο δεν έχω δει ότι περιέχουν κάποιο manifest, ή κάποιο versioning όπως τα assemblies. Επίσης, αν θυμάμαι καλά νομίζω dynamic "κλασσικά" dll, δεν πρέπει να υπάρχουν, κατά αντιστοιχία με τα dynamic assemblies.

    Στη τελική, αν κατάλαβα καλά τα assemblies του .Net Framework είναι η εξέλιξη των dlls του Win32. Αν κάνω κάπου λάθος διορθώστε με. Ευχαριστώ!

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