Kali idea gia m$ linux library.
Giorgos Keramidas
keramida at FreeBSD.org
Mon Sep 9 14:55:01 EEST 2002
On 2002-09-09 13:58 +0000, George Kourtis wrote:
> Τα BSD sockets ναι μεν είναι μια λύση άμεση (φτάνει να ξέρεις από sockets
> και στα δύο λειτουργικά - για τα windows είναι πανεύκολο χάρη στα ActiveX )
> αλλά τότε γιατί έκατσαν και έφτιαξαν το CORBA.
> Η γρήγορη λύση δεν είναι και αυτή που θα μπορεί να συντηρείται πιο εύκολα.
Τα sockets δεν είναι η "γρήγορη" λύση. Είναι όμως η portable λύση.
Δεν μπορείς να είσαι σίγουρος ότι η λύση σου με corba θα παίζει π.χ.
σε HP/UX (ναι, ξέρω χειρότερο UNIX μάλλον δεν υπάρχει) αλλά τουλάχιστον
βασικά socket libraries έχουν όλα πλέον τα λειτουργικά.
Δεν έχουν σχέση με sockets τα ActiveX. Μην τα μπερδεύεις. Τα sockets
είναι κάτι που υπάρχει ανεξάρτητα από ActiveX. Όταν λέω να κάνεις
κάτι που να χρησιμοποιεί sockets, εννοώ κάτι που βασίζεται μόνο στα
εξής πράγματα:
- File descriptors και αντίστοιχα library functions
[read, write, select, close].
- Sockets για connect/bind/listen.
Πάνω από μια σύνδεση με sockets τώρα, όπως έγραψε κι ο Μαυρογιαννόπουλος
κάποια στιγμή μπορείς να περάσεις ό,τι δεδομένα θές εσύ. Αν αυτά είναι
binary records (είτε δικά σου, είτε με κάποια μορφή RPC[1] (remote
procedure calls)), ή κάτι που βασίζεται πάνω σε κάποιο text-based
πρωτόκολο[2], είναι καθαρά δικό σου θέμα.
Στο αρχικό σου γράμμα ανέφερες το portability σαν στόχο, κι όχι την
ταχύτητα ή την ευκολία υλοποίησης στα Windows. Γι αυτό σου είπα για
sockets κι όχι για ActiveX. Σαν καθαρά εξαρτημένο από τα Windows
παράδειγμα και μέθοδος δουλειάς, τα ActiveX αποκλείονται αυτόματα όταν
θέλεις να πετύχεις εύκολο porting σε άλλα λειτουργικά. Αντιθέτως,
κάποιο κομμάτι κώδικα που είναι καλά γραμμένο και φροντίζει να κρύβει
πίσω από layers τις ελάχιστες ασυμβατότητες που μπορεί να υπάρξουν μεταξύ
των διαφόρων υλοποιήσεων των BSD sockets, συνήθως θέλει ελάχιστες έως
καθόλου αλλαγές για να μεταφερθεί σε άλλες αρχιτεκτονικές και υλοποιήσεις
των sockets.
Τελικά τι θες, portability ή ActiveX;
- Γιώργος
========
[1] Τα RPC calls χρησιμοποιούνται ευρέως για τις υλοποιήσεις του NFS
(Network File System) στα UNIX λειτουργικά, αλλά η χρησιμότητά τους
δεν περιορίζεται σε αυτό. Μπορείς άνετα να κάνεις πολλά ενδιαφέροντα
πράγματα με RPC. Γι αυτό εξάλλου και γλώσσες πιο μοντέρνες έχουν
κάποια μορφή του RPC στα specifications τους (βλ. Java και RMI
(remote messaging interface)).
[2] Τα record-based πρωτόκολα, που είναι συνήθως η μορφή στην οποία
καταλήγουν τα βασισμένα σε δυαδικό τρόπο κι όχι σε κείμενο πρωτόκολα
έχουν την τάση να εκφυλίζονται σε home-made υλοποίησεις κάποιου είδους
RPC για να καταφέρουν το ίδιο πράγμα που έχει σχεδιασθεί να κάνει
το external data representation (XDR) κομμάτι του RPC όπως είναι
σχεδιασμένο σήμερα. Συνήθως βέβαια, όταν προσπαθεί κάποιος να επανεφεύρει
ήδη υπάρχοντες "τροχούς" του βγαίνουν με μαθηματική ακρίβεια λίγο
πιο χάλια και εμφανώς πιο τετράγωνοι, όπως λέει κι ένα παλιό αλλά
πάντα επίκαιρο Κινέζικο ρητό.
More information about the Linux-greek-users
mailing list