Καταρχήν ο χαρακτηρισμός "εύκολο" ή "δύσκολο" είναι υποκειμενικός και θα αποφύγω να πώ ότι είναι το ένα ή το άλλο, ωστόσο ας δούμε αυτά που λες μιας και πρόσφατα άρχισα να το κοιτάω κι εγώ.
Underwater:να περιορίσει κανείς την περιπλοκότητα όταν γράφει μεγάλες εφαρμογές.
Αυτό είναι σωστό ανάλογα με το τι εννοείς "περιπλοκότητα". Συνήθως οι μεγάλες εφαρμογές έχουν πολλά "components" που αλληλεπιδρούν. Το Prism σου δίνει τον τρόπο ώστε χρησιμοποιώντας τις συμβάσεις του, να μπορείς να γράψεις τα components αυτά (modules κατά το Prism) χωρίς να εξαρτάται το ένα από ο άλλο. Αυτό συνεπάγεται πιο συντηρήσιμο κώδικα, testability, κλπ.
Underwater:Οταν φτιάχνω πολλά WPF User Controls που είναι μέσα σε ένα WPF Window (dashboard), το handling των events γινεται κάπως περίπλοκο. Όποτε η λύση που προτείνεται είναι ένα framework όπου υπάρχει ένα SHELL που κάνει manage όλα τα άλλα modules (Composite View Pattern). Τα modules (views) δεν ξέρουν πως φορτώνονται, και ποια αλλα modules είναι στο dashboard.
Το shell δεν προτείνεται ως απάντηση στην πολυπλοκότητα αλλά είναι μία από αυτές τις συμβάσεις που ανέφερα προηγουμένως. Είναι κάτι "εκ των ουκ άνευ" αφού έτσι κι αλλιώς θα οργανώσεις την εφαρμογή σε modules. Κάπως θα πρέπει να οργανώνονται αυτά. Από εκεί και πέρα, αν ένα module αποτελείται από πολλά user controls και γίνεται υπεροβολικά περίπλοκο, το Prism δεν μπορεί να σε βοηθήσει εκεί παρά μόνο αν σπάσεις αυτό το module σε άλλα μικρότερα.
Underwater:Μέχρι εδώ, η θεωρία είναι καθαρή και την καταλαβαίνω. Όμως τα άρθρα που έχω δει (including τα “Getting Started”) αναφέρονται σε ακόμα άλλα patterns, frameworks οπως, Unity Application Block, Managed Extensibility Framework, Inversion of Control and Dependency Injection, και δεν ξέρω τι άλλο .....
Αναφέρονται σε άλλα patterns γιατί το ίδιο το Prism έχει υλοποιηθεί με χρήση patterns και γι αυτό αναφέρονται συχνά. Για κάποιον που τα γνωρίζει είναι πιο εύκολο να αντιληφθεί το πώς δουλεύει. Από εκεί και πέρα κάποια άλλα patterns είναι πολύ βασικά και μάλιστα έχουν τον ίδιο στόχο με το Prism, το να γράφει κανείς σωστό κώδικα, εύκολο στη συντήρηση, στις αλλαγές, κλπ, κλπ. Άρα λοιπόν εννοείται ότι πριν πας στο Prism θα πρέπει να έχεις κάποιες βασικές γνώσεις γι αυτά.
Underwater:Βασικά ήθελα να μάθω εάν το PRISM είναι αποκλείστηκα για τους “advanced” developers που είναι αρκετά γνώστες των design patterns κλπ, η αξίζει να το κοιτάμε και εμείς που δεν είμαστε και τόσο προχωρημένοι?
Σαφώς δεν είναι για τους "advanced" developers αλλά έχει και κάποιο learning curve. Χρειάζεται το διάβασμά του αλλά θα βγάλεις άκρη. Ψάξε τι είναι αυτά που δεν γνωρίζεις καθώς τα συναντάς και επέστρεψε πάλι στο Prism όταν τα έχεις αποσαφηνίσει. Όπως και να έχει, θα γίνεις καλύτερος developer μέσα από αυτή τη διαδικασία.
Vir prudens non contra ventum mingit