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

 

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

Επιλέγοντας αρχιτεκτονική

Îåêßíçóå áðü ôï ìÝëïò KelMan. Τελευταία δημοσίευση από το μέλος Grigoris στις 13-12-2006, 15:46. Υπάρχουν 31 απαντήσεις.
Σελίδα 1 από 3 (32 εγγραφές)   1 2 3 >
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  19-10-2006, 08:54 18795

    Επιλέγοντας αρχιτεκτονική

    Σε συνέχεια της χθεσινής συνάντησης στο πρώτο community event, ο Σωτήρης (Φιλιπίδης) είπε κάποια στιγμή το εξής (δεν θυμάμαι τα ακριβή λόγια του, correct me if i'm wrong): "Τελικά, αυτά τα TypedDatasets χρησιμοποιούνται; Αν τα έβλεπε αυτά ο προϊστάμενός μου, θα είχε φρικάρει. Αυτός είναι της φιλοσοφίας Enterprise Library"

    Το ερώτημα μου δεν έχει να κάνει με τα DataSets. Σκεφτόμουν μετά το εξής: Στα project που έχετε δουλέψει, η επιλογή του enterprise model, έχει γίνει πραγματικά αφού δοκιμάστικαν κάποια μοντέλα ή ήταν μονόδρομος κάποιες επιλογές επειδή είσασταν αρκετά τυχεροί (ή άτυχοι) αυτό-να-ξέρει/αυτό-να-εμπιστεύεται/αυτό-να-έχει-διαβάσει-στο-περιοδικό o architect?


    Vir prudens non contra ventum mingit
  •  19-10-2006, 11:07 18801 σε απάντηση της 18795

    Απ: Επιλέγοντας αρχιτεκτονική

    Αυτό ακριβώς είπα, με την έννοια ότι τα typed datasets είναι συνυφασμένα με ανάπτυξη που γίνεται bottom up (από την database προς το domain model) και όχι domain-driven (φτιάχνουμε το domain μας - essentially το middle tier - και μετά κοιτάμε πως θα φτιαξουμε την database για να ανταποκρίνεται σε αυτό).

    Ο προϊστάμενός μου είναι πρώην προιστάμενός μου για να ακριβολογούμε :)
    Σωτήρης Φιλιππίδης

    DotSee Web Services

    View Sotiris Filippidis's profile on LinkedIn

    DotNetNuke them!
  •  19-10-2006, 12:41 18816 σε απάντηση της 18795

    Απ: Επιλέγοντας αρχιτεκτονική

    Αν δεν κάνω λάθος η Enterprise Library δεν σε βοήθεια και ι ιδιαιτέρα στο domain (business layer) Οπότε αναγκαστικά πρέπει να δεις κάτι άλω.

    Τώρα - το πώς γίνεται η επιλογή - δεν το γνωρίζω. Οπότε ξερώ - διορθώστε με - το κάθε software house στο Ελλάδα ξεκινάει με το θέλω αυτό χτες και δεν μένει και πολλής χρόνος για αρχιτεκτονικές κ.λ.π. Υπάρχουν βεβαία εξαιρέσεις - για να το μάθουμε να πει ο καθένας πια αρχιτεκτονική χρησιμοποιεί στο current project.

    Εγώ τελευταία πειραματίζομε με την CSLA....

  •  19-10-2006, 15:42 18828 σε απάντηση της 18816

    Απ: Επιλέγοντας αρχιτεκτονική

    Χμμμ ... νομίζω οτι οτι είναι πολλοί οι παράγοντες που επηρρεάζουν μια τέτοια απόφαση.

    1. Το παρελθόν. Το βρήκες μισογραμμένο, ή είναι κατι from scratch ?

    Αν είναι μισογραμμένο, ίσως είνια πολύ αργά να αλλάξεις approach.

    2. Αν είναι from scratch ... πως δούλευε η ομάδα στο παρελθόν, πόσο εύκολο είναι

    ν'αλλαξεις approach ?

    3. Χρειάζεται ν'αλλαξεις approach ? Πολύ καλό το CSLA ας πούμε, αλλά θα δώσει κάτι

    παραπάνω στο project ? Αξίζει τον κόπο να το χρησιμοποιήσεις;

    Προσωπικά, σπάνια βρέθηκα στην ευτυχή θέση να έχουμε το χρόνο να δοκιμάσουμε ένα-δύο approaches προτού πάρουμε τελική απόφαση. Συνήθως είναι πολλοί external παράγοντες που επηρρεάζουν ... ( βλέπε "το θέλω χτές" ) ... οπότε ... κάνεις ότι μπορείς να κάνεις, όσο πιο καλά μπορείς με τα δεδομένα constraints.


    Angel
    O:]
  •  19-10-2006, 15:53 18829 σε απάντηση της 18828

    Απ: Επιλέγοντας αρχιτεκτονική

    Συμφωνώ εν μέρη. Απλά δεν είναι θέμα μόνο χρόνου αλλά και ανθρώπων. Τα θέματα αυτά σχετίζονται με research & development και όχι μόνο με development.
    Dimitris Papadimitriou
    Software Development Professional
    dotNETZone.gr News

    Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Διαβάστε επίσης τους όρους χρήσης.
  •  19-10-2006, 16:17 18831 σε απάντηση της 18829

    Απ: Επιλέγοντας αρχιτεκτονική

    Συμφωνώ με αυτά που ανέφερες. Μπορούν να προστεθούν και πολλά άλλα κριτήρια – Όσο για το CSLA - απλά ήθελα μια μικρή «δημοσκόπηση» να δω τι χρισημοποητε στην πράξη από τα μέλη του dotnetzone – όχι ότι το CSLA είναι καλύτερη η χειρότερη. – απλά αυτί χρησιμοποιώ στο current project
  •  19-10-2006, 20:13 18843 σε απάντηση της 18831

    Απ: Επιλέγοντας αρχιτεκτονική

    Ναι, αλλά μου αλλάζετε το ρού του post Smile Το αρχικό ερώτημα δεν είναι τι αρχιτεκτονική ακολουθείτε. Εγώ ρώτησα πως επιλέγετε αρχιτεκτονική! Ας πούμε, την τελευταία αρχιτεκτονική που ακολουθήσατε, πως πήρατε την απόφαση να την ακολουθήσετε;

    Vir prudens non contra ventum mingit
  •  19-10-2006, 20:30 18844 σε απάντηση της 18843

    Απ: Επιλέγοντας αρχιτεκτονική

    Ο Χατζινικολαο είσαι:) Πώς - προσωπικά αξιολογώντας κόπιες διαθέσιμες - και με βάση κριτήρια - οπός πόσο μου κάνει και πόσο μου αρέσει επιλεγώ. Φυσικά πάντα πρέπει να έχεις τα ματάκια σου ανοιχτό - κανένας δεν σου προσφέρει τα πάντα, τρώγοντας σου έρχεται η όρεξη κλπ. Και εγώ θα το παίξω Κακαουνακης¨) Εσύ πια χρησιμοποιείς
  •  19-10-2006, 20:58 18847 σε απάντηση της 18844

    Απ: Επιλέγοντας αρχιτεκτονική

    Κακαουνάκη, επιμένεις... Smile

    Το ερώτημα δεν είναι ποιά αρχιτεκτονική χρησιμοποιώ/χρησιμοποιείς/χρησιμοποιεί. Είναι πως την επέλεξα/επέλεξες/επέλεξε! Σε εφαρμογές NET 1.1 που έχω κάνει, έπαιξα με TypedDatasets και custom loading μηχανισμό. Σε εφαρμογή που κάνω τώρα, ακόμα το ψάχνω...

    To θέμα είναι τα projects στο NET 1.1 δεν ήταν enterprise level και η επιλογή μου έγινε λόγω πίεσης χρόνου. Βάσει της εμπειρίας μου θεώρησα ότι δεν θα είχα προβλήματα και ότι θα καλυπτόμουν σε αυτά που θέλω να κάνω. Η αλήθεια είναι ότι αντιμετώπισα προβλήματα όταν κατά τη διάρκεια του developmet χρειάστηκε να κάνω αλλαγές στη βάση. Όπως το βλέπω, και πάλι μάλλον δεν πρόκειται να έχω αρκετό χρόνο να δοκιμάσω διάφορα και θα διαλέξω βάσει μιας πρώτης εντύπωσης που έχω από ότι έχω δοκιμάσει. Από την άλλη σκέφτομαι ότι ο χρόνος που αναλώνω γι αυτό το mini research αφενός δεν πληρώνεται, αφετέρου θα μπορούσε να αναλωθεί σε άλλα developικά θέματα με μεγαλύτερο priority στην agenda μου και τέλος, με τον ρυθμό που βγαίνουν νέα πράγματα, ίσως να ξαναψάχνω την επόμενη φορά για διαφορετική αρχιτεκτονική μήπως μου κάνει καλύτερα Smile Ήδη ζαχαρώνω το Data Access Guidance Package του Web Service Software Factory (ετοιμάζω άλλο post γι αυτό).

     


    Vir prudens non contra ventum mingit
  •  20-10-2006, 00:10 18858 σε απάντηση της 18847

    Απ: Επιλέγοντας αρχιτεκτονική

    Τώρα έγινες σαφέστατος. Τώρα αν το κριτήριο σου είναι το να μην έχεις προβλήματα με αλλαγές στη βάση – μαλών πρέπει να δεις κόπια OREM. Εγώ αυτό που ήχο δοκιμάσει και το κάνει είναι το DataObjects της http://www.x-tensive.com. Βέβαια δεν το έχω χρησιμοποίηση σε project γιατί τη βάση την κάνει όπως θέλει αυτός….Όποτε βλέπεις τα κριτήρια είναι κάπως αντιφατικά…

    Για μένα για να χρησιμοποιώ κόπια αρχιτεκτονική τα βασικά κριτήρια τώρα που το σκεφτομε είναι

    1) Να έχω τα source (για να μπορώ και να μαθαίνω και να πειράζω)

    2) Να έχει καλή υποστήριξη – άμα είναι commercial η μεγάλη και active community αν είναι open source

    3) Να έχει καλο documentation και βιβλια για να μην χρεαζεται να την μαθενο από το 0 σε ενδεχομενα νεα μελη το development team

  •  20-10-2006, 00:18 18859 σε απάντηση της 18858

    Απ: Επιλέγοντας αρχιτεκτονική

    Γρηγόρη με έχεις τσακίσει! Big Smile

    Όχι, δεν είναι το ζητούμενο τα κριτήρια. Ο προβληματισμός μου είναι η διαδικασία επιλογής. Κάνεις; Δεν κάνεις; Πως την κάνεις; Αξίζει να την κάνεις; Και άλλα τέτοια υπαρξιακά...
    Vir prudens non contra ventum mingit
  •  20-10-2006, 00:57 18862 σε απάντηση της 18859

    Απ: Επιλέγοντας αρχιτεκτονική

    Παράδειγμα: Έχεις να κάνεις ας πούμε μια distributed λύση. Έχεις να διαλέξεις ανάμεσα σε remoting και web services. Έχεις δύο αρχιτεκτονικές οι οποίες αρχικά είναι candidate και υποτίθεται ότι πρέπει να διαβάσεις ή ενδεχομένως να κάνεις training πάνω σε αυτές ή να ενημερωθείς από peers και communities. Κατόπιν υποτίθεται ότι πρέπει να υλοποιήσεις αντίστοιχα reference αρχιτεκτονικές που να επιβεβαιώνουν ότι οι επιλογές σου είναι σωστές. Αυτό είναι το ιδεατό (σύμφωνα με το Enterprise Unified Process). Αυτή λοιπόν η διαδικασία γίνεται real life? Όχι; Κάτι παραπλήσιο; Ή μήπως όταν μπαίνει ένα τέτοιο θέμα επιλογής απλά κάποιος το αποφασίζει για τον άλφα ή βήτα λόγο; Τέτοια πράγματα ρωτάω...


    Vir prudens non contra ventum mingit
  •  20-10-2006, 09:14 18870 σε απάντηση της 18862

    Απ: Επιλέγοντας αρχιτεκτονική

    Εσύ έχεις φιλοσοφικές αναζητήσεις περί αρχιτεκτονικής και διαδικασιών:)

    Τέλος πάντων – απλά βλέπω ότι τα θέματα αρχιτεκτονικής δεν φαίνεται να προσελκύουν αρκετούς ενδιαφερομένους

  •  20-10-2006, 23:45 18935 σε απάντηση της 18870

    Απ: Επιλέγοντας αρχιτεκτονική

    Λοιπόν, στο μεγαλύτερο μέρος της η συζήτηση δεν ασχολείται με επιλογή αρχιτεκτονικής αλλά επιστρέφει συνέχεια στην επιλογή ... data access mechanism! Τα datasets, τα ORM, τα DataObjects (που δεν είναι ORM), όλα αυτά είναι μηχανισμοί data access, όχι αρχιτεκτονικές. Στο σύνολο της εφαρμογής είναι ένα μόνο από τα πράγματα που πρέπει να κοιτάξει κανείς. Τί ανάγκες performance έχω? Τί ανάγκες scalability? Ασφάλειας? Διαθεσιμότητας? Αξιοπιστίας? Προσαρμογής σε αλλαγές των απαιτήσεων? Φιλικότητα και ευχρηστία? Δυνατότητα διαχείρισης? Ποιό από όλα αυτά έχει προτεραιότητα? Πως θα τις καλύψω τις απαιτήσεις? Μήπως το .NET Framework παρέχει ήδη λύσεις για κάποια από αυτά τα θέματα? Υπάρχουν διαθέσιμα έτοιμα components που θα καλύψουν τις ανάγκες μου? Θα πρέπει να φτιάξω κάποια από το μηδέν? Επικοινωνεί η εφαρμογή μου με άλλα συστήματα? Θα έχω μία μόνο εφαρμογή ή φτιάχνω ολόκληρο σύστημα?

    Πόσο επηρεάζονται όλα αυτά από το μηχανισμό data acces? Για να μην πω, είναι δυνατόν να καλυφθούν όλες αυτές οι διαφορετικές παράμετροι με ένα και μόνο μηχανισμό data access? Τέλος πάντων, τί με νοιάζει? Εδώ μιλάμε για αρχιτεκτονική ολόκληρης της εφαρμογής, όχι μόνο για το data access!

    Και πως επιλέγω τώρα τα διάφορα στοιχεία της αρχιτεκτονικής? Πρώτα απ' όλα θα πρέπει να μπορώ να διακρίνω ότι η εφαρμογή έχει διαφορετικά τμήματα, για το καθένα από τα οποία έχω διαφορετικές επιλογές. Άλλες οι επιλογές που έχω για το UI, άλλες για το data access, άλλες για το busines logic. Επίσης, έχω πράγματα που υπάρχουν σε όλα τα επίπεδα της εφαρμογής. Χρειάζομαι κάποιους μηχανισμούς για logging, για security, για configuration της εφαρμογής.

    Στο κάθε τμήμα μετά θα πρέπει να κοιτάξω τί χρειάζομαι και τί επιλογές έχω. Για παράδειγμα στο UI, αν με ενδιαφέρει η ταχύτητα ανάπτυξης και το business logic της εφαρμογής είναι απλό και δεν χρειάζεται να τροποποιείται εύκολα, μπορώ να φτιάξω μια εφαρμογή χρησιμοποιώντας φόρμες και controls. Αν όμως έχω πολλές φόρμες, το business logic είναι στοιχειωδώς περίπλοκο, αν υπάρχουν πολλοί κανόνες για input validation, αν θέλω να εμφανίζω κάποια controls μόνο στους χρήστες που έχουν δικαίωμα, αν δεν θέλω να αλλάζω τις μισές φόρμες αν π.χ. αποφασίσω ότι θέλω ο κωδικός πελάτη να δέχεται μόνο κεφαλαία, θα χρησιμοποιήσω μία αρχιτεκτονική UI όπως το Model View Controller ή το Model View Presenter. Αν το UI μου απαιτεί περίπλοκη λογική, θα χρειαστώ και ένα UI workflow. Από τη στιγμή που αποφασίζω να χρησιμοποιήσω κάποια αρχιτεκτονική, κοιτάζω τί υπάρχει διαθέσιμο. Για παράδειγμα, το Composite UI Application Block υλοποιεί και το MVC και το MVP pattern, ενώ το Smart Client Software Factory περιέχει wizards που δημιουργούν τον περισσότερο κώδικα που χρειάζεται να γράψει κανείς όταν χρησιμοποιεί το CAB.

    Μετά? Που πάει το business logic? Αν είναι ελάχιστο, μπορεί να μπει στις φόρμες. Στην συντριπτική πλειοψηφία των περιπτώσεων όμως, το business logic θα πρέπει να υπάρχει κάπου ξεχωριστά. Η απλούστερη λύση είναι ίσως το Transaction Script pattern. Για κάθε σημαντική λειτουργία, (π.χ. πραγματοποίηση κατάθεσης, δημιουργία δανείου ή ασφαλιστηρίου) υπάρχει μία μέθοδος ή μία κλάση που την υλοποιεί πλήρως. Το μειονέκτημα βέβαια, είναι ότι πολλές φορές οι λειτουργίες περιέχουν κοινά κομμάτια τα οποία αναγκαστικά θα αντιγράφονται σε κάθε λειτουργία. Η πιο ευέλικτη λύση είναι η δημιουργία ενός Domain Model. Αναθέτουμε σε κάθε domain object τις λειτουργίες που του αντιστοιχούν και μετά τις συνθέτουμε για να υλοποιήσουμε πιο περίπλοκες λειτουργίες. Η σύνθεση μπορεί να γίνει με κώδικα, σε script ή ακόμα και μέσω workflow. Άλλη μία αρχιτεκτονική επιλογή είναι το Table Module, όπου έχω μία κλάση η οποία αντιστοιχεί σε ένα πίνακα της βάσης και περιέχει και το σχετικό business logic. Το πρόβλημα βέβαια είναι ότι η σχεδίαση της βάσης επηρεάζει άμεσα τη σχεδίαση του κώδικα. Αν η βάση δεν έχει σχετικά απλή δομή, ο κώδικας θα καταλήξει ιδιαίτερα μπερδεμένος. Το πρόβλημα αυτό φαίνεται κυρίως σε περίπλοκες εφαρμογές, όπου την ίδια βάση χρησιμοποιούν διάφορα modules με διαφορετικό τρόπο ενώ το κάθε αντικείμενο θα πρέπει να καλύπτει όλα τα modules. Μία αλλαγή για να εξυπηρετηθεί ένα module μπορεί να προκαλέσει πρόβλημα στα υπόλοιπα.

    Και μετά απ' όλα αυτά, φτάνουμε και στο Data Access. Εδώ πρέπει να ξεχωρίσουμε το data access που αφορά το business logic και αυτό που αφορά lookup data, παραμέτρους, reporting. Η επιλογή εδώ εξαρτάται σε πολύ μεγάλο βαθμό από την επιλογή μας για το business logic. Αν χρησιμοποιήσουμε Domain Model, ένα ORM θα είναι η ευκολότερη λύση, καθώς δεν επιβάλλει οι κλάσεις και το σχήμα της βάσης να συμβαδίζουν. Αν θέλουμε το Table Module, μπορούμε να χρησιμοποιήσουμε typed datasets με business μεθόδους στις partial κλάσεις ... αν και αυτό μοιάζει μάλλον με το data access του φτωχού. Καλύτερη λύση είναι οι διάφοροι code generators ή κάποια προϊόντα (που κακώς λέγονται ORM), τα οποία δημιουργούν αντικείμενα από τους πίνακες της βάσης. Το CSLA.NET ανήκει σε αυτή την κατηγορία.

    Από την άλλη, όταν διαβάζουμε lookup data, ή δημιουργούμε reports, δεν υπάρχει λόγος να χρησιμοποιήσουμε τους ίδιους μηχανισμούς. Εδώ αρκεί η απευθείας κλήση κάποιων stored procedures ή η χρήση typed datasets για να κάνουμε τη δουλειά μας. Δεν σημαίνει ότι επειδή χρησιμοποιούμε ένα ORM για το domain model μας θα πρέπει να το χρησιμοποιήσουμε και για τα lookup data. Είπαμε, διαφορετικά πράγματα χρειάζονται διαφορετικές λύσεις.

    Και μετά έρχεται η σύνδεση μεταξύ των υποσυστημάτων, το deployment σε διάφορους server, η ασφάλεια, κλπ, κλπ, κλπ. Και φυσικά, μπαίνουν και παράγοντες που δεν έχουν να κάνουν με τεχνικές, όπως η απόφαση χρήσης framework ή η δημιουργία νέου από το μηδέν. Μπορεί κάποια εταιρεία να θέλει να περιορίσει την εξάρτηση της από προμηθευτές, ή μπορεί να πάσχει από ανίατη μορφή του συνδρόμου Not-Invented-Here. Ή μπορεί το επίπεδο των προγραμματιστών σε μία εταιρεία να μην είναι πολύ καλό, με αποτέλεσμα να μην μπορεί να εκμεταλλευτεί τις πιο περίπλοκες λύσεις.

    Μπορεί τέλος μία εταιρεία να προτιμάει την γρήγορη ανάπτυξη παρά τις ευέλικτες λύσεις. Κλασσικό παράδειγμα είναι οι εφαρμογές που ζητούνται από το IT τμήμα μιας εταιρείας. Είναι προτιμότερη μία κάπως πρόχειρη εφαρμογή που θα μπορεί να χρησιμοποιηθεί σε ένα μήνα, παρά μία καλύτερη που θα είναι έτοιμη σε τρεις ή έξι μήνες. Αντίθετα, σε ένα ISV ή μία εταιρεία που κάνει custom development, είναι προτιμότερο να γίνει σωστά μία εφαρμογή σε έξι μήνες παρά μία πρόχειρη δουλειά σε 2 μήνες, η οποία μετά θα χρειαστεί άλλους έξι μήνες μέχρι να γίνει αποδεκτή από τον πελάτη. (Το ότι πολλές εταιρείες ISV φέρονται σαν να είναι IT τμήματα, είναι άλλη κουβέντα).


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  21-10-2006, 00:38 18942 σε απάντηση της 18935

    Απ: Επιλέγοντας αρχιτεκτονική

    Και για όσους βαρέθηκαν όλο αυτό το μακρινάρι...

    Κοιτάζω τί πρέπει να κάνω, τί χρειάζομαι για να το κάνω, τί επιλογές έχω για να το κάνω και τί περιορισμούς έχω.

    Δεν λέω και τίποτε καινούριο βέβαια. Κοινή λογική για όλους τους μηχανικούς από την εποχή του ... Stonehedge.


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
Σελίδα 1 από 3 (32 εγγραφές)   1 2 3 >
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems