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

 

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

Σκέψεις για το SCSF (CAB)

Îåêßíçóå áðü ôï ìÝëïò George Parissis. Τελευταία δημοσίευση από το μέλος George Parissis στις 12-08-2011, 19:20. Υπάρχουν 7 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  11-08-2011, 22:49 66806

    Σκέψεις για το SCSF (CAB)

    Μπορώ να πω ότι είμαι fun του CAB (Composite Application Block) ή διαφορετικά SCSF (Smart Client Software Factory).

    Ακόμα και τώρα το χρησιμοποιώ στα Projects μου και φυσικά μετά από τόσα χρόνια και με πρόσβαση στον πηγαίο κώδικα έχω προσθέσει και δικά μου Workspaces και UI Strategies.

    Αναρωτιέμαι όμως γιατί δεν εξελίσσεται πλέον. Το Acropolis που ήταν η συνέχεια θάφτηκε, Τα Winforms θα παραμείνουν ακόμα για πολλά χρόνια μέχρι να τα σαρώσει όλα η νέα πρόταση που λέγεται WPF. Γιατί λοιπόν αφέθηκε στην τύχη του ένα τόσο ωραίο Framework.

    Ο μηχανισμός Event είναι πολύ καλύτερος από του ίδιου του .Net Framework, IoC είχε από την πρώτη έκδοση και που δεν έγινε τόσος χαμός όσο αργότερα όταν βγήκαν τα σχετικά Frameworks, το Command Pattern υλοποιείτε τόσο ωραία και απλά και όμως το σταματήσανε. Με το CAB μπορούσα να φτιάξω ότι UI ήθελα, όσο δύσκολο και αν ήταν χωρίς να προβληματίζομαι ιδιαίτερα ότι ακριβώς υποσχόταν.

    Δεν βλέπω πουθενά να εισάγεται η λογική του CAB σε κάποια νέα τεχνολογία όπως μας έχουν πει. Θα μπορούσα να πω ότι το WPF έχει κάποια στοιχεία αλλά για Winforms τίποτα.

    Τελικά νομίζω πως είναι άλλη μία λάθος απόφαση και θάβουν ένα τόσο ωραίο UI Framework. Αντι αυτού η Enterprise Library εξελίσσεται κανονικά λες και δεν υπήρχε λόγος να σταματήσει το Data Access Application Block τώρα με το Linq στην μέση.

    Αν και υπάρχουν Recipes για το 2010 δεν ξέρω αν θα βγάλουν για την επόμενη έκδοση του VS. Κρίμα αν δεν βγάλουν.

  •  11-08-2011, 23:02 66807 σε απάντηση της 66806

    Απ: Σκέψεις για το SCSF (CAB)

    To SCSF ΔΕΝ είναι το ίδιο πράγμα με το CAB. Και τα δύο είναι παλιά framework τα οποία προέρχονται από το Patterns & Practices, από τα οποία το CAB εμφανίστηκε πρώτο και το SCSF εμφανίστηκε μετά ως ένα "factory" (σετ από wizards, automation, οδηγίες) για τη δημιουργία εφαρμογών που θα βασίζονται στο CAB. Παρότι το CAB είχε πολλές καλές ιδέες, ήταν εξαιρετικά περίπλοκο και αυτό δεν μπορούσε να κουκουλωθεί από κανένα automation. Όταν βγήκε το WPF το SCSF και το CAB εγκαταλείφθηκαν και δημιουργήθηκε το PRISM.

    Όσο για το γιατί δεν εξελίσσονται? Από καθαρά τεχνικής πλευράς, ήταν ΠΟΛΥ περίπλοκα και βασίζονταν στις ιδέες που υπήρχαν το 2005 για το πως πρέπει να φτιαχτεί μία εφαρμογή. Το NHibernate μόλις είχε βγει ενώ το LINQ ή το EF υπήρχαν μόνο ως ιδέες.

    Από την άλλη, το Patterns & Practices ΔΕΝ βγάζει βιβλιοθήκες ή frameworks με υποστήριξη. Βγάζει guides ή παραδείγματα "ως έχουν" και δεν δεσμεύεται να συνεχίσει την ανάπτυξη τους ή να διατηρεί το backwards compatibility από τη μία έκδοση στην επόμενη. Αυτό είναι και ένα από τα μεγαλύτερα προβλήματα στη χρήση των frameworks του P&P - η χρήση τους είναι "as-is" και η ευθύνη καθαρά του προγραμματιστή.

    Ακόμα και το PRISM όμως είναι αρκετά πιο περίπλοκο αν το συγκρίνεις με σύγχρονα frameworks όπως το MVVM Light και το Caliburn.Micro.


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  11-08-2011, 23:35 66808 σε απάντηση της 66807

    Απ: Σκέψεις για το SCSF (CAB)

    Θα διαφωνήσω μαζί σου στο δεν είναι. Το SCSF είναι ένα extension του CAB. Αντί να κάθεται ο προγραμματιστής και να φτιάχνει classes τις οποίες μετά θα πρέπει να κάνει inherit και implement υπάρχουν έτοιμα recipes που με εντολές στο UI του VS εκτελούνται και το φτιάχνουν για τον χρήστη. Το SCSF δουλεύει επάνω στο CAB δεν μπορεί να υπάρχει από μόνο του. Ουσιαστικά SCSF έχουν ονομάσει αυτά τα recipes. Για το λόγο αυτό σε πολλά sites στο internet θα δεις να αναφέρουν σκέτο το SCSF γιατί το CAB εννοείτε.

    Το ερώτημα όμως δεν είναι αυτό. Καταλαβαίνω ότι το CAB είχε μία δυσκολία στο να το μάθει κανείς, ίσως γιατί έβλεπε την όλοι διαδικασία δημιουργίας από διαφορετικό ματιά, Workitems, Workspaces κτλ από εκεί και μετά όμως μόνο περίπλοκο δεν θα το έλεγες. Χώρισε την εφαρμογή σου σε λογικά τμήματα και ονόμασέ τα workitems, δημιούργησε τα views που θέλεις και ονόμασε τα workspaces.

    Όσο για το το τελευταίο σχετικά με το P&P συμφωνώ στο ότι δεν δεσμεύεται, όμως το Enterprise Library το αναπτύσει ακόμα, τελευταία έκδοση 2010, στο codeplex απαντήσεις στα ερωτήματα δίνει η ίδια η ομάδα του P&P που αυτό κατά την γνώμη μου έχει μέσα και την λογική υποστηρίζω. Όπως και να έχει δικαίωμά τους, το έκαναν, μας το έδειξαν, μας άρεσε και μετά...

    Για τα δύο Frameworks που ανέφερες δεν τα γνωρίζω, αλλά αν θυμάμαι καλά το Caliburn.Micro δεν είναι για WPF; Μόλις τελειώσω το project που έχω θα ασχοληθώ με WPF οπότε σίγουρα θα μπω στην διαδικασία να βρω κάτι.

  •  12-08-2011, 15:37 66810 σε απάντηση της 66808

    Απ: Σκέψεις για το SCSF (CAB)

    Δεν λές κάτι διαφορετικό από αυτά που είπα ήδη όσον αφορά τη σχέση CAB και SCSF. Η ανάπτυξη framework όμως για WinForms έχει σταματήσει. Πολύ απλά τέρμα. Η συνέχεια στο WPF και στο Silverlight. Πολλές από τις δυνατότητες που αναφέρεις (commands, eventing) υποστηρίζονται πλέον από το WPF ή το Silverlight το ίδιο, χωρίς την ανάγκη χρήσης επιπλέον framework.

    Η πραγματική χρησιμότητα του CAB ήταν ότι επέτρεπε την "ευκολότερη" δημιουργία composite εφαρμογών, εφαρμογών δηλαδή που αποτελούνταν από σχετικά ανεξάρτητα κάθετα modules. Διαφορετικά δεν διευκόλυνε ιδιαίτερα τη δημιουργία UI, ίσα-ίσα την έκανε αρκετά πιο περίπλοκη, ειδικά όταν απευθυνόταν σε ομάδες που δεν είχαν προηγούμενη εμπειρία με αυτό. Εκείνη την εποχή όμως, απλά δεν υπήρχε κανένα άλλο framework για δημιουργία WinForms εφαρμογών (όχι ότι τώρα υπάρχει).

    Έχω χρησιμοποιήσει το CAB και το SCSF από τις preview εκδόσεις, όπως έχω χρησιμοποιήσει και το Prism και το Caliburn.Micro. Η πολυπλοκότητα του CAB είναι πολύ μεγαλύτερη από τα οφέλη, ειδικά αν ΔΕΝ χρειάζεσαι απαραίτητα να φτιάξεις composite εφαρμογή. Ακόμα και αν φτιάχνεις composite εφαρμογή, στην οποία διαφορετικά άτομα θα αναπτύξουν διαφορετικά κάθετα modules, είναι ευκολότερο να δουλέψεις με κάποιο άλλο framework.

    Το ουσιαστικό πρόβλημα ήταν ότι το CAB και το SCSF τελικά προσπαθούσαν να καλύψουν πάρα πολλές ανάγκες ταυτόχρονα με αποτέλεσμα να είναι εξαιρετικά overengineered. Ναι, μπορούσες να επέμβεις σε οποιοδήποτε σημείο, αλλά ακόμα και απλά πράγματα ήθελαν τη δημιουργία αρκετού κώδικα.

    Όπως και να έχει, το CAB και το SCSF είναι ιστορία. Οι λόγοι που εγκαταλείφθηκαν ήταν ακριβώς η μεγάλη πολυπλοκότητα και ότι τα πιο χρήσιμα χαρακτηριστικά τους τώρα παρέχονται από την ίδια την πλατφόρμα. Οι εξελίξεις στα desktop frameworks αυτό τον καιρό είναι σε WPF, Silverlight και Windows Phone.


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  12-08-2011, 17:29 66812 σε απάντηση της 66810

    Απ: Σκέψεις για το SCSF (CAB)

    Υπαρχουν frameworks για όλα τα παραπάνω, εκτός του Windows Phone και πολλά μάλιστα, ModelSoft S-*, MXFrame, Ideablade DevForce, XAF κλπ.. Το καθένα με τα δικά του καλούδια και τις δικές του ιδιαιτερότητες. Και όχι δεν είναι code generators.
    Παναγιώτης Κεφαλίδης

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

    Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Παρακαλώ διαβάστε τους όρους χρήσης.
  •  12-08-2011, 17:49 66813 σε απάντηση της 66812

    Απ: Σκέψεις για το SCSF (CAB)

    Το DevForce και το XAF ανήκουν σε εντελώς διαφορετική κατηγορία, τα model-driven frameworks. Μάλιστα, οι πρώτες εκδόσεις του DevForce αν θυμάμαι καλά βασίζονταν στο CAB για το shell και την επικοινωνία μεταξύ των διαφόρων οθονών.

    Είναι πολύ σημαντικό όταν μιλάει κανείς για framework να προσδιορίζει για τί θέλει να το χρησιμοποιήσει. Διαφορετικά είναι πολύ εύκολο να χρησιμοποιήσεις λάθος framework για λάθος δουλειά. Για παράδειγμα, η έννοια των Workspaces και WorkItems στο CAB μπορούσε να χρησιμοποιηθεί σε ένα model-driven περιβάλλον για να υποστηρίξει την εκτέλεση διαφορετικών use cases. Το CAB όμως δεν προσέφερε καμμία άλλη υποστήριξη για model-driven ανάπτυξη ή ευκολότερη δημιουργεία του UI και απαιτούσε αρκετή δουλειά στην υλοποίηση του shell και των modules. Από την άλλη, ένα οποιοδήποτε scaffolding framework δημιουργεί "αυτόματα" το UI ενώ κάποια παρέχουν και υποστήριξη state machines και workflows για την περιγραφή του business functionality.

    Αυτή τη στιγμή έχουμε μιλήσει για Composite App frameworks, Model-Driven frameworks, Scaffolding frameworks. Η κάθε κατηγορία λύνει διαφορετικά προβλήματα και μπορεί άνετα στην ίδια εφαρμογή να χρησιμοποιηθούν και οι τρεις κατηγορίες. Χρειάζεται προσοχή όμως να μη χρησιμοποιήσει κάποιος framework της μίας κατηγορίας για να λύσει προβλήματα που αφορούν μία άλλη. Διαφορετικά θα είναι σα να προσπαθεί κανείς να καρφώσει βίδα με πριόνι.


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  12-08-2011, 18:16 66814 σε απάντηση της 66813

    Απ: Σκέψεις για το SCSF (CAB)

    Συμφωνώ σε όλα Παναγιώτη, γι'αυτό και αναφερόμουν "καθαρά" στο κομμάτι "δεν υπάρχουν frameworks" που έθιξες πιο πριν..
    Παναγιώτης Κεφαλίδης

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

    Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Παρακαλώ διαβάστε τους όρους χρήσης.
  •  12-08-2011, 19:20 66817 σε απάντηση της 66810

    Απ: Σκέψεις για το SCSF (CAB)

    Παναγιώτης Καναβός:

    Η πραγματική χρησιμότητα του CAB ήταν ότι επέτρεπε την "ευκολότερη" δημιουργία composite εφαρμογών, εφαρμογών δηλαδή που αποτελούνταν από σχετικά ανεξάρτητα κάθετα modules. Διαφορετικά δεν διευκόλυνε ιδιαίτερα τη δημιουργία UI, ίσα-ίσα την έκανε αρκετά πιο περίπλοκη, ειδικά όταν απευθυνόταν σε ομάδες που δεν είχαν προηγούμενη εμπειρία με αυτό. Εκείνη την εποχή όμως, απλά δεν υπήρχε κανένα άλλο framework για δημιουργία WinForms εφαρμογών (όχι ότι τώρα υπάρχει).

    Έχω χρησιμοποιήσει το CAB και το SCSF από τις preview εκδόσεις, όπως έχω χρησιμοποιήσει και το Prism και το Caliburn.Micro. Η πολυπλοκότητα του CAB είναι πολύ μεγαλύτερη από τα οφέλη, ειδικά αν ΔΕΝ χρειάζεσαι απαραίτητα να φτιάξεις composite εφαρμογή. Ακόμα και αν φτιάχνεις composite εφαρμογή, στην οποία διαφορετικά άτομα θα αναπτύξουν διαφορετικά κάθετα modules, είναι ευκολότερο να δουλέψεις με κάποιο άλλο framework.

    Φαίνεται από αυτά που γράφεις ότι έχεις χρησιμοποιήσει και άλλα Frameworks όμως αν δεν κάνω λάθος το Prism & το Caliburn.Micro δεν είναι αποκλειστικά για WPF; Ίσως η νέα αρχιτεκτονική του WPF να επιτρέπει την απλούστερη σχεδίαση Composite Frameworks και είναι frameworks που ανυπομονώ να δω όταν θα αρχίσω να δουλεύω με WPF. Για Winforms όμως ρωτάω και ενδιαφέρομαι. Ίσως να πρέπει να μείνω σε αυτό που έβαλες στην παρένθεση ότι δεν υπάρχει;

    Με ενδιαφέρει πολύ το Composite Development στην φάση αυτή γιατί τα δύο από τα μεγαλύτερα προγράμματα που έχω φτιάξει κάνουν χρήση αυτής της τεχνικής δημιουργίας UI. Το ένα αφορά μία υπηρεσία όπου για το κάθε τμήμα της υπάρχει και ξεχωριστό module οπότε να μπορεί δυναμικά ένας χρήστης να μπορεί να βλέπει από το ίδιο shell modules διαφορετικών τμημάτων οπότε και πληροφορίες για το συγκεκριμένο άτομο από διαφορετικές πηγές και η δεύτερη είναι μία εφαρμογή για την οποία έχω φτιάξει έξτρα modules και οι πελάτες αγοράζουν για να κουμπώσουν στην κύρια εφαρμογή που έχουν ήδη πάρει. Με την χρήση του CAB μπορώ να λύσω εύκολα τις παραπάνω απαιτήσεις. Αν υπάρχει κάποιο άλλο framework εκεί έξω και θα έχει συνέχεια με χαρά να το δω, δεν είμαι απαραίτητα κολλημένος με CAB αλλά δεν βρήκα. Οπότε διακρίνω ένα κενό στο κομμάτι αυτό για Winforms και για αυτό ένας λόγος παραπάνω που αναρωτιέμαι γιατί σταμάτησε η συνέχεια του CAB ενώ για το Enterprise Library που υπάρχουν εναλλακτικές συνεχίζεται.

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