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

 

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

CSLA Framework

Îåêßíçóå áðü ôï ìÝëïò Dimitris Papadimitriou. Τελευταία δημοσίευση από το μέλος Grigoris στις 16-04-2008, 15:53. Υπάρχουν 5 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  19-03-2008, 16:36 40984

    CSLA Framework

    Καλησπέρα,

    Διαβάζω αυτή την περίοδο ένα βιβλίο για το CSLA Framework. Έχω εντοπίσει διάφορα όμορφα πράγματα σε αυτό, και κάποια που δεν με ενθουσιάζουν, αν και κατανοώ γιατί ο δημιουργός του οδηγήθηκε σε αυτές τις επιλογές.

    Υπάρχουν γνώμες γι αυτό το framework; Θα είχε ιδιαίτερο ενδιαφέρον να ακούγαμε τις απόψεις ανθρώπων που το έχουν χρησιμοποιήσει σε πραγματικά projects. 


    Dimitris Papadimitriou
    Software Development Professional
    dotNETZone.gr News

    Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Διαβάστε επίσης τους όρους χρήσης.
  •  19-03-2008, 16:58 40987 σε απάντηση της 40984

    Απ: CSLA Framework

    Δημήτρη,

    Έχω δοκιμάσει τα περισσότερα frameworks που προσφέρουν την δυνατότητα να χρησιμοποιήσεις objects αντί Datasets.
    Μάλιστα αντάλλαξα μερικά emails με τον Rockford Lhotka παλιότερα, γιατί είχα ερωτήσεις. Είναι πολύ ωραίος τύπος.

    Το framework είναι αρκετά ώριμο και προσφέρει πολλά features. Το δουλέυουν μεγάλες εταιρίες σε enterprise size applications.

    Εκτός τα βασικά πλεονεκτήματα που έχει ως framework για να κατασκευάσεις custom classes, για μένα αυτά είναι τα στοιχεία που το προτίιμησα τότε,
    καθώς και οι λόγοι που το παράτησα:

    Pros:
    • Undo functionality
    • Good inheritance and polymorphism
    • Είναι φτιαγμένο για enterprise level applications.
    • Performance
    Cons:
    • Προσωπικά δεν μου αρέσει να έχω το data retreival logic στα custom classes μου.
      Αυτό για μένα είταν και ο λόγος που το παράτησα (δεν χέρω αν έχει αλλάξει αυτό σε τελευταία versions).
    • Επίσης το factory pattern που χρησιμοποιεί, μερικές φορές μου δημιουργούσε πρόβλημα.
    • Είναι πολύπλοκο και απαγορευτικό για μικρές και απλές εφαρμογές.

    Τώρα χρησιμοποιώ code generators για να κατασκευάσω custom classes.
    Επίσης αρχίζω όλο και πιο πολυ να χρησιμοποιώ LINQ, που μοu δίνει την δυνατότητα να χρειάζομαι όλο και πιο λίγα custom classes για να μεταφέρω data μεταξύ tiers.

    My 2 cents.


    Στέφανος
    New Yorker
  •  20-03-2008, 00:25 41009 σε απάντηση της 40984

    Απ: CSLA Framework

    Χρησιμοποίησα CSLA.NET σε κάποιο project Και δεν μπορώ να πω ότι χάρηκα. H CSLA αναπτύχθηκε ως Business Objects για VB6 το 1997 και εξακολουθεί να έχει την ίδια δομή και περιορισμούς. Ακόμα και στη μορφή της για C# προσπαθεί να μιμηθεί την VB6. Στο αρχείο CSLA\Utilites.cs θα βρεις το παρακάτω μαργαριτάρι:

    /// <summary>
    /// Valid options for calling a property or method
    /// via the <see cref="Csla.Utilities.CallByName"/> method.
    /// </summary>
    public enum CallType
    {
    /// <summary>
    /// Gets a value from a property.
    /// </summary>
    Get,
    /// <summary>
    /// Sets a value into a property.
    /// </summary>
    Let,
    /// <summary>
    /// Invokes a method.
    /// </summary>
    Method,
    /// <summary>
    /// Sets a value into a property.
    /// </summary>
    Set
    }

    Και αυτό εν έτη 2008. Πέρα από αυτό, η CSLA.NET είναι χαρακτηριστική των αρχιτεκτονικών εκείνης της περιόδου, όταν νομίζαμε ότι το location transparency ήταν καλή ιδέα και ιδέες όπως το separation of concerns και modularity δεν είχαν ακόμα λαβει τη σημερινή τους μορφή. Παρόμοιες τεχνικές χρησιμοποιούσαν και οι πρώτες εφαρμογές J2EE πρωτού καταλάβουμε δεν ήταν scalable. Μερικά παραδείγματα:

    • Τα αντικείμενα της μεθόδου είναι βαριά και περιλαμβάνουν proxy κώδικα που προσπαθεί να κρύψει το αν η επεξεργασία γίνεται στο desktop ή στον client. Αυτό όμως δένει τα αντικείμενα του client με αυτά του server. Ουσιαστικά, και στον client και στον server εκτελείται η ίδια κλάση.
      Η αρχιτεκτονική αυτή είναι σχεδόν η αντίθεση των web services και του message passing.
    • Τα διάφορα services όπως persistence, validation, binding, property change notifications, history/undo κλπ είναι δεμένα το ένα με το άλλο μέσω inheritance, με αποτέλεσμα να μην μπορείς να χρησιμοποιήσεις μόνο τα services που χρειάζεσαι Π.χ. το BusinessBase κληρονομεί από το UndoableBase αυτό από το BindableBase το οποίο περιέχει και τα property change notifications. Αν θέλεις να χρησιμοποιήσεις μόνο κάποια στοιχεία, ή να χρησιμοποιήσεις π.χ. το Validation block του Enterprise Library αντί για του CSLA, έχασες.
      Γενικά, το CSLA είναι σχεδόν η αντίθεση του Aspect-oriented programming. Επειδή δένει πράγματα που στην πραγματικότητα είναι διαφορετικά aspects (πχ. undo και binding) κάνει πολύ δύσκολη την τροποποίηση του αν θέλεις να χρησιμοποιήσεις κάποιο διαφορετικό μηχανισμό από αυτόν που σου δίνει.
    • Το Validation γίνεται ορίζοντας με κώδικα μία σειρά από delegates που θα πρέπει να κληθούν όταν αλλάζει ένα property. Αυτό όμως έχει πολλά προβλήματα: κατά κανόνα δεν ισχύουν τα ίδια validations και στον client και στον server, η αλλαγή των rules απαιτεί recompile των αντικειμένων και ουσιαστικά σχεδόν ολόκληρου του project, δεν είναι δυνατός ο ορισμός κανόνων εκτός των αντικειμένων π.χ. στον client. Αν ένα rule αφορά πολλαπλά properties, το rule πρέπει να δηλωθεί για κάθε property.
    • Ο κώδικας δεν εκμεταλλεύεται τις δυνατότητες του Framework. Το παράδειγμα με τα Get, Let, Set είναι ίσως η χειρότερη περίπτωση, αλλά βλέπω ότι ακόμα και στην έκδοση για .NET 3.5 τα validation rules ΔΕΝ έχουν αντικατασταθεί από lamdas, αλλά εξακολουθούν να έχουν την ίδια χονδροειδή υλοποίηση.

    Γενικά, δεν έμεινα ικανοποιημένος από την CSLA.NET. Προσπαθεί να καλύψει όλα τα επίπεδα μίας εφαρμογής, από τον client μέχρι τη βάση, αλλά το κάνει χρησιμοποιώντας τεχνικές της προηγούμενης δεκαετίας.


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  28-03-2008, 21:08 41195 σε απάντηση της 41009

    Απ: CSLA Framework

    FYI.

    O Rocky ετοίμασε ένα podcast για το CLSA.Net, LINQ και data access.

    http://www.hanselman.com/blog/HanselminutesPodcast105RockyLhotkaOnDataAccessManiaLINQAndCSLANET.aspx
    Στέφανος
    New Yorker
  •  28-03-2008, 22:58 41196 σε απάντηση της 41195

    Απ: CSLA Framework

    Για την ακρίβεια είναι μια συζήτηση μεταξύ του Scot Hanselman και του Rocky Lhotka, δημιουργού του CSLA.

    Την άκουσα με προσοχή, μετά από την υπόδειξη του newyorker και έχει ενδιαφέρον.  


    Dimitris Papadimitriou
    Software Development Professional
    dotNETZone.gr News

    Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Διαβάστε επίσης τους όρους χρήσης.
  •  16-04-2008, 15:53 41562 σε απάντηση της 41196

    Απ: CSLA Framework

    Έχω χρησιμοποιήσει το CSLA σε αρκετά project και το βρίσκω αρκετά ενδιαφέρον και χρήσιμο. Φυσικά κανένα framework δεν προσφέρει τα πάντα. Πάντως είναι δοκιμασμένο και με αρκετή υποστήριξη κάτι ασυνήθιστο για free framework. Προσωπικά δεν ξέρω άλλο, που να εστιάζει στα business object στο βαθμό που κάνει το CSLA.

    Mr. Καναβος – υποθέτω ότι στο δικό σου κώδικα δεν θα δούμε

    if then else που είναι κάτι που γράφτηκε για την ALGOL το 1968  J

    Αν είναι δυνατών αυτά να υπάρχουν στη C#. J

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