-
Το τόπικ αυτό ανοίγει με βάση αυτό το τόπικ. Ξεκίνησε σαν εντυπώσεις από υποψήφια συστήματα θεωρητικής εξέτασης οδήγησης (σήματα) και οδήγησε σε μια μάλλον ενδιαφέρουσα συζήτηση με τον Kyan περί Web και Desktop εφαρμογών.
Επειδή υπάρχουν αρκετοί 'κομπιουτεράδες' σε αυτό το φόρουμ, θεωρήσαμε ότι ενδέχεται να ενδιαφέρει κι` άλλους αυτή η συζήτηση και είπαμε να την 'ανοίξουμε'.
Ακολουθούν τα ποστς μας με τη σειρά που έγιναν. Τα σχόλια είναι ευπρόσδεκτα και η όρεξη για συζήτηση δεδομένη!
-
Το τόπικ αυτό ανοίγει με βάση αυτό το τόπικ. Ξεκίνησε σαν εντυπώσεις από υποψήφια συστήματα θεωρητικής εξέτασης οδήγησης (σήματα) και οδήγησε σε μια μάλλον ενδιαφέρουσα συζήτηση με τον Kyan περί Web και Desktop εφαρμογών.
Επειδή υπάρχουν αρκετοί 'κομπιουτεράδες' σε αυτό το φόρουμ, θεωρήσαμε ότι ενδέχεται να ενδιαφέρει κι` άλλους αυτή η συζήτηση και είπαμε να την 'ανοίξουμε'.
Ακολουθούν τα ποστς μας με τη σειρά που έγιναν. Τα σχόλια είναι ευπρόσδεκτα και η όρεξη για συζήτηση δεδομένη!
-
Το τόπικ αυτό ανοίγει με βάση αυτό το τόπικ. Ξεκίνησε σαν εντυπώσεις από υποψήφια συστήματα θεωρητικής εξέτασης οδήγησης (σήματα) και οδήγησε σε μια μάλλον ενδιαφέρουσα συζήτηση με τον Kyan περί Web και Desktop εφαρμογών.
Επειδή υπάρχουν αρκετοί 'κομπιουτεράδες' σε αυτό το φόρουμ, θεωρήσαμε ότι ενδέχεται να ενδιαφέρει κι` άλλους αυτή η συζήτηση και είπαμε να την 'ανοίξουμε'.
Ακολουθούν τα ποστς μας με τη σειρά που έγιναν. Τα σχόλια είναι ευπρόσδεκτα και η όρεξη για συζήτηση δεδομένη!
-
Ο χρήστης ClioDriver έγραψε:
Καλά, είναι δυνατόν εν έτει 2005 (ή και 2000, εφόσον η εφαρμογή είναι 5 ετών) να φτιάχνουν τέτοια εφαρμογή client-server;;; Δηλαδή, υπάρχει καλύτερο παράδειγμα για εφαρμογή web;; -
Ο χρήστης kyan έγραψε:
Εφαρμογή Web? Δεν πέθαναν αυτές ακόμα;
Χωρίς πλάκα, έχοντας κάποια εμπειρία (κυρίως second-hand) από 'εφαρμογές Web' προτιμώ χίλιες φορές ένα μοντέλο 3-tier με binary client, το οποίο πιστεύω πως είναι και η καλύτερη τοπολογία για τη συγκεκριμένη περίπτωση.
Ίσως επειδή έχω συμμετάσχει στο γράψιμο ενός application server σε Delphi και έχω εμπλακεί και σε εφαρμογές που τον χρησιμοποιούν.
-
Ο χρήστης ClioDriver έγραψε:
Για να μην το «χαλάσουμε» το τόπικ, είπα να σου γράψω ένα πμ.Φυσικά, τα παρακάτω χωρίς να θέλω να το παίξω δάσκαλος, ή ότι 'εγώ ξέρω', πάντα για την κουβέντα!
Το 3-tier είναι πολύ πιο δύσκολο να υλοποιηθεί σε σχέση με μια εφαρμογή web. Έχεις να υλοποιήσεις έναν σωστό server (σταθερότητα, μηδέν downtime, προσεκτική διαχείριση μνήμης και cpu), τα πρωτόκολλα επικοινωνίας clients-server, και φυσικά τον client, που είναι μια εφαρμογή από μόνος του.
Όχι βέβαια ότι μια web εφαρμογή δεν έχει τις δυσκολίες της, ίσα-ίσα, η stateless φύση του HTTP κάνει δύσκολη τη διαχείριση του session ενός χρήστη, αλλά έχουν αρχίσει να εμφανίζονται web-app frameworks (όπως τα ASP.NET, JavaFaces) που κάνουν «παπάδες».. σε σημείο που ένας «βετεράνος» web developer (όπως η αρχοντιά μου..) να τα βλέπει και να δακρύζει!
Το σίγουρο είναι ότι μια web εφαρμογή δεν σε αναγκάζει να κάνεις configuration management σε Χ πισιά, έχεις τον απόλυτο κεντρικό έλεγχο, οι application servers είναι (με ελάχιστες εξαιρέσεις) καλογραμμένοι, οπότε δεν έχεις να ασχολείσαι με optimizations, μπορείς με SSL να έχεις την απόλυτη ασφάλεια στην επικοινωνία, μπορείς να βάλεις «τελειωμένα» πισιά για thin clients (έναν browser θα τρέχουν), κλπ, κλπ.
Θα εκπλαγείς αν συνειδητοποιήσεις πόσες πραγματικά σοβαρές εφαρμογές είναι web. Και μόνο το SAP αρκεί - το χρησιμοποιούν στη Σιτροέν, το είδα όταν παράγγελνα το C4.
-
Ο χρήστης kyan έγραψε:
Για να μην το «χαλάσουμε» το τόπικ, είπα να σου γράψω ένα πμ.
Εγώ θα έλεγα να ανοίξουμε κουβέντα στον αντίλογο.
Το 3-tier είναι πολύ πιο δύσκολο να υλοποιηθεί σε σχέση με μια εφαρμογή web. Έχεις να υλοποιήσεις έναν σωστό server (σταθερότητα, μηδέν downtime, προσεκτική διαχείριση μνήμης και cpu), τα πρωτόκολλα επικοινωνίας clients-server, και φυσικά τον client, που είναι μια εφαρμογή από μόνος του.
Έχω λάβει μέρος στην υλοποίηση App Server, συγκεκριμένα του SAS της Singular. Και όταν λέω 'App Server' εννοώ ακριβώς αυτό και όχι τα objects που σηκώνει. Για να καταλάβεις ο SAS χρησιμοποιεί TCP/IP για επκοινωνία, έχει δικό του πρωτόκολλο ανταλλαγής δεδομένων, δικό του database access layer (αρχιτεκτονική 'disconnected datasets'/briefsace model), dynamic (session*) load balancing, database connection pooling, app state management, auto recover capabilities, security, encryption και είναι πάαααααρα πολύ ελαφρύς και γρήγορος. Επίσης υποστηρίζει WEB client, αν και απαιτείται η χρήση ενός ActiveX library για να υποστηριχθεί το connectivity και το data-access.
(*) session = η σύνδεση ενός client σε τον server.
Όχι βέβαια ότι μια web εφαρμογή δεν έχει τις δυσκολίες της, ίσα-ίσα, η stateless φύση του HTTP κάνει δύσκολη τη διαχείριση του session ενός χρήστη, αλλά έχουν αρχίσει να εμφανίζονται web-app frameworks (όπως τα ASP.NET, JavaFaces) που κάνουν «παπάδες».. σε σημείο που ένας «βετεράνος» web developer (όπως η αρχοντιά μου..) να τα βλέπει και να δακρύζει!
Λύσεις του τύπου 'ASP' όπου για να πας από τη μία στην άλλη εγγραφή σε ένα grid απαιτείται roundtrip με κάνουν να εξοργίζομαι. Μόνο με την υποδομή των αμερικανών μπορούν να τρέξουν ανθρώπινα.
Έχω έναν συνάδερφο και φίλο που έχει φτιάξει ένα web app framework σε HTML/Javascript και όντως μπορεί να κάνει παπάδες. Βέβαια το data-access κομμάτι του framework βασίζεται και αυτό σε disconnected datasets και μοιάζει πάρα πολύ με εκείνο του SAS (από αυτό το εμπνεύστηκε άλλωστε) και IMHO είναι η πιο σωστή τοπολογία.
Το σίγουρο είναι ότι μια web εφαρμογή δεν σε αναγκάζει να κάνεις configuration management σε Χ πισιά, έχεις τον απόλυτο κεντρικό έλεγχο, οι application servers είναι (με ελάχιστες εξαιρέσεις) καλογραμμένοι, οπότε δεν έχεις να ασχολείσαι με optimizations, μπορείς με SSL να έχεις την απόλυτη ασφάλεια στην επικοινωνία, μπορείς να βάλεις «τελειωμένα» πισιά για thin clients (έναν browser θα τρέχουν), κλπ, κλπ.
Σε ένα LAN το config management δεν είναι πρόβλημα. Επίσης σε μια σωστά γραμμένη 3-tier εφαρμογή ο client είναι τόσο thin (σε web εφαρμογή λέμε ότι έχουμε 'zero client' και όχι 'thin' ;)) που μπορεί να τρέξει μια χαρά σε ο,τιδήποτε PC (OK, τα palmtop είναι ένα θέμα) και η εγκατάσταση είναι ένα 'xcopy'. Ο web client για μένα έχει νόημα μονάχα όταν θέλεις να δώσεις πρόσβαση στο πρόγραμμά σου κατευθείαν σε άγνωστους χρήστες (πελάτες ή υποψήφιους πελάτες) ή σε απομακρυσμένους εργαζόμενούς σου (π.χ. πωλητής με laptop ή palmtop) οπότε υλοποιείς μία 'δορυφορική' web εφαρμογή που κάνει ένα μικρό υποσύνολο των πραγμάτων που κάνει η κυρίως εφαρμογή (π.χ. παραγγελιοληψία).
Τέλος να σου πω πως έχουμε υλοποιήσει ένα σύστημα για remote updates που χρησιμοποιεί τον SAS, το οποίο μπορεί να αναβαθμίσει 'σιωπηλά' τις εφαρμογές μας κατεβάζοντας τις νέες εκδόσεις των εκτελέσιμων αρχείων της εφαρμογής από έναν κεντρικό server. Στο μέλλον θα το κάνουμε και incremental (σταδιακό) ώστε να μοιάζει πάρα πολύ με το cache των browsers.
Θα εκπλαγείς αν συνειδητοποιήσεις πόσες πραγματικά σοβαρές εφαρμογές είναι web. Και μόνο το SAP αρκεί - το χρησιμοποιούν στη Σιτροέν, το είδα όταν παράγγελνα το C4.
Το ξέρω. Κι εμείς έχουμε web-based εφαρμογές (με SAS από κάτω) αλλά τις εγκαταλείπουμε σιγά-σιγά προες χάριν του binary client. Ο explorer βάζει απίστευτους περιορισμούς στις δυνατότητες ενός data-access client αν αρχίσεις να ζητάς κάτι περισσότερο από τα βασικά. Παράδειγμα: η χρήση του Enter αντί για το Tab για μετάβαση από πεδίο σε πεδίο. Πρακτικά είναι αδύνατο να το υλοποιήσεις χωρίς να κάνεις άσχημη χακιά.
Αν μπορούμε να συναντηθούμε ευχαρίστως να σου δώσω υλικό για τον SAS καθώς και ένα demo της νέας μας εφαρμογής Manager Next, της οποίας το framework έχω φτιάξει εγώ και θα χρησιμοποιηθεί σε πολλές εφαρμογές της Singular.
-
Ο χρήστης ClioDriver έγραψε:
Με συγχωρείς, αλλά ήθελα να το μελετήσω καλύτερα και ο χρόνος ήταν (και είναι) πιεσμένος..Είναι πολύ ενδιαφέρον αυτό που λες για τον SAS (Singular Application Server? ), υποθέτω ότι ήταν μια δύσκολη απόφαση για την Singular να εξελίξει τον δικό της AS.. αυτό είναι ένα project στο οποίο θα με ενδιέφερε πραγματικά να συμμετέχω, μιας και το είδος προγραμματισμού που 'απολαμβάνω' περισσότερο είναι οι servers!
Για τα web applications, πιστεύω ότι είναι το μέλλον. Με τις βελτιώσεις στην HTML και τη CSS, καθώς και την βελτίωση των διαφόρων frameworks, η υλοποίηση του UI λογικά θα γίνεται όλο και πιο εύκολη. Από εκεί και πέρα, επιμένω για τα πλεονεκτήματα των webapps σε σχέση με το client / server: κεντρικός έλεγχος, μηδενική ανάγκη για updates σε clients, πολύ λίγες απαιτήσεις από τον client (ουσιαστικά δίκτυο και browser), ανεξαρτησία από το είδος του client (Windows, PDA, Linux box, Mac, ...), ανεξαρτησία από τη γεωγραφική θέση του client (δίπλα μου, ή στα 1000χλμ), και ίσως άλλα που δεν μπορώ να σκεφτώ τώρα.
Για την απόδοση, η αλήθεια είναι ότι ο ακρογωνιαίος λίθος των webapps είναι το roundtrip.. μπορείς όμως με έξυπνο σχεδιασμό αφενός του UI, αφετέρου της όλης εφαρμογής να ελαχιστοποιήσεις το κόστος αυτό. Εξάλλου, από αυτό πάσχουν όλοι οι clients, απλά άλλοι λιγότερο άλλοι περισσότερο: δεν θέλεις να στείλεις στον desktop client ένα resultset 20.000 rows, έτσι; Άρα θα κάνεις paging. Το ίδιο paging που θα κάνεις και με το webapp. Αν μπορείς με κάποιο τρόπο να 'κασάρεις' κάπως το αποτέλεσμα, έχεις λύσει το 80% του προβλήματος (db access).
Τεσπα, το θέμα δεν είναι webapps vs desktop-apps. 'Εκαστος στο είδος του' που λένε. Υπάρχουν εφαρμογές που δεν μπορούν με τίποτα να γίνουν webapps και τανάπαλιν..
-
Ο χρήστης kyan έγραψε:
Είναι πολύ ενδιαφέρον αυτό που λες για τον SAS (Singular Application Server? ), υποθέτω ότι ήταν μια δύσκολη απόφαση για την Singular να εξελίξει τον δικό της AS.. αυτό είναι ένα project στο οποίο θα με ενδιέφερε πραγματικά να συμμετέχω, μιας και το είδος προγραμματισμού που 'απολαμβάνω' περισσότερο είναι οι servers!
Η τεχνογνωσία υπήρχε, γιατί είχαμε γράψει TCP/IP server στο παρελθόν. Σίγουρα όμως δεν ήταν εύκολο εγχείρημα κι ειδικά το threading του πράματος μας έσκισε!
Για τα web applications, πιστεύω ότι είναι το μέλλον. Με τις βελτιώσεις στην HTML και τη CSS, καθώς και την βελτίωση των διαφόρων frameworks, η υλοποίηση του UI λογικά θα γίνεται όλο και πιο εύκολη.
Αυτό που προσπαθώ να σου πω είναι πως η τεχνολογία της HTML δεν είναι αρκετά εξελιγμένη και σταθερή για να υποστηρίξει ένα Web App. Σε γραφιστικές δουλειές μπορείς να κάνεις παπάδες αλλά για να στήσεις μια εφαρμογή (και όχι site) χρειάζεται πολύ framework, το οποίο είναι εξαιρετικά δυσσυντήρητο, ειδικά αν σκεφτείς πως πρέπει να δουλεύει σωστά σε όλους τους browsers, πράγμα που το περιορίζει πάρα πολύ. Στα λέω αυτά από πρώτο χέρι.
Από εκεί και πέρα, επιμένω για τα πλεονεκτήματα των webapps σε σχέση με το client / server: κεντρικός έλεγχος, μηδενική ανάγκη για updates σε clients, πολύ λίγες απαιτήσεις από τον client (ουσιαστικά δίκτυο και browser), ανεξαρτησία από το είδος του client (Windows, PDA, Linux box, Mac, ...), ανεξαρτησία από τη γεωγραφική θέση του client (δίπλα μου, ή στα 1000χλμ), και ίσως άλλα που δεν μπορώ να σκεφτώ τώρα.
Κάνεις ένα λάθος: Εγώ δε μίλησα για client/server αλλά για 3-tier εφαρμογές. Η ειδοποιός διαφορά είναι η ύπαρξη του application server και των objects της εφαρμογής που τρέχουν σε αυτόν και υλοποιούν το μεγαλύτερο μέρος του business process της εφαρμογής. Αυτό το κομμάτι μπορεί να είναι το ίδιο με εκείνο μιας Web App. Η διαφορά με τις Web Apps είναι ότι ο client που αναλαμβάνει το presentation είναι μια σειρά από εκτελέσιμα αρχεία αντί για HTML σελίδες. Οπότε για τα πλεονεκτήματα που αναφέρεις, σε σχέση με τις 3-tier εφαρμογές ισχύει:
-
κεντρικός έλεγχος
-
μηδενική ανάγκη για updates σε clients
Αυτά τα δύο μπορείς να τα αντιμετωπίσεις (και το έχουμε κάνει) οργανώνοντας την εφαρμογή σου (στον client) σε σχετικά μικρά εκτελέσιμα αρχεία και στήνοντας ένα σύστημα remote-updates μέσω TCP/IP. Επίσης ο όρος 'μηδενική ανάγκη για updates' είναι παραπλανητικός. Το update γίνεται αλλά γίνεται χωρίς επέμβαση ανθρώπου. Κατ'αυτή την έννοια δεν υπάρχει διαφορά ανάμεσα σε binary/web client. -
πολύ λίγες απαιτήσεις από τον client (ουσιαστικά δίκτυο και browser),
Ομοίως, χωρίς τον browser. -
ανεξαρτησία από το είδος του client (Windows, PDA, Linux box, Mac, ...),
Μπορείς να το πετύχει κι αυτό αν δαγκώσεις τη σφαίρα και γράψεις την εφαρμογή σου σε .NET. Και ναι, το .NET θα υπάρξει και σε Linux.
Και κάτι για τα PDAs: Οι τεχνικοί περιορισμοί που θέτουν (μικρή οθόνη. λίγη μνήμη, αργός επεξεργαστής, δύσκολη πληκτρολόγηση) κάνουν ουτοπική τη χρήση τους σε μία πολύπλοκη εφαρμογή (π.χ. τιμολόγηση), οπότε μπορούν να χρησιμοποιηθούν μόνο για 'περιφερειακές' εργασίες, όπως σου ανέφερα στο προηγούμενο pm. Αν έχεις τον app server και τα objects της εφαρμογής λοιπόν μπορείς κάλλιστα να φτιάξεις μια συνοδευτική σειρά από δορυφορικές εφαρμογούλες σε HTML που να γίνονται από PDA και να έχεις τον binary client για καταστάσεις PC με LAN.
- ανεξαρτησία από τη γεωγραφική θέση του client (δίπλα μου, ή στα 1000χλμ),
Και αυτό επιτυγχάνεται, και μάλιστα καλύτερα, με μία 3-Tier app.
Για την απόδοση, η αλήθεια είναι ότι ο ακρογωνιαίος λίθος των webapps είναι το roundtrip.. μπορείς όμως με έξυπνο σχεδιασμό αφενός του UI, αφετέρου της όλης εφαρμογής να ελαχιστοποιήσεις το κόστος αυτό. Εξάλλου, από αυτό πάσχουν όλοι οι clients, απλά άλλοι λιγότερο άλλοι περισσότερο: δεν θέλεις να στείλεις στον desktop client ένα resultset 20.000 rows, έτσι; Άρα θα κάνεις paging. Το ίδιο paging που θα κάνεις και με το webapp. Αν μπορείς με κάποιο τρόπο να 'κασάρεις' κάπως το αποτέλεσμα, έχεις λύσει το 80% του προβλήματος (db access).
Αυτά ισχύουν όταν γράφεις 3-tier εφαρμογή είτε με binary client είτε με web client.
Τέλος θέλω να σου πω πως η ζωή έχει δείξει πως το 'zero client' μαρκετινίστικα δεν έχει καμμία αξία, ειδικά αν σε περιορίζει στο να υλοποιήσεις τις απαιτήσεις του πελάτη σου. Όταν π.χ. θα σου ζητήσει το ENTER να δουλεύει όπως το TAB (πολύ συνηθισμένο αίτημα) και του πεις 'δεν μπορώ να το κάνω επειδή δεν το υποστηρίζει ο IE' να δεις για πότε θα πάψει να θεωρεί το 'zero client' πλεονέκτημα και θα σου πει 'και γιατί δεν το έγραφες με binary client, χέστηκα αν θα τρέχει από τον IE, εγώ ένα εικονίδιο πατάω'.
-
-
Ο χρήστης ClioDriver έγραψε:
kyan έγραψε:
[...] το threading του πράματος μας έσκισε!Ναι, το να γράψεις σωστό multi-threaded κώδικα μπορεί να είναι εξαιρετικά δύσκολο!
kyan έγραψε:
Αυτό που προσπαθώ να σου πω είναι πως η τεχνολογία της HTML δεν είναι αρκετά εξελιγμένη και σταθερή για να υποστηρίξει ένα Web App. Σε γραφιστικές δουλειές μπορείς να κάνεις παπάδες αλλά για να στήσεις μια εφαρμογή (και όχι site) χρειάζεται πολύ framework, το οποίο είναι εξαιρετικά δυσσυντήρητο, ειδικά αν σκεφτείς πως πρέπει να δουλεύει σωστά σε όλους τους browsers, πράγμα που το περιορίζει πάρα πολύ. Στα λέω αυτά από πρώτο χέρι.Υπάρχουν πλέον - και θα υπάρξουν περισσότερα - ώριμα webapp frameworks, τα οποία κάνουν παπάδες τώρα σε ό,τι αφορά το UI. Μιλάμε για event-driven προγραμματισμό των controls της σελίδας, ακριβώς όπως σε μια desktop εφαρμογή! Βάζεις τα controls σου, δηλώνεις τα events που σε ενδιαφέρουν και.. παίζεις!!
kyan έγραψε:
Κάνεις ένα λάθος: Εγώ δε μίλησα για client/server αλλά για 3-tier εφαρμογές.Ναι, το ίδιο εννοούσα κι` εγώ, απλά χωρίς τη DB.
kyan έγραψε:
- κεντρικός έλεγχος
- μηδενική ανάγκη για updates σε clients
Αυτά τα δύο μπορείς να τα αντιμετωπίσεις (και το έχουμε κάνει) οργανώνοντας την εφαρμογή σου (στον client) σε σχετικά μικρά εκτελέσιμα αρχεία και στήνοντας ένα σύστημα remote-updates μέσω TCP/IP. Επίσης ο όρος 'μηδενική ανάγκη για updates' είναι παραπλανητικός. Το update γίνεται αλλά γίνεται χωρίς επέμβαση ανθρώπου. Κατ'αυτή την έννοια δεν υπάρχει διαφορά ανάμεσα σε binary/web client.
Και όμως, υπάρχει: security policies. Θες κάποιες ρυθμίσεις για να μπορεί ο χρήστης αφενός να 'πανωγράφει' εκτελέσιμα ή άλλα αρχεία, αλλά απολύτως καμία ρύθμιση για να τρέξει τον browser και να δει τη νέα version.
kyan έγραψε:
- πολύ λίγες απαιτήσεις από τον client (ουσιαστικά δίκτυο και browser),
Ομοίως, χωρίς τον browser.
Εξαρτάται τον client: Αν είναι καλογραμμένος και σε καλή πλατφόρμα (βλ Delphi), τότε ΟΚ. Αν είναι σε κακογραμμένη πλατφόρμα, ή σε portable πλατφόρμα (βλ Java, .NET), τότε.. χειρότερα είναι από τον browser, και ας είναι και 5 φόρμες!
kyan έγραψε:
- ανεξαρτησία από το είδος του client (Windows, PDA, Linux box, Mac, ...),
Μπορείς να το πετύχει κι αυτό αν δαγκώσεις τη σφαίρα και γράψεις την εφαρμογή σου σε .NET. Και ναι, το .NET θα υπάρξει και σε Linux.
.ΝΕΤ για ο,τιδήποτε εκτός από Windows δεν θα υπάρξει ποτέ επισήμως! Βάζω το χέρι μου στη φωτιά γι` αυτό!
kyan έγραψε:
Και κάτι για τα PDAs: [...]Μη ξεχνάς ότι τα PDA γίνονται όλο και δυνατότερα. Εδώ τρέχουν εφαρμογές Navigation (πχ Destinator), που συνδιάζουν την εφαρμογή με το GPS, θα κολλήσουν στην εφαρμογή με τις φόρμες; Μνήμη πλέον να έχουν, και...
kyan έγραψε:
- ανεξαρτησία από τη γεωγραφική θέση του client (δίπλα μου, ή στα 1000χλμ),
Και αυτό επιτυγχάνεται, και μάλιστα καλύτερα, με μία 3-Tier app.
Για δες το λίγο από τη μεριά του security-freak δικτυά του πελάτη σου: Να ανοίξω τις Χ πόρτες για να παίζει η εφαρμογή σου, ή να σου αφήσω την 80 μόνο, που ούτως ή άλλως την έχω ανοιχτή για να σερφάρω και όλοι οι routers / gateways / proxies που έχω βάλει στη μέση δεν θα θέλουν καμία αλλαγή;
kyan έγραψε:
Τέλος θέλω να σου πω πως η ζωή έχει δείξει πως το 'zero client' μαρκετινίστικα δεν έχει καμμία αξία, ειδικά αν σε περιορίζει στο να υλοποιήσεις τις απαιτήσεις του πελάτη σου. Όταν π.χ. θα σου ζητήσει το ENTER να δουλεύει όπως το TAB (πολύ συνηθισμένο αίτημα) και του πεις 'δεν μπορώ να το κάνω επειδή δεν το υποστηρίζει ο IE' να δεις για πότε θα πάψει να θεωρεί το 'zero client' πλεονέκτημα και θα σου πει 'και γιατί δεν το έγραφες με binary client, χέστηκα αν θα τρέχει από τον IE, εγώ ένα εικονίδιο πατάω'.Δεν ξέρω για τη 'μαρκετίστικη' αξία του 'zero client'.. δεν το έχω ψάξει τόσο πολύ. Πάντως, βλέπω παντού γύρω μου desktop εφαρμογές να γυρνάνε σε web.. και όχι το αντίθετο, ή τουλάχιστον όχι στον ίδιο βαθμό. Πιστεύω ότι το μόνο σημείο που υπερτερεί ο desktop από τον web client είναι στη 'διαμορφωσημότητα' του UI: με τον desktop μπορείς να κάνεις κάποια πράγματα πολύ ευκολότερα απ` ότι με τον web.
** Το bold αίτημα είναι στάνταρ από λογιστάδες έτσι;
-
Ο χρήστης kyan έγραψε:
Ναι, το να γράψεις σωστό multi-threaded κώδικα μπορεί να είναι εξαιρετικά δύσκολο!
Το χειρότερο είναι να τον ντιμπαγκάρεις.
Υπάρχουν πλέον - και θα υπάρξουν περισσότερα - ώριμα webapp frameworks, τα οποία κάνουν παπάδες τώρα σε ό,τι αφορά το UI. Μιλάμε για event-driven προγραμματισμό των controls της σελίδας, ακριβώς όπως σε μια desktop εφαρμογή! Βάζεις τα controls σου, δηλώνεις τα events που σε ενδιαφέρουν και.. παίζεις!!
Ξέρω, ξέρω. Και παίζουν σε όλους τους browser;
Και όμως, υπάρχει: security policies. Θες κάποιες ρυθμίσεις για να μπορεί ο χρήστης αφενός να 'πανωγράφει' εκτελέσιμα ή άλλα αρχεία, αλλά απολύτως καμία ρύθμιση για να τρέξει τον browser και να δει τη νέα version.
Και αυτό μπορεί να λυθεί, είμαι σίγουρος. Το πολύ-πολύ εγκαθιστάς την εφαρμογή στο profile του.
Εξαρτάται τον client: Αν είναι καλογραμμένος και σε καλή πλατφόρμα (βλ Delphi), τότε ΟΚ. Αν είναι σε κακογραμμένη πλατφόρμα, ή σε portable πλατφόρμα (βλ Java, .NET), τότε.. χειρότερα είναι από τον browser, και ας είναι και 5 φόρμες!
Delphi γράφω εγώ. Έχεις δίκιο για τη Java αλλά το .NET δεν είναι και τόσο αργό.
.ΝΕΤ για ο,τιδήποτε εκτός από Windows δεν θα υπάρξει ποτέ επισήμως! Βάζω το χέρι μου στη φωτιά γι` αυτό!
Κάποιοι ήδη λένε πως η M$ είναι πίσω από αυτό.
Μη ξεχνάς ότι τα PDA γίνονται όλο και δυνατότερα. Εδώ τρέχουν εφαρμογές Navigation (πχ Destinator), που συνδιάζουν την εφαρμογή με το GPS, θα κολλήσουν στην εφαρμογή με τις φόρμες; Μνήμη πλέον να έχουν, και...
Έχεις δει φόρμα τιμολογίου; Πιστεύεις ότι 'χωράει' στην οθονίτσα του PDA;
Για δες το λίγο από τη μεριά του security-freak δικτυά του πελάτη σου: Να ανοίξω τις Χ πόρτες για να παίζει η εφαρμογή σου, ή να σου αφήσω την 80 μόνο, που ούτως ή άλλως την έχω ανοιχτή για να σερφάρω και όλοι οι routers / gateways / proxies που έχω βάλει στη μέση δεν θα θέλουν καμία αλλαγή;
Ο SAS θέλει μόνο μια πόρτα, και μπορεί να είναι κάλλιστα η 80. Επίσης μπορεί να σερβίρει web pages (και .asp) και να υποκαταστήσει τον IIS αν θέλει ο πελάτης.
Δεν ξέρω για τη 'μαρκετίστικη' αξία του 'zero client'.. δεν το έχω ψάξει τόσο πολύ. Πάντως, βλέπω παντού γύρω μου desktop εφαρμογές να γυρνάνε σε web.. και όχι το αντίθετο, ή τουλάχιστον όχι στον ίδιο βαθμό.
Η κατάσταση θα αντιστραφεί προς χάριν του ....'.NET', και αυτό είναι κάτι που το σπρώχνει η ίδια η M$.
** Το bold αίτημα είναι στάνταρ από λογιστάδες έτσι;
Και όχι μόνο αυτό. Θέλουν να κάνουν navigation και με τα βέλη. Και είναι τόσο πεισματάρηδες που ό,τι και να τους πεις το ακούν βερεσέ. Καταλαβαίνεις λοιπόν πόσο σημαντικό είναι να έχεις τον απόλυτο έλεγχο του UI.
-
Και εδώ ανοίγει η συζήτηση...
-
Θεωρώ ότι πλέον το .NET είναι μονόδρομος για δύο βασικούς λόγους:
1). Το επινόησε και το σπονσοράρει η Microsoft, άρα είναι θέμα χρόνου να καθιερωθεί ως standard (αν δεν έχει ήδη γίνει).
2). Αλλάζει ριζικά τον προγραμματισμό τουλάχιστον, έτσι όπως τον ξέραμε, εισάγοντας νέες τεχνικές και έννοιες που σαφώς καθιστούν το τελικό προϊόν πιο δυναμικό, ευέλικτο και ελκυστικό (remoting, Web services, no touch deployment, XML, κτλ).Έχοντας αναπτύξει λογισμικό σε Delphi 2005 .NET πιστεύω ότι είναι μακράν η καλύτερη επιλογή από τις γνωστές πατσαβουριές που δυστυχώς ακόμα πουλάνε στην ελληνική αγορά (client-server applications, flat files, DOS applications).
Το μέλλον του programming μάλλον έχει ήδη φτάσει....
-
Ευχαριστώ τον ClioDriver που ανέβασε όλα μας τα pm.
-
Ο χρήστης Batman έγραψε:
Θεωρώ ότι πλέον το .NET είναι μονόδρομος για δύο βασικούς λόγους:
1). Το επινόησε και το σπονσοράρει η Microsoft, άρα είναι θέμα χρόνου να καθιερωθεί ως standard (αν δεν έχει ήδη γίνει).
2). Αλλάζει ριζικά τον προγραμματισμό τουλάχιστον, έτσι όπως τον ξέραμε, εισάγοντας νέες τεχνικές και έννοιες που σαφώς καθιστούν το τελικό προϊόν πιο δυναμικό, ευέλικτο και ελκυστικό (remoting, Web services, no touch deployment, XML, κτλ).Έχοντας αναπτύξει λογισμικό σε Delphi 2005 .NET πιστεύω ότι είναι μακράν η καλύτερη επιλογή από τις γνωστές πατσαβουριές που δυστυχώς ακόμα πουλάνε στην ελληνική αγορά (client-server applications, flat files, DOS applications).
Το μέλλον του programming μάλλον έχει ήδη φτάσει....
Εφ'όσον ξέρεις Delphi, θα ξέρεις ότι οι περισσότερες καινοτομίες του .NET προϋπήρχαν ήδη. Στο .NET βελτιώθηκαν στα σημεία.
-
Ο χρήστης kyan έγραψε:
Θεωρώ ότι πλέον το .NET είναι μονόδρομος για δύο βασικούς λόγους:
1). Το επινόησε και το σπονσοράρει η Microsoft, άρα είναι θέμα χρόνου να καθιερωθεί ως standard (αν δεν έχει ήδη γίνει).
2). Αλλάζει ριζικά τον προγραμματισμό τουλάχιστον, έτσι όπως τον ξέραμε, εισάγοντας νέες τεχνικές και έννοιες που σαφώς καθιστούν το τελικό προϊόν πιο δυναμικό, ευέλικτο και ελκυστικό (remoting, Web services, no touch deployment, XML, κτλ).Έχοντας αναπτύξει λογισμικό σε Delphi 2005 .NET πιστεύω ότι είναι μακράν η καλύτερη επιλογή από τις γνωστές πατσαβουριές που δυστυχώς ακόμα πουλάνε στην ελληνική αγορά (client-server applications, flat files, DOS applications).
Το μέλλον του programming μάλλον έχει ήδη φτάσει....
Εφ'όσον ξέρεις Delphi, θα ξέρεις ότι οι περισσότερες καινοτομίες του .NET προϋπήρχαν ήδη. Στο .NET βελτιώθηκαν στα σημεία.
Δεν αμφιβάλλω ότι τα περισσότερα χαρακτηριστικά του .ΝΕΤ είναι εμπνευσμένα - αν όχι αντιγραφές - από την Java. Το ζητούμενο είναι ότι οι δυνατότητες αυτές έγιναν πιο προσιτές και σαφώς πιο σωστά προβεβλημένες (καλό Marketing).
-
Από την Java δανείστηκαν το cross-platform μέσω ενδιάμεσου κώδικα (MSIL/ByteCode), το garbage collection και ίσως κάποια language elements. Από την Delphi πήραν το visual form design και το data-binding μοντέλο (datasets), το οποίο βελτίωσαν αρκετά αλλά και το έκαναν ακόμα πιο πολύπλοκο.
-
Βασικά με τρώει η περιέργεια να δω το framework 2.0
Ελπίζω να είναι πιο πλούσιο σε controlάκια και να μην έχει τις παιδικές ασθένειες του 1.1
Γενικά θεωρώ ότι θα επικρατήσει ως τεχνολογία και καλό θα ήταν οι 'δεινόσαυροι' να προλάβουν να προσαρμοστούν έγκαιρα.
Δεν λείπουν βέβαια και αυτοί (οι εταιρίες εννοώ) που ισχυρίζονται ότι αναπτύσσουν σε .NET αλλά απλά χρησιμοποιούν το εργαλείο με τον κλασικό τρόπο χωρίς να αξιοποιούν τις νέες δυνατότητες. -
Ο χρήστης Batman έγραψε:
Θεωρώ ότι πλέον το .NET είναι μονόδρομος για δύο βασικούς λόγους:
1). Το επινόησε και το σπονσοράρει η Microsoft, άρα είναι θέμα χρόνου να καθιερωθεί ως standard (αν δεν έχει ήδη γίνει).
2). Αλλάζει ριζικά τον προγραμματισμό τουλάχιστον, έτσι όπως τον ξέραμε, εισάγοντας νέες τεχνικές και έννοιες που σαφώς καθιστούν το τελικό προϊόν πιο δυναμικό, ευέλικτο και ελκυστικό (remoting, Web services, no touch deployment, XML, κτλ).Έχοντας αναπτύξει λογισμικό σε Delphi 2005 .NET πιστεύω ότι είναι μακράν η καλύτερη επιλογή από τις γνωστές πατσαβουριές που δυστυχώς ακόμα πουλάνε στην ελληνική αγορά (client-server applications, flat files, DOS applications).
Το μέλλον του programming μάλλον έχει ήδη φτάσει....
Όντας ένθερμος υποστηρικτής της Java, απέφευγα όπως ο διάολος το λιβάνι το .NET! Αναγκάστηκα να 'συμβιώσω' με δαύτο για ένα έργο στη δουλειά μου και, πλέον, έχω μια αρκετά ολοκληρωμένη εικόνα.
Λοιπόν, εν ολίγοις, το .ΝΕΤ είναι μια καλή προσπάθεια από την MS, αλλά θέλει αρκετή δουλειά για να κατακτήσει το Enterprise (sic).. και εξηγούμαι:
-
Η C#, η μόνη αξιόλογη και 'ευχάριστη' γλώσσα που δίνει το .ΝΕΤ 'μαμά', πάσχει από το.. 'σύνδρομο MS', ήτοι: πέρνουμε όσο γίνεται περισσότερα χαρακτηριστικά από την υπάρχουσα τεχνολογία, τα ανακατεύουμε, προσθέτουμε λίγο αλάτι - συγνώμη, πείνασα - και βγάζουμε τη νέα killer language! Πρακτικά: κλασικές και αγαπημένες έννοιες OOP, όπως ο run-time πολυμορφισμός γίνονται άσκοπα πολύπλοκες, η γλώσσα 'μολύνεται' από non-OOP δομές (structs, delegates, events), και γενικά, εκεί που έχεις μάθει να σχεδιάζεις και υλοποιείς ένα object model, αναγκάζεσαι να μάθεις για όλα αυτά τα 'κλαμπατσίμπανα' που κάποιος σκέφτηκε στη MS. Το μόνο που μου ψιλο-αρέσει είναι τα uncaught exceptions, και αυτό όχι πάντα..
-
Libraries: Οποιοσδήποτε έχει ασχοληθεί με μια πλατφόρμα που σέβεται τον εαυτό της, (πχ Delphi, Java) μπορεί να καταλάβει ότι όλη σχεδόν η αξία της αντικατοπτρίζεται στις βιβλιοθήκες με τις οποίες έρχεται. Τόσο σε εύρος, όσο και σε ποιότητα. Και ενώ από εύρος δεν τα πάει άσχημα, από ποιότητα.. χάνει: Δεδαλώδες documentation, ασαφής διαχωρισμός μεταξύ components, ενώ άμα επιχειρήσεις να μπεις στα ενδότερα των UI classes.. πάει η μπάλα, χάνεσαι με τα events, delegates...
-
ADO.NET: Καλό όσο παίζεις με κλικι-κλικι, αλλά μόλις αγγίξεις το πληκτρολόγιο.. αρχίζουν τα δύσκολα! Μα καλά, ολόκληρη MS, με τόσα και τόσα DB-APIs, και δεν μπόρεσε να το κάνει καλύτερο;; Έλεος!
-
Για webapps: Η εξάρτηση από τον IIS. Πέρα από τα θέματα ασφάλειας που ταλανίζουν τον IIS, το σωστό configuration ενός webapp γίνεται.. τουλάχιστον δύσκολο. Αντίστοιχα, στη Java με το J2EE, με ένα xml σετάρεις όλη την web εφαρμογή σου. Τόσο δύσκολο ήταν να φτιάξουν κάτι αντίστοιχο και στο integration με τον IIS;
-
Επισήμως, παίζει και θα παίζει μόνο σε windows. Το Mono, αν δεν 'αγκαλιαστεί' από την MS, δεν θα έχει καμία ελπίδα. Και δεν μπορώ να βρώ ούτε έναν καλό λόγο που η MS θα αγκάλιαζε κάτι που απειλεί το (μικρό, αλλά αυξανόμενο) μερίδιό της στην αγορά των servers. Από τα λειτουργικά είναι τα πολλά λεφτά για την MS...
-
-
Εγώ απ'την άλλη ως βαμμένος ντελφάς (σικ) έχω τα εξής να πω για το .NET 2.0:
-
Μου αρέσει η ιδέα των generics (όμοια με τις C++ template classes) που σου γλιτώνει απίστευτο κλάπα-κλάπα. Τα delegates και τα events ως αντικαταστάτες των γνωστών method-pointers της Delphi τα αποδέχομαι ως αναγκαίο κακό. Αν μη τι άλλο προσφέρουν multicasting, το οποίο η Delphi δεν υποστηρίζει.
-
Exception-handling? Σιγά τα ωά ρε παιδιά, όλες οι γλώσσες που σέβονται τον εαυτό τους (C++, Delphi, Java) το έχουν. Τώρα το ανακάλυψε η M$; Αλήθεια, έχετε προσπαθήσει να γράψετε σωστό error handling σε VB;
-
Αυτό το πράμα με την παλούκα του μονολιθικού -πόσο είναι τώρα; 80MB;- CLR runtime δεν μπορώ να το χωνέψω! Γιατί πρέπει να εγκαθιστώ στο pc του χρήστη πράγματα που δεν θα χρειαστώ/εί ποτέ;
-
Data-access. Ωραίο, όσο μένεις στα πλαίσια του click-click. Αν μπεις να γράψεις κώδικα φρικάρεις με την πολυπλοκότητα του object model. Αλλά αν δείτε το api του OLEDB provider (πού να προσπαθήσετε να γράψετε τέτοιον κιόλας) θα σας φύγουν οι απορίες γιατί είναι τόσο πολύπλοκο.
-
Έλλειψη source code για την (κτηνώδη) βιβλιοθήκη. Για έναν ντελφά που έχει μάθει απ'έξω όλο το VCL αυτό είναι απαράδεκτο. Αν κάπου η βιβλιοθήκη έχει ένα bug την πούτσισες. Ψάσχνεσαι για μέρες να το παρακάμψεις.
-
Μα είναι δυνατόν να μην έχουν έναν non-visual container α-λα Delphi data-module και να πρέπει να γράφεις με κώδικα ολόκληρο το server object;!
-
Το Remoting μου φάνηκε πολύ καλή προσπάθεια αλλά και πάλι αν θέλεις κάτι παραπάνω από ένα 'hello network world' πάλι πρέπει να τραβήξεις κουπί. Τουλάχιστον ορίζεται το porting του SAS σε .NET με remoting.
Αν βέβαια δε μας προλάβει η Borland με τη Delphi 2006/7 και πετάξουμε το VS.NET εκεί που ανήκει.
-
Web vs Desktop clients