<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://www.dotnetzone.gr:443/cs/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Design &amp; Architecture</title><link>https://www.dotnetzone.gr:443/cs/forums/16/ShowForum.aspx</link><description>Θέματα αρχιτεκτονικής και σχεδιασμού εφαρμογών (design patterns, object orientation, κ.α.)</description><dc:language>el</dc:language><generator>CommunityServer 2.1 SP3 (Build: 20423.1)</generator><item><title>Απ: CSLA Framework</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/41562.aspx</link><pubDate>Wed, 16 Apr 2008 22:53:35 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:41562</guid><dc:creator>Grigoris</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/41562.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=16&amp;PostID=41562</wfw:commentRss><description>&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;FONT size=3&gt;&lt;FONT face="Times New Roman"&gt;&lt;SPAN style="mso-ansi-language:EL;"&gt;Έχω χρησιμοποιήσει το &lt;/SPAN&gt;&lt;SPAN style="mso-ansi-language:EN-US;"&gt;CSLA&lt;/SPAN&gt;&lt;SPAN style="mso-ansi-language:EL;"&gt; &lt;/SPAN&gt;&lt;SPAN style="mso-ansi-language:EL;"&gt;σε αρκετά &lt;/SPAN&gt;&lt;SPAN style="mso-ansi-language:EN-US;"&gt;project&lt;/SPAN&gt;&lt;SPAN style="mso-ansi-language:EL;"&gt; &lt;/SPAN&gt;&lt;SPAN style="mso-ansi-language:EL;"&gt;και το βρίσκω αρκετά ενδιαφέρον και χρήσιμο. Φυσικά κανένα &lt;/SPAN&gt;&lt;SPAN style="mso-ansi-language:EN-US;"&gt;framework&lt;/SPAN&gt;&lt;SPAN style="mso-ansi-language:EL;"&gt; &lt;/SPAN&gt;&lt;SPAN style="mso-ansi-language:EL;"&gt;δεν προσφέρει τα πάντα. Πάντως είναι δοκιμασμένο και με αρκετή υποστήριξη κάτι ασυνήθιστο για &lt;/SPAN&gt;&lt;SPAN style="mso-ansi-language:EN-US;"&gt;free&lt;/SPAN&gt;&lt;SPAN style="mso-ansi-language:EL;"&gt; &lt;/SPAN&gt;&lt;SPAN style="mso-ansi-language:EN-US;"&gt;framework&lt;/SPAN&gt;&lt;SPAN style="mso-ansi-language:EL;"&gt;. Προσωπικά δεν ξέρω άλλο, που να εστιάζει στα &lt;/SPAN&gt;&lt;SPAN style="mso-ansi-language:EN-US;"&gt;business&lt;/SPAN&gt;&lt;SPAN style="mso-ansi-language:EL;"&gt; &lt;/SPAN&gt;&lt;SPAN style="mso-ansi-language:EN-US;"&gt;object&lt;/SPAN&gt;&lt;SPAN style="mso-ansi-language:EL;"&gt; &lt;/SPAN&gt;&lt;SPAN style="mso-ansi-language:EL;"&gt;στο βαθμό που κάνει το &lt;/SPAN&gt;&lt;SPAN style="mso-ansi-language:EN-US;"&gt;CSLA&lt;/SPAN&gt;&lt;SPAN style="mso-ansi-language:EL;"&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;FONT size=3&gt;&lt;FONT face="Times New Roman"&gt;&lt;SPAN style="mso-ansi-language:EN-US;"&gt;Mr.&lt;/SPAN&gt;&lt;SPAN style="mso-ansi-language:EL;"&gt; Καναβος – υποθέτω ότι στο δικό σου κώδικα δεν θα δούμε&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;FONT size=3&gt;&lt;FONT face="Times New Roman"&gt;&lt;SPAN style="mso-ansi-language:EN-US;"&gt;if&lt;/SPAN&gt;&lt;SPAN style="mso-ansi-language:EL;"&gt; &lt;/SPAN&gt;&lt;SPAN style="mso-ansi-language:EN-US;"&gt;then&lt;/SPAN&gt;&lt;SPAN style="mso-ansi-language:EL;"&gt; &lt;/SPAN&gt;&lt;SPAN style="mso-ansi-language:EN-US;"&gt;else&lt;/SPAN&gt;&lt;SPAN style="mso-ansi-language:EL;"&gt; &lt;/SPAN&gt;&lt;SPAN style="mso-ansi-language:EL;"&gt;που είναι κάτι που γράφτηκε για την &lt;/SPAN&gt;&lt;SPAN style="mso-ansi-language:EN-US;"&gt;ALGOL&lt;/SPAN&gt;&lt;SPAN style="mso-ansi-language:EL;"&gt; &lt;/SPAN&gt;&lt;SPAN style="mso-ansi-language:EL;"&gt;το 1968 &lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style="FONT-FAMILY:Wingdings;mso-ansi-language:EN-US;mso-ascii-font-family:'Times New Roman';mso-hansi-font-family:'Times New Roman';mso-char-type:symbol;mso-symbol-font-family:Wingdings;"&gt;&lt;SPAN style="mso-char-type:symbol;mso-symbol-font-family:Wingdings;"&gt;J&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="mso-ansi-language:EL;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;FONT size=3&gt;&lt;FONT face="Times New Roman"&gt;&lt;SPAN style="mso-ansi-language:EL;"&gt;Αν είναι δυνατών αυτά να υπάρχουν στη &lt;/SPAN&gt;&lt;SPAN style="mso-ansi-language:EN-US;"&gt;C&lt;/SPAN&gt;&lt;SPAN style="mso-ansi-language:EL;"&gt;#. &lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style="FONT-FAMILY:Wingdings;mso-ansi-language:EN-US;mso-ascii-font-family:'Times New Roman';mso-hansi-font-family:'Times New Roman';mso-char-type:symbol;mso-symbol-font-family:Wingdings;"&gt;&lt;SPAN style="mso-char-type:symbol;mso-symbol-font-family:Wingdings;"&gt;J&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style="mso-ansi-language:EN-US;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;</description></item><item><title>Απ: CSLA Framework</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/41196.aspx</link><pubDate>Sat, 29 Mar 2008 05:58:37 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:41196</guid><dc:creator>Dimitris Papadimitriou</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/41196.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=16&amp;PostID=41196</wfw:commentRss><description>&lt;p&gt;Για την ακρίβεια είναι μια συζήτηση μεταξύ του Scot Hanselman και του Rocky Lhotka, δημιουργού του CSLA.&lt;/p&gt;&lt;p&gt;Την άκουσα με προσοχή, μετά από την υπόδειξη του newyorker και έχει ενδιαφέρον.  &lt;/p&gt;</description></item><item><title>Απ: CSLA Framework</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/41195.aspx</link><pubDate>Sat, 29 Mar 2008 04:08:27 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:41195</guid><dc:creator>New Yorker</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/41195.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=16&amp;PostID=41195</wfw:commentRss><description>FYI.&lt;br&gt;&lt;br&gt;O Rocky ετοίμασε ένα podcast για το CLSA.Net, LINQ και data access.&lt;br&gt;&lt;br&gt;&lt;a href="http://www.hanselman.com/blog/HanselminutesPodcast105RockyLhotkaOnDataAccessManiaLINQAndCSLANET.aspx"&gt;http://www.hanselman.com/blog/HanselminutesPodcast105RockyLhotkaOnDataAccessManiaLINQAndCSLANET.aspx&lt;/a&gt;</description></item><item><title>Απ: CSLA Framework</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/41009.aspx</link><pubDate>Thu, 20 Mar 2008 07:25:24 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:41009</guid><dc:creator>Παναγιώτης Καναβός</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/41009.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=16&amp;PostID=41009</wfw:commentRss><description>&lt;P&gt;Χρησιμοποίησα CSLA.NET σε κάποιο project Και δεν μπορώ να πω ότι χάρηκα. H CSLA αναπτύχθηκε ως Business Objects για VB6 το 1997 και εξακολουθεί να έχει την ίδια δομή και περιορισμούς. Ακόμα και στη μορφή της για C# προσπαθεί να μιμηθεί την VB6. Στο αρχείο CSLA\Utilites.cs θα βρεις το παρακάτω μαργαριτάρι:&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:black;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:green;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;/// &amp;lt;summary&amp;gt;&lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:green;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;/// Valid options for calling a property or method&lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:green;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;/// via the &amp;lt;see cref="Csla.Utilities.CallByName"/&amp;gt; method.&lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:green;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;/// &amp;lt;/summary&amp;gt;&lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;public&lt;/SPAN&gt; &lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;enum&lt;/SPAN&gt; CallType&lt;BR&gt;{&lt;BR&gt;&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:green;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;/// &amp;lt;summary&amp;gt;&lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:green;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;/// Gets a value from a property.&lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:green;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;/// &amp;lt;/summary&amp;gt;&lt;/SPAN&gt;&lt;BR&gt;Get,&lt;BR&gt;&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:green;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;/// &amp;lt;summary&amp;gt;&lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:green;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;/// Sets a value into a property.&lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:green;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;/// &amp;lt;/summary&amp;gt;&lt;/SPAN&gt;&lt;BR&gt;Let,&lt;BR&gt;&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:green;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;/// &amp;lt;summary&amp;gt;&lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:green;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;/// Invokes a method.&lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:green;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;/// &amp;lt;/summary&amp;gt;&lt;/SPAN&gt;&lt;BR&gt;Method,&lt;BR&gt;&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:green;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;/// &amp;lt;summary&amp;gt;&lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:green;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;/// Sets a value into a property.&lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:green;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;/// &amp;lt;/summary&amp;gt;&lt;/SPAN&gt;&lt;BR&gt;Set&lt;BR&gt;}&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:black;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;&lt;FONT size=2 face=Tahoma&gt;Και αυτό εν έτη 2008. Πέρα από αυτό, η CSLA.NET είναι χαρακτηριστική των αρχιτεκτονικών εκείνης της περιόδου, όταν νομίζαμε ότι το location transparency ήταν καλή ιδέα και ιδέες όπως το separation of concerns και modularity δεν είχαν ακόμα λαβει τη σημερινή τους μορφή. Παρόμοιες τεχνικές χρησιμοποιούσαν και οι πρώτες εφαρμογές J2EE πρωτού καταλάβουμε δεν ήταν scalable. Μερικά παραδείγματα:&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:black;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;&lt;FONT size=2 face=Tahoma&gt;Τα αντικείμενα της μεθόδου είναι βαριά και περιλαμβάνουν proxy κώδικα που προσπαθεί να κρύψει το αν η επεξεργασία γίνεται στο desktop ή στον client. Αυτό όμως δένει τα αντικείμενα του client με αυτά του server. Ουσιαστικά, και στον client και στον server εκτελείται η ίδια κλάση.&lt;BR&gt;Η αρχιτεκτονική αυτή είναι σχεδόν η αντίθεση των web services και του message passing.&lt;BR&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:black;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;&lt;FONT size=2 face=Tahoma&gt;Τα διάφορα services όπως persistence, validation, binding, property change notifications, history/undo&amp;nbsp;κλπ είναι δεμένα το ένα με το άλλο μέσω inheritance, με αποτέλεσμα να μην μπορείς να χρησιμοποιήσεις μόνο τα services που χρειάζεσαι&amp;nbsp;Π.χ. το BusinessBase κληρονομεί από το UndoableBase αυτό από το BindableBase το οποίο περιέχει και τα property change notifications. Αν θέλεις να χρησιμοποιήσεις μόνο κάποια στοιχεία, ή να χρησιμοποιήσεις π.χ. το Validation block του Enterprise Library αντί για του CSLA, έχασες. &lt;BR&gt;Γενικά, το CSLA είναι σχεδόν η αντίθεση του Aspect-oriented programming. Επειδή δένει πράγματα που στην πραγματικότητα είναι διαφορετικά aspects (πχ. undo και binding) κάνει πολύ δύσκολη την τροποποίηση του αν θέλεις να χρησιμοποιήσεις κάποιο διαφορετικό μηχανισμό από αυτόν που σου δίνει.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:black;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;&lt;FONT size=2 face=Tahoma&gt;Το Validation γίνεται ορίζοντας με κώδικα μία σειρά από delegates που θα πρέπει να κληθούν όταν αλλάζει ένα property. Αυτό όμως έχει πολλά προβλήματα: κατά κανόνα δεν ισχύουν τα ίδια validations και στον client και στον server, η αλλαγή των rules απαιτεί recompile των αντικειμένων και ουσιαστικά σχεδόν ολόκληρου του project, δεν είναι δυνατός ο ορισμός κανόνων εκτός των αντικειμένων π.χ. στον client. Αν ένα rule αφορά πολλαπλά properties, το rule πρ&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:black;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;&lt;FONT size=2 face=Tahoma&gt;έπει να δηλωθεί για κάθε property. &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:black;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;&lt;FONT size=2 face=Tahoma&gt;Ο κώδικας δεν εκμεταλλεύεται τις δυνατότητες του Framework. Το παράδειγμα με τα Get, Let, Set είναι ίσως η χειρότερη περίπτωση, αλλά βλέπω ότι ακόμα και στην έκδοση για .NET 3.5 τα validation rules ΔΕΝ έχουν αντικατασταθεί από lamdas, αλλά εξακολουθούν να έχουν την ίδια χονδροειδή υλοποίηση.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:black;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;&lt;FONT size=2 face=Tahoma&gt;
&lt;P&gt;Γενικά, δεν έμεινα ικανοποιημένος από την CSLA.NET. Προσπαθεί να καλύψει όλα τα επίπεδα μίας εφαρμογής, από τον client μέχρι τη βάση, αλλά το κάνει χρησιμοποιώντας τεχνικές της προηγούμενης δεκαετίας. &lt;BR&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;/SPAN&gt;</description></item><item><title>Απ: CSLA Framework</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/40987.aspx</link><pubDate>Wed, 19 Mar 2008 23:58:34 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:40987</guid><dc:creator>New Yorker</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/40987.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=16&amp;PostID=40987</wfw:commentRss><description>&lt;div align="left"&gt;Δημήτρη,&lt;br&gt;&lt;br&gt;Έχω δοκιμάσει τα περισσότερα frameworks που προσφέρουν την δυνατότητα να χρησιμοποιήσεις objects αντί Datasets.&lt;br&gt;Μάλιστα αντάλλαξα μερικά emails με τον Rockford Lhotka παλιότερα, γιατί είχα ερωτήσεις. Είναι πολύ ωραίος τύπος.&lt;br&gt;&lt;br&gt;Το framework είναι αρκετά ώριμο και προσφέρει πολλά features. Το δουλέυουν μεγάλες εταιρίες σε enterprise size applications.&lt;br&gt;&lt;br&gt;Εκτός τα βασικά πλεονεκτήματα που έχει ως framework για να κατασκευάσεις custom classes, για μένα αυτά είναι τα στοιχεία που το προτίιμησα τότε,&lt;br&gt;καθώς και οι λόγοι που το παράτησα:&lt;br&gt;&lt;br&gt;Pros:&lt;br&gt;&lt;ul&gt;&lt;li&gt;Undo functionality&lt;/li&gt;&lt;li&gt;Good inheritance and polymorphism&lt;/li&gt;&lt;li&gt;Είναι φτιαγμένο για enterprise level applications.&lt;/li&gt;&lt;li&gt;Performance&lt;br&gt;&lt;/li&gt;&lt;/ul&gt;Cons:&lt;br&gt;&lt;ul&gt;&lt;li&gt;Προσωπικά δεν μου αρέσει να έχω το data retreival logic στα custom classes μου.&lt;br&gt;Αυτό για μένα είταν και ο λόγος που το παράτησα (δεν χέρω αν έχει αλλάξει αυτό σε τελευταία versions). &lt;br&gt;&lt;/li&gt;&lt;li&gt;Επίσης το factory pattern που χρησιμοποιεί, μερικές φορές μου δημιουργούσε πρόβλημα.&lt;/li&gt;&lt;li&gt;Είναι πολύπλοκο και απαγορευτικό για μικρές και απλές εφαρμογές.&lt;/li&gt;&lt;/ul&gt;&lt;br&gt;Τώρα χρησιμοποιώ code generators για να κατασκευάσω custom classes.&lt;br&gt;Επίσης αρχίζω όλο και πιο πολυ να χρησιμοποιώ LINQ, που μοu δίνει την δυνατότητα να χρειάζομαι όλο και πιο λίγα custom classes για να μεταφέρω data μεταξύ tiers.&lt;br&gt;&lt;br&gt;My 2 cents.&lt;br&gt;&lt;br&gt;&lt;/div&gt;</description></item><item><title>CSLA Framework</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/40984.aspx</link><pubDate>Wed, 19 Mar 2008 23:36:48 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:40984</guid><dc:creator>Dimitris Papadimitriou</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/40984.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=16&amp;PostID=40984</wfw:commentRss><description>&lt;p&gt;Καλησπέρα,&lt;/p&gt;&lt;p&gt;Διαβάζω αυτή την περίοδο ένα βιβλίο για το CSLA Framework. Έχω εντοπίσει διάφορα όμορφα πράγματα σε αυτό, και κάποια που δεν με ενθουσιάζουν, αν και κατανοώ γιατί ο δημιουργός του οδηγήθηκε σε αυτές τις επιλογές.&lt;/p&gt;&lt;p&gt;Υπάρχουν γνώμες γι αυτό το framework; Θα είχε ιδιαίτερο ενδιαφέρον να ακούγαμε τις απόψεις ανθρώπων που το έχουν χρησιμοποιήσει σε πραγματικά projects.&amp;nbsp;&lt;/p&gt;</description></item></channel></rss>