<?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>S/W engineers rejoice: The Architecture of Twitter</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/73042.aspx</link><pubDate>Tue, 09 Jul 2013 17:02:05 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:73042</guid><dc:creator>KelMan</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/73042.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=16&amp;PostID=73042</wfw:commentRss><description>&lt;p&gt;Πολύ ενδιαφέρον blog post: &lt;a href="http://highscalability.com/blog/2013/7/8/the-architecture-twitter-uses-to-deal-with-150m-active-users.html"&gt;http://highscalability.com/blog/2013/7/8/the-architecture-twitter-uses-to-deal-with-150m-active-users.html&lt;/a&gt;&lt;/p&gt;&lt;p&gt;On my TOREAD list&lt;/p&gt;</description></item><item><title>Model View Control Απορια</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/67377.aspx</link><pubDate>Sun, 18 Sep 2011 07:31:05 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:67377</guid><dc:creator>papalife</dc:creator><slash:comments>4</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/67377.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=16&amp;PostID=67377</wfw:commentRss><description>Προσπαθώ να κατανοήσω την λογική του μοντέλου - προτύπου. Για αυτό θα ήθελα να ρωτήσω τους γνώστες η λειτουργία του Controller είναι να ζητά πληροφορίες απο το Model δηλαδή να καλεί τις συναρτήσης του Model με τα sql ερωτήματα που αυτές περιέχουν ? Έπειτα τα δεδομένα που αποκτά ο Controller τα προωθεί στο View για προβολή ?&amp;nbsp;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Απο το View που ειναι η διεπαφή μας ο χρήστης μπορει να αιτηθεί για να πάρει πληροφορίες, η αίτηση του περνά μέσω του controller στο model το οποίο επιστρέφει τις πληροφορίες στον controller και απο αυτόν πάνε στο view για προβολή ?&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Υπάρχει κάποιο καλό tutorial, βιβλίο, σημειώσεις πάνω στην λογική &amp;nbsp;του MVC ?&lt;/div&gt;</description></item><item><title>Επιπεδα Υγρασιας σε DataRooms?</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/66770.aspx</link><pubDate>Fri, 05 Aug 2011 19:36:40 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:66770</guid><dc:creator>Johnnyxp64</dc:creator><slash:comments>3</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/66770.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=16&amp;PostID=66770</wfw:commentRss><description>καλημερα&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;εχω ενα πελατη που εχει κανει σε ενα εργαστασειο ενα μικρο δωματιακι οχι παραπανω απο 2χ2, εχει εκει μεσα βαλει τους servers του, oxi rackable, απλα αλλα δυνατα συστηματα PC, 7 στον αριθμο για διαφορετικες εργασιες ο καθενας. μηχανηματα απο 5ετων παλια μεχρι και 3μηνων νεα, routers, modems, τηλ κεντρα, ups, κτλ&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;στο δωματιο αυτο το μικρο, εκτος απο μια πορτα που κλειδωνει, δεν υπαρχουν παραθυρα, ουτε ανοίγματα σε τοιχοςυ να "αναπνεει" ο χώρος.&lt;/div&gt;&lt;div&gt;υπαρχει μονο ενα aircodition 9.000btu που καιει ολη μερα στους 17c.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;φυσικα μεσα αν μπεις δεν καθεσαι πανω απο 1λετο χωρις κουβερτα!&lt;/div&gt;&lt;div&gt;προσαφτα εβαλα καποια αυτοκολητα σε μερικους σερβερ, και μετα απο 2βδομαδες παρατηρησα οτι τα αυτοκολητα, ειχαν μαζεψει, ξεκολαγαν, τα εβλεπες οτι ήταν (πως να το πω) με λιγο υγρασίας, και μαζεμένα!&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;και ρωτω, για ψαχνοντας στο ιντερνετ για επιπεδα υγρασιας, βρησκω αναφορες μονο σε μεγαλα datacenters με ειδικα κληματιστικα,&lt;/div&gt;&lt;div&gt;ποια ειναι φυσιολογικα επιπεδα υγρασιας? και αν οχι εναν αρηθμο, εσεις το βλεπετε σωστο αυτο το dataroom!? (ειναι 2χρονος λειτουργιας του!)&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;εχω δει πολλες μητρικες ως τεχνικος να εχουν καταστραφει απο την υγρασια και να εχουν σημαδια πανω τους, θα συμβει αραγε και εδω ποτε το ιδιο αφου ο χωρος ειναι τοσο μικρος και μονο κρυο αερα βγαζει?&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;εγω ειπα τον υπευθυνο αν μπορεουσε να ανοιγε ψηλα η χαμηλα ενα ανοιγμα με φιλτρο, (να μην μπει σκονη) να κυκλοφορεί και λίγο "καθαρος αερας".&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;ποια ειναι η γνωμη σας και η εμπειρία σας? τι μπορει να βελτιωθει αμεσα στο δωματειο αυτο χωρις να εχει τραγικα κοστη?&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;ευχαριστω πολυ.&lt;/div&gt;</description></item><item><title>Intergration - Web Services</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/65726.aspx</link><pubDate>Wed, 11 May 2011 06:43:22 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:65726</guid><dc:creator>leukonas</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/65726.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=16&amp;PostID=65726</wfw:commentRss><description>&lt;p&gt;Καλησπέρα σε όλους,&lt;/p&gt;&lt;p&gt;Υπάρχει κάποιο e-book,turorial,site,blog το οποίο να έχει θέματα για τεχνικές και λύσεις για intergration μεταξύ applications;Με ενδιαφέρει κυρίως το intergration&amp;nbsp;μεταξύ&amp;nbsp;web applications με χρήση web services και sql server.Κάθε βοήθεια δεκτή&lt;/p&gt;&lt;p&gt;&amp;nbsp;Ευχαριστώ&amp;nbsp;&lt;/p&gt;</description></item><item><title>Πρώτα βήματα με MVVM για WPF</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/64604.aspx</link><pubDate>Fri, 25 Mar 2011 04:36:36 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:64604</guid><dc:creator>Underwater</dc:creator><slash:comments>3</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/64604.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=16&amp;PostID=64604</wfw:commentRss><description>&lt;p&gt;





Βλέποντας πως το WPF  development community να προτείνει το MVVM Pattern (Model View View-Model), και έχοντας βρει το PRISM περίπλοκο για έναν developer που ακόμα παλεύεται με Design Patterns,  έψαχνα για ένα «απλό» How-To-Guide.Χτες βρήκα μια παρουσίαση που έγινε στο MIX10 &lt;a href="http://channel9.msdn.com/events/MIX/MIX10/EX14"&gt;http://channel9.msdn.com/events/MIX/MIX10/EX14&lt;/a&gt; &amp;nbsp;που με βοήθησε να ξεκινήσω.  &lt;/p&gt;&lt;p&gt;Ο τύπος “Laurent Bugnion”, πέρα από το humor του, έχει φτιάξει και ένα “light” framework με Visual Studio Project Templates αλλά και Code Snippets (&lt;a href="http://mvvmlight.codeplex.com/"&gt;http://mvvmlight.codeplex.com/&lt;/a&gt;).&lt;/p&gt;&lt;p&gt;Φαινεται να ειναι το σωστο&amp;nbsp;"starting&amp;nbsp;point"&lt;/p&gt;&lt;p&gt;:-)&amp;nbsp;&amp;nbsp;&lt;/p&gt;</description></item><item><title>PRISM είναι αποκλείστηκα για τους “advanced”  developers ?</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/64376.aspx</link><pubDate>Mon, 21 Mar 2011 01:54:04 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:64376</guid><dc:creator>Underwater</dc:creator><slash:comments>5</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/64376.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=16&amp;PostID=64376</wfw:commentRss><description>&lt;P&gt;&lt;FONT size=3&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:black;mso-ansi-language:EL;"&gt;Διαβάζω πως το &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:black;"&gt;Prism&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:black;mso-ansi-language:EL;"&gt; (&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:black;"&gt;Composite&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:black;mso-ansi-language:EL;"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:black;"&gt;Application&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:black;mso-ansi-language:EL;"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:black;"&gt;Guidance&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:black;mso-ansi-language:EL;"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:black;"&gt;for&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:black;mso-ansi-language:EL;"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:black;"&gt;WPF&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:black;mso-ansi-language:EL;"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:black;"&gt;and&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:black;mso-ansi-language:EL;"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:black;"&gt;Silverlight&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:black;mso-ansi-language:EL;"&gt;) βοηθά (με εύκολο τρόπο?) να περιορίσει κανείς την περιπλοκότητα όταν γράφει μεγάλες εφαρμογές.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:black;mso-ansi-language:EL;"&gt;Οταν φτιάχνω πολλά &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:black;"&gt;WPF&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:black;mso-ansi-language:EL;"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:black;"&gt;User&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:black;mso-ansi-language:EL;"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:black;"&gt;Controls&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:black;mso-ansi-language:EL;"&gt; &lt;SPAN&gt;που είναι μέσα σε ένα &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:black;"&gt;WPF&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:black;mso-ansi-language:EL;"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:black;"&gt;Window (dashboard)&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:black;mso-ansi-language:EL;"&gt;,&amp;nbsp; το &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:black;"&gt;handling&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:black;mso-ansi-language:EL;"&gt; &lt;SPAN&gt;των &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:black;"&gt;events&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:black;mso-ansi-language:EL;"&gt; γινεται &lt;SPAN&gt;κάπως περίπλοκο.&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;Όποτε η λύση που προτείνεται είναι ένα &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:black;"&gt;framework&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:black;mso-ansi-language:EL;"&gt; &lt;SPAN&gt;όπου υπάρχει ένα &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:black;"&gt;SHELL&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:black;mso-ansi-language:EL;"&gt; που κάνει &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:black;"&gt;manage&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:black;mso-ansi-language:EL;"&gt; &lt;SPAN&gt;όλα τα άλλα &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:black;"&gt;modules&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:black;mso-ansi-language:EL;"&gt; (&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:black;"&gt;Composite&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:black;mso-ansi-language:EL;"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:black;"&gt;View&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:black;mso-ansi-language:EL;"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:black;"&gt;Pattern&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:black;mso-ansi-language:EL;"&gt;).&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;Τα &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:black;"&gt;modules&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:black;mso-ansi-language:EL;"&gt; &lt;SPAN&gt;(&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:black;"&gt;views&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:black;mso-ansi-language:EL;"&gt;) δεν ξέρουν πως φορτώνονται, και ποια αλλα modules είναι στο &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:black;"&gt;dashboard&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:black;mso-ansi-language:EL;"&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:black;mso-ansi-language:EL;"&gt;Μέχρι εδώ, η θεωρία είναι καθαρή και την καταλαβαίνω.&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;Όμως τα άρθρα που έχω δει (&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:black;"&gt;including&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:black;mso-ansi-language:EL;"&gt; &lt;SPAN&gt;τα “&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:black;"&gt;Getting&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:black;mso-ansi-language:EL;"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:black;"&gt;Started&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:black;mso-ansi-language:EL;"&gt;”) αναφέρονται σε ακόμα άλλα &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:black;"&gt;patterns&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:black;mso-ansi-language:EL;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:black;"&gt;frameworks ο&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:black;mso-ansi-language:EL;"&gt;πως, &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:black;"&gt;Unity&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:black;mso-ansi-language:EL;"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:black;"&gt;Application&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:black;mso-ansi-language:EL;"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:black;"&gt;Block&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:black;mso-ansi-language:EL;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:black;"&gt;Managed&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:black;mso-ansi-language:EL;"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:black;"&gt;Extensibility&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:black;mso-ansi-language:EL;"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:black;"&gt;Framework&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:black;mso-ansi-language:EL;"&gt;, &lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:black;"&gt;Inversion&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:black;mso-ansi-language:EL;"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:black;"&gt;of&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:black;mso-ansi-language:EL;"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:black;"&gt;Control&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:black;mso-ansi-language:EL;"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:black;"&gt;and&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:black;mso-ansi-language:EL;"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:black;"&gt;Dependency&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:black;mso-ansi-language:EL;"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:black;"&gt;Injection&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:black;mso-ansi-language:EL;"&gt;, και δεν ξέρω τι άλλο ..... &lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:black;mso-ansi-language:EL;"&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT size=3&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:black;mso-ansi-language:EL;"&gt;Βασικά ήθελα να μάθω εάν το &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:black;"&gt;PRISM&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:black;mso-ansi-language:EL;"&gt; &lt;SPAN&gt;είναι αποκλείστηκα για τους “&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:black;"&gt;advanced&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:black;mso-ansi-language:EL;"&gt;”&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:black;"&gt;developers&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:black;mso-ansi-language:EL;"&gt; &lt;SPAN&gt;που είναι αρκετά γνώστες των &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:black;"&gt;design&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:black;mso-ansi-language:EL;"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:black;"&gt;patterns&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:black;mso-ansi-language:EL;"&gt; &lt;SPAN&gt;κλπ, η αξίζει να το κοιτάμε και εμείς που δεν είμαστε και τόσο προχωρημένοι?&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;</description></item><item><title>Software Metrics</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/62447.aspx</link><pubDate>Tue, 18 Jan 2011 03:57:38 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:62447</guid><dc:creator>Bill </dc:creator><slash:comments>6</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/62447.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=16&amp;PostID=62447</wfw:commentRss><description>Καλησπέρα,&lt;br&gt;&lt;br&gt;Θα ήθελα να μου πειτε αν κάποιος γνωρίζει / χρησιμοποιεί free tools για Software Metrics ως plugin του VS 2010/2008.&lt;br&gt;&lt;br&gt;</description></item><item><title>[TOP URGENT] Τεχνική Διαβούλευση της ΓΓΠΣ για τα έργα ανάπτυξεις Software: Παρακαλώ για τις παραμβάσεις όλων μας!!!</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/63390.aspx</link><pubDate>Fri, 18 Feb 2011 21:39:15 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:63390</guid><dc:creator>THEOFANIS GIOTIS | PMP, PMI-ACP, MCT, MSc, PhD C.</dc:creator><slash:comments>18</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/63390.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=16&amp;PostID=63390</wfw:commentRss><description>&lt;h1 class="post-title"&gt;&lt;a href="https://apps.gov.gr/apps2/minfin/ggps/?p=101" rel="bookmark" title="Permanent Link to Τεχνική Διαβούλευση σχετικά με Οριζόντιες Απαιτήσεις Ανάπτυξης Λογισμικού για έργα της ΓΓΠΣ"&gt;Τεχνική Διαβούλευση σχετικά με Οριζόντιες Απαιτήσεις Ανάπτυξης Λογισμικού για έργα της ΓΓΠΣ&lt;/a&gt;&lt;/h1&gt;&lt;br&gt;&lt;a href="https://apps.gov.gr/apps2/minfin/ggps/?p=101"&gt;https://apps.gov.gr/apps2/minfin/ggps/?p=101&lt;/a&gt;&lt;br&gt;&lt;br&gt;</description></item><item><title>Κατέβασμα πολλών αρχείων ταυτόχρονο από remote servers</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/60956.aspx</link><pubDate>Fri, 19 Nov 2010 00:22:19 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:60956</guid><dc:creator>Wizard!</dc:creator><slash:comments>1</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/60956.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=16&amp;PostID=60956</wfw:commentRss><description>&lt;SPAN style="WIDOWS:2;TEXT-TRANSFORM:none;TEXT-INDENT:0px;BORDER-COLLAPSE:separate;FONT:medium 'Times New Roman';WHITE-SPACE:normal;ORPHANS:2;LETTER-SPACING:normal;WORD-SPACING:0px;-webkit-border-horizontal-spacing:0px;-webkit-border-vertical-spacing:0px;-webkit-text-decorations-in-effect:none;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;" class=Apple-style-span&gt;&lt;SPAN style="TEXT-ALIGN:left;FONT-FAMILY:Verdana, Arial, Helvetica, sans-serif;FONT-SIZE:12px;" class=Apple-style-span&gt;
&lt;P style="FONT-SIZE:11px;"&gt;Καλησπέρα σε όλους &lt;img src="http://www.dotnetzone.gr/cs/emoticons/emotion-1.gif" alt="Smile" /&gt;&lt;/P&gt;
&lt;P style="FONT-SIZE:11px;"&gt;Κάθε 2-3 μήνες πρέπει να κατεβάζουμε φωτογραφίες από διάφορους προμηθευτές μας. Οι εικόνες αυτός είναι ~50kb η καθεμιά και στο σύνολό τους ξεπερνάνε τις 250.000. Δεν τις αποθηκεύουμε στο δίσκο, καθότι επεξεργάζονται, μορφοποιούνται και μπαίνουν απευθείας σε βάση (SQL 2008). Επίσης, η διαδικασία τρέχει πίσω από ISA και φυσικά χρειάζεται network credantials για να παίξει.&lt;/P&gt;
&lt;P style="FONT-SIZE:11px;"&gt;Η ερώτησή μου είναι η εξής: Ποιά μέθοδο θα εφαρμόζατε για να το κάνετε σωστά; Θα επιλέγατε WebClient&amp;nbsp;ή HttpSockets? Θα το σχεδιάζατε να τρέξει με&amp;nbsp;Async methods&amp;nbsp;ή Threads ? Πως θα μπορούσε να τρέχει παράλληλα 5-10 requests τη στιγμή που τραβάει από διάφορους servers ώστε να επιτύχει καλύτερη συνολική ταχύτητα και εκμετάλλευση του bandwidth; &lt;/P&gt;
&lt;P style="FONT-SIZE:11px;"&gt;W!&lt;/P&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;</description></item><item><title>db4o ODBMS</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/60920.aspx</link><pubDate>Tue, 16 Nov 2010 05:19:25 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:60920</guid><dc:creator>Bill </dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/60920.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=16&amp;PostID=60920</wfw:commentRss><description>Απλά βρήκα την παρακάτω αντικειμενοστραφή Βάση Δεδομένων&amp;nbsp;&lt;a href="http://www.db4o.com/"&gt;http://www.db4o.com/&lt;/a&gt;&amp;nbsp;&amp;nbsp; απο την versant &amp;nbsp;και είπα να την μοιραστώ μαζί σας (όσοι δεν την γνωρίζουν) . Υποστηρίζει και .net 3.5 και beta net 4 και Linq . Και φυσηκά είναι πολύ καλή επιλογή για συσκεύες με χαμηλων επιδόσεων hardware βλέπε κινητά κ.α...! όπου η μνήμη είναι πολύτιμη και τα data σου πάρα πολλά.&amp;nbsp;&lt;img src="http://www.dotnetzone.gr/cs/emoticons/emotion-2.gif" alt="Big Smile" /&gt;</description></item><item><title>Composite Entities</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/59715.aspx</link><pubDate>Mon, 23 Aug 2010 23:18:20 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:59715</guid><dc:creator>infoCENTER</dc:creator><slash:comments>18</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/59715.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=16&amp;PostID=59715</wfw:commentRss><description>&lt;P&gt;Είμαι στην αρχή της ανάπτυξης μία εφαρμογής και από αυτά που μου έχουν περιγράψει και το πως θα ήθελαν την εφαρμογή, μετά από σκέψη κατέληξα στο γεγονός πως ίσως, μάλλον, χρειάζομαι να χρησιμοποιήσω composite entities. Μία αναζήτηση όμως στο Google δεν μου έβγαλε κάτι σχετικό. Guidelines, Patterns, προβλήματα που μπορεί να προκύψουν ή οτιδήποτε. Αποφάσισα λοιπόν να γράψω κάτι εδώ, μήπως και κάποιος από εδώ έχει ασχοληθεί σχετικά ή έχει δει κάτι.&lt;/P&gt;
&lt;P&gt;Ο όρος Composite Entities δεν ξέρω αν υπάρχει απλά δανείστηκα την λέξη composite από τα διάφορα UI Frameworks που υπάρχουν. Τι εννοώ λοιπόν με τον όρο αυτό. Στην εφαρμογή μου έχω κάποια entities/objects. Αυτά συνήθως από μόνα τους περιγράφουν μία οντότητα. Υπάρχουν λοιπόν περιπτώσεις όπου αν βάλουμε δύο μαζί να περιγράφουν κάτι άλλο. Ένα παράδειγμα θα βοηθήσει να καταλάβετε τι εννοώ και για πιο λόγω το inheritance δεν είναι η λύση του προβλήματος. &lt;/P&gt;
&lt;P&gt;Ας υποθέσουμε ότι θέλω να σχεδιάσω μία εφαρμογή η οποία να κρατάει πληροφορίες για τους υπαλλήλους της. Οπότε θα φτιάξουμε μία οντότητα Employee η οποία θα έχει τα στοιχεία του κάθε ατόμου. Τα άτομα αυτά δουλεύουν σε κάποια τμήματα της εταιρείας όπου το κάθε τμήμα έχει τα δικά του χαρακτηριστικά. Παράδειγμα υπάλληλος αποθήκης, υπάλληλος λογιστηρίου, εξωτερικός υπάλληλος, οδηγός κτλ όπου ανάλογα με την θέση στην οποία δουλεύει ο κάθε υπάλληλος θα θέλαμε να κρατάμε και κάποια έξτρα στοιχεία. Αν είναι οδηγός το δίπλωμα, ή διπλώματα, και γενικά ότι χρειάζεται το κάθε τμήμα και η εταιρεία να κρατάει. Οπότε κάποιος στο σημείο αυτό μπορεί να πει ότι π.χ για την περίπτωση του οδηγού θα κάνω Inherit το employee και θα ονομάσω το νέο object σε driver, το αντίστοιχο και για τα υπόλοιπα τμήματα. Δεν διαφωνώ αρχικά με την σκέψη αυτή. Το UI είναι αυτό που το χαλάει. &lt;/P&gt;
&lt;P&gt;Λόγω σχεδίασης που αυτό θα έχει, θα πρέπει μία αλλαγή που θα γίνεται σε κάποιο πεδίο&amp;nbsp;ενός object&amp;nbsp;αυτόματα να ενημερώνονται και όλα τα άλλα objects που αναφέρονται στο entity αυτό. Δηλαδή αν έχω μία λίστα σε Grid τους υπαλλήλους και ανοίξω έναν υπάλληλο σε κάποια φόρμα η αλλαγή που θα κάνω στον υπάλληλο να εμφανιστεί και στο Grid. Αυτό με Binding λύνεται πολύ εύκολα. Το πρόβλημα τώρα. Ανοίγω ένα υπάλληλο σε φόρμα και στην συνέχεια μέσα από την εφαρμογή ανοίγω τον ίδιο υπάλληλο σαν οδηγό όμως αυτή την φορά, οπότε έχω δύο φόρμες ανοικτές που αναφέρονται στο ίδιο άτομο. Αν ακολουθήσω την λογική του Inheritance τότε μιλάμε για δύο διαφορετικά Instances το Employee &amp;amp; Driver οπότε μία αλλαγή π.χ στον αριθμό ταυτότητας του Employee δεν θα αλλάξει στην φόρμα του Driver του ίδιου ατόμου. Οπότε στο σημείο αυτό κατάλαβα ότι το inheritance ίσως δεν είναι αυτό που θέλω και έφτασα στην λογική των composite objects. Όπου έχω ένα object employee ένα object DriverDetails και όταν τα βάλω αυτά τα δύο μαζί να έχω ένα DriverEntity. Παρακάτω παρουσιάζω πως το κάνω αυτό.&lt;/P&gt;
&lt;P&gt;Public Class Driver&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Private _Employee as Employee&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Private _DriverDetails as DriverDetails&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Public Sub New&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_Employee=New Employee&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_DriverDetails=New DriverDetails&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;End Sub&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Property Employee as Employee&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Get&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Set&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;End Property&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Property&amp;nbsp;DriverDetails as&amp;nbsp;DriverDetails&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Get&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Set&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;End Property&lt;BR&gt;End Class&lt;/P&gt;
&lt;P&gt;Οπότε έτσι αν πάω να ανοίξω ένα οδηγό για τον οποίο η οντότητα υπάλληλος έχει ήδη φορτωθεί στην εφαρμογή πέρνω το συγκεκριμένο Instance από μία συγκεκριμένη περιοχή της εφαρμογής και την περνάω στο Property&amp;nbsp;Employee Του Driver.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Όπως είπα έψαξα στο Google για κάτι ανάλογο αλλά δεν βρήκα κάποια guidelines ή κάτι σχετικό&amp;nbsp;που να με βάλει σε έναν δρόμο και να μου πει τι προβλήματα μπορεί να συναντήσω στην πορεία. Έχει κανείς να μου προτείνει να διαβάσω κάτι σχετικό ή να μου πει;&lt;/P&gt;
&lt;P&gt;Ευχαριστώ.&lt;/P&gt;
&lt;P&gt;Υστ: Ουφφφ τελείωσα.&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/P&gt;</description></item><item><title>Εφαρμογή αναγνώρισης κλήσεων</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/59077.aspx</link><pubDate>Fri, 11 Jun 2010 08:31:03 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:59077</guid><dc:creator>Zuko</dc:creator><slash:comments>12</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/59077.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=16&amp;PostID=59077</wfw:commentRss><description>
	
	
&lt;p style="margin-bottom:0cm;"&gt;Γεια σε όλους !!&lt;br&gt;&lt;/p&gt;
&lt;p style="margin-bottom:0cm;"&gt;Λοιπόν θέλω να
φτιάξω ένα “σύστημα” όπου όταν θα
χτυπάει το τηλ. θα εμφανίζει στο &lt;span&gt;PC
&lt;/span&gt;διάφορα στοιχεία αυτού που καλεί
και θα δίνει και κάποιες άλλες επιλογές
στο "χρήστη". Τα στοιχεία θα είναι
καταχωρημένα από πριν σε βάση δεδομένων.
Το πρόβλημα προφανώς δεν είναι η κατασκευή
της βάσης&lt;span&gt; &lt;/span&gt;ή της εφαρμογής
που θα δίνει τις επιλογές στο χρήστη,
άλλα πως θα γίνεται η αναγνώριση του
αριθμού που καλεί ωστε να τον αναζητήσει
στη βάση.&lt;/p&gt;


&lt;p style="margin-bottom:0cm;"&gt;&lt;span&gt;Έψαξα γρήγορα
κάποια πράγματα π.χ. για το &lt;/span&gt;&lt;span&gt;TAPI
αλλά&lt;/span&gt;&lt;span&gt; απ' ότι είδα: “&lt;/span&gt;&lt;i&gt;One
very notable issue with TAPI 3.x is the lack of support for managed
code (&lt;a href="http://en.wikipedia.org/wiki/Microsoft_.NET"&gt;.NET&lt;/a&gt;
environment). As documented in Microsoft KB Article &lt;a href="http://support.microsoft.com/default.aspx?scid=kb;en-us;841712"&gt;841712&lt;/a&gt;,
Microsoft currently has no plans to support TAPI 3.x directly from
.Net programming languages. &lt;/i&gt;&lt;span&gt;”&lt;/span&gt; &amp;amp; ήθελα η εφαρμογή
να είναι σε &lt;span&gt;C# (wpf).&lt;/span&gt;&lt;br&gt;&lt;/p&gt;&lt;p style="margin-bottom:0cm;"&gt;Δεν έχω &lt;span&gt;much
time, γι'&lt;/span&gt;αυ&lt;span&gt;τ&lt;/span&gt;ό ποστάρω
και ταυτόχρονα θα ψάξω και μόνος μου..
Αν κάποιος γνωρίζει κάποια πληροφορία
για το τι χρειάζεται από πλευράς &lt;span&gt;hardware
(modem klp..), software,&lt;/span&gt; ή οτιδήποτε άλλο (κανα
χρήσιμο &lt;span&gt;link, whatever...&lt;/span&gt;) θα
βοηθούσε ...&lt;/p&gt;
&lt;p style="margin-bottom:0cm;"&gt;Δεν υπάρχει
&lt;span&gt;adsl, &lt;/span&gt;η γραμμή θα είναι απλή
&lt;span&gt;pstn.&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-bottom:0cm;"&gt;&lt;span&gt;Thanks
in advance&amp;nbsp;&lt;img src="http://www.dotnetzone.gr/cs/emoticons/emotion-1.gif" alt="Smile" /&gt; &lt;/span&gt;
&lt;/p&gt;</description></item><item><title>Object validation depending on certain table rows values.</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/59281.aspx</link><pubDate>Sat, 26 Jun 2010 03:37:51 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:59281</guid><dc:creator>infoCENTER</dc:creator><slash:comments>1</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/59281.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=16&amp;PostID=59281</wfw:commentRss><description>&lt;P&gt;Τον τελευταίο καιρό με προβληματίζει από σχεδιαστικής πλευράς ένα θέμα που έχει να κάνει με validation. &lt;/P&gt;
&lt;P&gt;Χρησιμοποιώ το interface IDataErrorInfo στα custom objects μου. Βασικά το Root είναι αυτό που το κάνει implement από το οποίο κάνουν inherit τα objects μου. Επίσης δείχνω τα errors, αν προκύψουν στην φόρμα μου χρησιμοποιώντας το ErrorProvider control. &lt;/P&gt;
&lt;P&gt;Το πρόβλημα, σχεδιαστικά πάντα μιλάω είναι πως έχω μερικά objects τα οποία για να γίνει validate κάποιο ή κάποια από τα properties τους θα πρέπει να κοιτάξω στην βάση. &lt;/P&gt;
&lt;P&gt;Σχεδιαστικά η εφαρμογή έχει entities και data models που εκτελούν όλες τις λειτουργίες με την βάση. Οπότε πριν από την αποθήκευση έχω την δυνατότητα να κάνω έναν check και να πιάσω λάθη αν υπάρχουν. Όμως θα ήθελα στο σημείο της φόρμας, καθώς ο χρήστης περνάει μία τιμή να του έβγαινε εκεί το λάθος και όχι όταν πατήσει Αποθήκευση. &lt;/P&gt;
&lt;P&gt;Όπως καταλαβαίνετε το πρόβλημα είναι ότι δεν έχω δώσει την δυνατότητα στα Entities να επικοινωνούν με την βάση, αυτό το αναλαμβάνουν τα Data Models. Οπότε πως θα μπορούσα να το κάνω;&lt;/P&gt;
&lt;P&gt;Στο μυαλό μου έχω την σκέψη να δημιουργήσω validator class ανά object και να μεταφέρω εκεί όλη την λογική του validation. Ο κάθε validator θα κάνει implement ένα συγεκριμένο Interface στο οποίο θα βλέπει το RoorObject μου. Σκέφτομαι λοιπόν να δώσω στους validators την δυνατότητα αυτή να επικοινωνούν με την βάση. &lt;/P&gt;
&lt;P&gt;Υπάρχει κανείς που έχει στο μυαλό του κάτι άλλο; Μία ιδέα;&lt;/P&gt;
&lt;P&gt;Ευχαριστώ.&lt;/P&gt;</description></item><item><title>Ορισμός του Concurrent user</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/58940.aspx</link><pubDate>Thu, 03 Jun 2010 08:58:23 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:58940</guid><dc:creator>Filaretos</dc:creator><slash:comments>7</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/58940.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=16&amp;PostID=58940</wfw:commentRss><description>Στην εταιρία στην οποία εργάζομαι έχουμε ξεκινήσει την διαδικασία επιλογής πλατφόρμας η οποία θα αντικαταστήσει το υπάρχον extranet (asp 3.0 – Sql Server 2000).&lt;br&gt;Ένα από τα κόστη που θα αντιμετωπίσουμε πέρα από το software, είναι το hardware.&lt;br&gt;&lt;br&gt;Οι εταιρίες που έχουμε προσκαλέσει για την υλοποίηση του extranet για να μπορέσουν να μας υπολογίσουν την βασική υποδομή (χωρίς fail over κλπ.) που θα χρειαστούμε σε&amp;nbsp; hardware μας ζητάνε τους ¨Concurrent user¨.&lt;br&gt;&lt;br&gt;Από αυτά που γνωρίζω είναι ότι, σαν ¨Concurrent user¨&amp;nbsp; εννοούνται τα ταυτόχρονα request που γίνονται σε μια συγκεκριμένη χρονική περίοδο (per second φαντάζομαι είναι ρεαλιστικό). &lt;br&gt;&lt;br&gt;Επειδή ακούω διαφορετικούς ορισμούς για τους ¨Concurrent user¨ το οποίο αναπόφεκτα οδηγεί&amp;nbsp; και σε&amp;nbsp; ακραίες μετρήσεις&amp;nbsp; (από 15 έως 150) θα ήθελα να απευθυνθώ στην εμπειρία της κοινότητας και να ρωτήσω:&lt;br&gt;&lt;ul&gt;&lt;li&gt;Πως θα ορίζατε τους ¨Concurrent user¨;&lt;/li&gt;&lt;li&gt;Οι&amp;nbsp; ¨Concurrent user¨&amp;nbsp; υπολογίζονται ως request προς τον application server (IIS, BEA κλπ) ή προς την βάση δεδομένων ή και τα δύο;&lt;/li&gt;&lt;li&gt;Με ποιο τρόπο θα μπορούσαμε να υπολογίσουμε τους&amp;nbsp; ¨Concurrent user¨;&lt;/li&gt;&lt;li&gt;Είναι διαφορετικές οι απαιτήσεις&amp;nbsp; αν ο&amp;nbsp; ¨Concurrent user¨ κάνει και transaction;&lt;/li&gt;&lt;/ul&gt;&lt;br&gt;Αν χρειάζεστε επιπλέον διευκρινήσεις παρακαλώ μην διστάσετε.&lt;br&gt;Επίσης θα ήθελα αν είναι δυνατόν να μην απαντήσετε με παραπομπές (εκτός αν είναι αναγκαίο για&amp;nbsp; την τεκμηρίωση) όχι γιατί είμαι περίεργος, αλλά γιατί θα ήθελα να υπάρχει σαν reference (και βεβαίως τι καλύτερο reference από το dotNETZone).&lt;br&gt;</description></item><item><title>Διαγράμματα</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/58549.aspx</link><pubDate>Wed, 05 May 2010 17:53:19 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:58549</guid><dc:creator>masteripper</dc:creator><slash:comments>1</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/58549.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=16&amp;PostID=58549</wfw:commentRss><description>&lt;P&gt;Καλημέρα σε όλους.&lt;/P&gt;
&lt;P&gt;Θα ήθελα την συμβουλή σας σε ένα θεμα που με απασχολεί.&lt;/P&gt;
&lt;P&gt;Υπάρχει στην εταρεία μια πολυ μεγάλη custom εφαρμογή η οποία αρχίζει και δείχνει την ηλικία τους και σιγα σιγά είναι καιρός να μεταφερθεί σε ΝΕΤ πλατφόρμα &lt;/P&gt;
&lt;P&gt;ΤΟ πρόβλημα είναι ότι λόγω μεγέθους και πολυπλοκότητας παρόλη την ενασχόληση μου υπάρχουν κάποια σκοτεινα σημεία οπότε ξεκίνησα να την "χαρτογραφώ" σε Excel.&lt;/P&gt;
&lt;P&gt;Δυστυχώς τα Module Είναι μεγάλα και με πολλά "jump"&amp;nbsp; και βγαίνουν κάτι τερατώδη Excel με αδυναμία παρακολούθησης (σε 25% υπάρχει αρκετό Scrolling)&lt;/P&gt;
&lt;P&gt;Αναρωτιομουν αν υπάρχει κάποια εφαρμογή που να κάνει διαγράμματα αλλά να είναι λίγο πιο δυναμικα και εξηγώ&lt;/P&gt;
&lt;P&gt;Θα ήθελα π.χ στο κουτάκια να υπάρχει διασύνδεση με τον κώδικα σε μορφή κειμένου ...και δεν εννοω να γράψω όλο τον κώδικα μέσα στο κουτάκι αλλά όταν κάνω π.χ Mouse over να εμφανίζεται ο κώδικας&lt;/P&gt;
&lt;P&gt;Παραθέτω μια πρόχειρη υλοποίηση αυτου που χρείαζομαι.&lt;/P&gt;
&lt;P&gt;&lt;IMG&gt;&lt;a href="http://www.freeimagehosting.net/image.php?61d3f122d8.jpg" target="_blank" title="http://www.freeimagehosting.net/image.php?61d3f122d8.jpg"&gt;&lt;img src="http://www.freeimagehosting.net/uploads/th.61d3f122d8.jpg" border="0" /&gt;&lt;/a&gt;"&gt;&lt;/P&gt;</description></item><item><title>Σχεδιασμός εφαρμογών για οθόνες αφής</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/58330.aspx</link><pubDate>Sun, 25 Apr 2010 19:50:29 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:58330</guid><dc:creator>Vagele</dc:creator><slash:comments>3</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/58330.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=16&amp;PostID=58330</wfw:commentRss><description>Υπάρχει κάποιος "οδηγός" για το πως πρέπει να είναι εμφανισιακά μία τέτοια εφαρμογή ώστε να είναι εύχρηστη;&amp;nbsp;Προτεινόμενο&amp;nbsp;μέγεθος για κουμπιά και άλλα τέτοια. Ευχαριστώ.&amp;nbsp;&lt;img src="http://www.dotnetzone.gr/cs/emoticons/emotion-1.gif" alt="Smile" /&gt;</description></item><item><title>The Design of Design - νέο βιβλίο του Fred Brooks</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/58007.aspx</link><pubDate>Fri, 09 Apr 2010 17:55:52 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:58007</guid><dc:creator>anjelinio</dc:creator><slash:comments>1</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/58007.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=16&amp;PostID=58007</wfw:commentRss><description>&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:navy;FONT-FAMILY:Arial;mso-ansi-language:EN-US;"&gt;O Mythical man-month Fred Brooks &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:navy;FONT-FAMILY:Arial;"&gt;έγραψε&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:navy;FONT-FAMILY:Arial;mso-ansi-language:EN-GB;"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:navy;FONT-FAMILY:Arial;"&gt;νέο&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:navy;FONT-FAMILY:Arial;mso-ansi-language:EN-GB;"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:navy;FONT-FAMILY:Arial;"&gt;βιβλίο&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:navy;FONT-FAMILY:Arial;mso-ansi-language:EN-GB;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:navy;FONT-FAMILY:Arial;"&gt;σχετικό&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:navy;FONT-FAMILY:Arial;mso-ansi-language:EN-GB;"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:navy;FONT-FAMILY:Arial;"&gt;με&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:navy;FONT-FAMILY:Arial;mso-ansi-language:EN-GB;"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:navy;FONT-FAMILY:Arial;mso-ansi-language:EN-US;"&gt;design: &lt;A href="http://www.amazon.com/gp/product/0201362988?ie=UTF8&amp;amp;tag=joelonsoftware&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=0201362988"&gt;&lt;FONT color=#800080&gt;http://www.amazon.com/gp/product/0201362988?ie=UTF8&amp;amp;tag=joelonsoftware&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=0201362988&lt;/FONT&gt;&lt;/A&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:navy;FONT-FAMILY:Arial;mso-ansi-language:EN-US;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:navy;FONT-FAMILY:Arial;mso-ansi-language:EN-US;"&gt;… &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:navy;FONT-FAMILY:Arial;"&gt;και φτηνό κιόλας ! &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:navy;FONT-FAMILY:Arial;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:navy;FONT-FAMILY:Arial;"&gt;Καλημέρα μας&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;</description></item><item><title>Πρότυπα Σχεδίασης Λογισμικού στα Ελληνικά!</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/57796.aspx</link><pubDate>Mon, 22 Mar 2010 03:19:46 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:57796</guid><dc:creator>alexandros75</dc:creator><slash:comments>6</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/57796.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=16&amp;PostID=57796</wfw:commentRss><description>Καλησπέρα σε όλους!&lt;br&gt;&lt;br&gt;Πριν από λίγο καιρό μου μπήκε η ιδέα να φτιάξω έναν ελληνικό δικτυακό τόπο αφιερωμένο αποκλειστικά στα πρότυπα σχεδίασης λογισμικού, τα γνωστά σε όλους design patterns. Φυσικά, υπάρχει πληθώρα πληροφορίας στο Intenet γύρω από το θέμα, όχι όμως στην Ελληνική γλώσσα. Σήμερα, κατάφερα να βρω λίγο χρόνο και να βάλω αυτή την ιδέα σε εφαρμογή... Μπορείτε να επισκεφτείτε το site στην ακόλουθη διεύθυνση:&lt;br&gt;&lt;br&gt;&lt;a href="http://www.designpatterns.gr"&gt;&lt;b&gt;http://www.designpatterns.gr&lt;/b&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;Ξεκίνησα λοιπόν να μεταφράζω, κατόπιν άδειας, το καταπληκτικό site του φίλου Vince Huston (&lt;a href="http://www.vincehuston.org/dp"&gt;http://www.vincehuston.org/dp&lt;/a&gt;/) και τα βρήκα σκούρα. Ο λόγος είναι ότι η ελληνική ορολογία είναι πολύ περιορισμένη στο αντικείμενο και γενικότερα στην ορολογία πληροφορικής. Η απογοήτευση μου ήταν ακόμη μεγαλύτερη όταν διαπίστωσα ότι οι υπάρχουσες μεταφράσεις στο Internet στην Ελληνική γλώσσα είναι άστοχες και ασυνεπείς.&amp;nbsp; Αποφάσισα κατόπιν τούτου να εισάγω στο site τη δυνατότητα οι χρήστες να μπορούν να αξιολογούν και να σχολιάζουν τις μεταφράσεις (όπως και κάθε περιεχόμενο).&lt;br&gt;&lt;br&gt;Τα πρότυπα σχεδίασης είναι ένα πολύτιμο εργαλείο που δυστυχώς στην Ελληνική κοινότητα δεν έχει τύχει ευρεία αναγνώριση ή τουλάχιστον διάδοση.&lt;br&gt;&lt;br&gt;Το site είναι ακόμη σε πολύ πρώιμο στάδιο, αλλά ευελπιστώ ότι σε 
μερικούς μήνες θα περιέχει σημαντική πληροφορία. Αυτό φυσικά θα 
εξαρτηθεί πολύ και από τη δική σας συμμετοχή, τους Έλληνες 
προγραμματιστές που προσπαθούν για κάτι καλύτερο στο αντικείμενο ... &lt;br&gt;&lt;br&gt;Ο στόχος του site είναι απλός: Διάδοση της ιδέας των προτύπων σχεδίασης και ανάδειξη/καθιέρωση της ελληνικής ορολογίας στο αντικείμενο. &lt;br&gt;&lt;br&gt;Αν σας ενδιαφέρει πραγματικά το αντικείμενο, μπορείτε να γίνετε μέλη και να δημοσιεύετε στα forums/blogs, να σχολιάσετε το περιεχόμενο, να προτείνεται τα δικά σας παραδείγματα κλπ. &lt;br&gt;Ενδιαφέρομαι επίσης για κάποιο έμπιστο άτομο για να με βοηθήσει στο administration.&lt;br&gt;&lt;br&gt;Ευχαριστώ για το χρόνο σας...&lt;br&gt;&lt;br&gt;Alexandros&lt;br&gt;</description></item><item><title>Ζητείται το κατάλληλο pattern</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/56777.aspx</link><pubDate>Fri, 29 Jan 2010 18:16:18 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:56777</guid><dc:creator>KelMan</dc:creator><slash:comments>1</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/56777.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=16&amp;PostID=56777</wfw:commentRss><description>&lt;P&gt;Λοιπόν, η παρούσα κατάσταση:&lt;/P&gt;
&lt;P&gt;Έχω μια κλάση, ας την πούμε Manager&amp;nbsp;που περιέχει ένα collection από objects. Ο Manager έχει ένα method το οποίο κάνει ένα operation για κάθε ένα object του collection, δηλαδή δεν αλλάζει το ίδιο το object, απλά χρησιμοποιεί το state του.&lt;/P&gt;
&lt;P&gt;Σε κάποιο σημείο του operation, τρέχει ένα&amp;nbsp;function&amp;nbsp;πάνω στο&amp;nbsp;object το οποίο function δεν το γνωρίζει ο Manager, γνωρίζει μόνο το αντίστοιχο delegate του function που θα πρέπει να χρησιμοποιήσει. Όταν φτιάχνω τον Manager, του περνάω ως παράμετρο το function κι έτσι όλα τρέχουν μια χαρά.&lt;/P&gt;
&lt;P&gt;Το πρόβλημα:&lt;/P&gt;
&lt;P&gt;Παρουσιάστηκε η ανάγκη το collection να περιέχει κι ένα δεύτερο είδος από objects, για τα οποία (γιατί να είναι εύκολα τα πράγματα;) απαιτείται διαφορετικό function μέσα στο operation του Manager. &lt;/P&gt;
&lt;P&gt;Η ερώτηση:&lt;/P&gt;
&lt;P&gt;Ψάχνω κάποιο κατάλληλο pattern ώστε να υλοποιήσω το παραπάνω requirement. Σκέφτομαι ότι αν είχα covariance ίσως τα πράγματα να ήταν πιο απλά φτάχνοντας ένα generic τύπο και&amp;nbsp;"μετακομίζοντας" το delegate μέσα στον τύπο. Φυσικά, θέλω να αποφύγω να βάλω μέσα στο operation του Manager λογική του τύπου "αν το object είναι τέτοιο, κάνε αυτό, αν είναι τέτοιο, κάνε εκείνο, κλπ" καθώς μπορεί να εμφανιστεί αύριο η ανάγκη να υποστηριχθεί κι ένα τρίτο είδος από objects. Έχει κανείς καμιά ιδέα; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description></item><item><title>Κλείσιμο χρονιάς, αλλαγή χρήση...Με ποιον τρόπο? ποιος είναι ο σωστός?</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/56611.aspx</link><pubDate>Sat, 23 Jan 2010 08:58:38 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:56611</guid><dc:creator>Τάσκος Γιώργος</dc:creator><slash:comments>2</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/56611.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=16&amp;PostID=56611</wfw:commentRss><description>Δεν έχω καθόλου εμπειρία στο συγκεκριμένο "κομμάτι" που πολλοί σίγουρα θα έχουν συναντήσει.&lt;br&gt;&lt;br&gt;Το θέμα είναι πως σχεδιάζεις αυτό που κάνουν τα περισσότερα λογισμικά, "κλείσιμο χρονιάς" ή "αλλαγή χρήσης".&lt;br&gt;Άκουσα κάποιες απόψεις, όπως δημιουργια διαφορετικής βάσης για κάθε χρονιά, ή δημιουργία "history tables",&lt;br&gt;όλα τα δεδομένα μαζί και διαχείρηση μέσω κώδικα.&lt;br&gt;&lt;br&gt;Θα ήθελα να ακούσω απόψεις και πως είναι σχετικά ο ποιο σωστός τρόπος όσον αφορά maintenance, extensibility, διαχείρηση.&lt;br&gt;Σιγουρά οι γκουρους 8α έχουν να μας πούνε κάτι.&lt;br&gt;&lt;br&gt;Συγγνώμη αν υστερώ γενικά ή αν έθεσα το concept λίγο λάθος, υστερώ σε κάτι τέτοιο για αυτό και ψάχνω απόψεις και λύσεις.&lt;br&gt;&lt;br&gt;&lt;br&gt;</description></item><item><title>Λιγότερα roundtrips vs Modularity</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/56310.aspx</link><pubDate>Sun, 10 Jan 2010 22:28:44 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:56310</guid><dc:creator>Dimitris Papadimitriou</dc:creator><slash:comments>7</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/56310.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=16&amp;PostID=56310</wfw:commentRss><description>&lt;P&gt;Θα σας εκφράσω μια σκέψη μου και μου λέτε πως το βλέπετε κι εσείς.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Λιγότερα Roundtrips&lt;/STRONG&gt;: Όταν έχεις μια multi-tier εφαρμογή προσπαθείς να ελαττώσεις όσο γίνεται τις κλήσεις από το ένα tier στο άλλο (συνήθως μεταξύ του end-user client και του application server). Ο σκοπός είναι πάντα να βελτιώσεις το performance και το scalability. Δηλαδή πιο γρήγορος client και λιγότερα resources στον server.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Modularity&lt;/STRONG&gt;: Όταν έχεις ένα modular client (modules προστίθενται/ενεργοποιηούνται ανάλογα με configuration και άλλα κριτήρια) προσπαθείς να κρατήσεις αυτά τα modules ανεξάρτητα το ένα από το άλλο. π.χ. στην εικόνα υπάρχουν 2 modules που καλούν τον server για να πάρουν τα data που θέλουν να εμφανίσουν. Δεν γίνεται μια κλήση για να φέρει τα data και για τα δυο, γιατί πολύ απλά&amp;nbsp;δεν είναι απαραίτητο ότι και τα δυο αυτά modules θα είναι ορατά. Επίσης δεν είναι απαραίτητο ότι είναι ορατά μόνο αυτά. Μπορεί αν υπάρχουν και άλλα ορατά modules!&lt;/P&gt;
&lt;P&gt;Τι κάνουμε λοιπόν (με σειρά ευκολίας και λιγότερων συμβιβασμών);&lt;/P&gt;
&lt;P&gt;α) &lt;STRONG&gt;Cache&lt;/STRONG&gt;: Όπου είναι δυνατόν προσπαθούμε να χρησιμοποιήσουμε κάποιας μορφής cache. Έτσι&amp;nbsp;αφήνουμε τα modules να κάνουν τις κλήσεις που θέλουν ανεξάρτητα από τα άλλα (καλό modularity),&amp;nbsp;αλλά τα data να έρχονται από την cache χωρίς να γίνεται κλήση στον server (λιγότερα roundtrips).&lt;/P&gt;
&lt;P&gt;β) &lt;STRONG&gt;Asynchronous calls&lt;/STRONG&gt;: Χρησιμοποιούμε ασύγχρονες κλήσεις για το φόρτωμα των δεδομένων. Δεν γλιτώνουμε roundtrips αλλά πιθανότατα κάνουμε τον client να λειτουργεί πιο γρήγορα μια που τα modules θα καλούν τον server παράλληλα και όχι το ένα μετά το άλλο.&lt;/P&gt;
&lt;P&gt;γ) &lt;STRONG&gt;Sacrifice&lt;/STRONG&gt;: Προσπαθούμε να ομαδοποιήσουμε κάποιες κλήσεις θυσιάζοντας το modularity. π.χ. ενώνουμε κάποια modules που θεωρούμε ότι το πιθανότερο είναι να λειτουργούν ταυτόχρονα.&lt;/P&gt;
&lt;P&gt;δ)&amp;nbsp;&lt;STRONG&gt;Composite Server Calls&lt;/STRONG&gt;:&amp;nbsp;Δημιουργούμε κάποιους mediators/proxies στον client τους οποίους καλούν τα modules αντί να καλούν απευθείας τον server. Αυτοί οι mediators γνωρίζουν ποια modules είναι ενεργά και ξέρουν ότι κάποια στιγμή θα λάβουν κλήσεις από αυτά. Καλούν λοιπόν μια φορά τον server και φέρνουν όλα τα data που θέλουν τα modules χρησιμοποιώντας μια composite server method που παίρνει ένα array από requests (ένα request από κάθε module) και επιστρέφει ένα array από responses. Όταν πάρουν την απάντηση με το array από τα responses το&amp;nbsp;κρατάνε κάπου και όταν τα modules καλούν δίνουν έτοιμες τις απαντήσεις.&lt;/P&gt;</description></item><item><title>Ερώτηση σχετικά με multilayer αρχιτεκτονική και domain driven design</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/54596.aspx</link><pubDate>Mon, 19 Oct 2009 07:54:57 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:54596</guid><dc:creator>epp1123</dc:creator><slash:comments>2</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/54596.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=16&amp;PostID=54596</wfw:commentRss><description>Αν πω ότι θέλω να φτιάξω μία multilayered εφαρμογή είναι το ίδιο με το να πω ότι θα φτιάξω μία domain driven εφαρμογή; Υπάρχουν διαφορές; Ναι ή όχι;</description></item><item><title>Όχι άλλο version / feature hell ... </title><link>https://www.dotnetzone.gr:443/cs/forums/thread/54341.aspx</link><pubDate>Fri, 09 Oct 2009 20:53:07 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:54341</guid><dc:creator>anjelinio</dc:creator><slash:comments>1</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/54341.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=16&amp;PostID=54341</wfw:commentRss><description>&lt;P&gt;Πάει καιρός τώρα, που εμπλέκομαι σε ένα "μεγάλο" project, σε μια τράπεζα.&lt;/P&gt;
&lt;P&gt;Για κάποιο λόγο που δεν ελέγχω λοιπόν, αποφασίστηκε να κάνουμε develop παράλληλα 2 ή και 3 ακόμα versions, τα οποία περιέχουν features ( &lt;EM&gt;ή παραλλαγές&amp;nbsp;του ίδιου feature&lt;/EM&gt; ) και γίνονται αυτόνομα deploy στην παραγωγή απο τους admins της τράπεζας. &lt;/P&gt;
&lt;P&gt;Τώρα, αυτό το πράγμα σημαίνει ότι στον ίδιο κώδικα, μπορεί 2 ή 3 άνθρωποι να γράφουν διαφορετικά πράγματα ανάλογα για ποιό version γράφουν. Code branches&amp;nbsp;στον TFS, merge branches όταν κάτι πάει παραγωγή κτλ. κτλ. ... ένας διαχειριστικός εφιάλτης !&lt;/P&gt;
&lt;P&gt;Οπότε μια μέρα σκέφτηκα ότι αυτή η κατάσταση δεν πάει άλλο ... τελικά θα βρεθούμε σε καταστάσεις όπου έχουμε χάσει κώδικα, ή ο λάθος&amp;nbsp;κώδικας επικράτησε και διάφορα τέτοια τραγελαφικά. Άρα, έπρεπε κάτι να γίνει για να κάνουμε όλοι develop σε ένα κοινό codebase, αλλά να τρέχουν τα τάδε ή τα δείνα κωμάτια κώδικα, ανάλογα με το version/feature το οποίο&amp;nbsp;θέλουμε να τρέχει ανα πάσα στιγμή. &lt;/P&gt;
&lt;P&gt;Σκεπτόμενος επι του προβήματος λοιπόν, είδα ότι κατα βάση πρέπει να λύσω 2 προβλήματα:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Σε επίπεδο configuration, πρέπει να φιλτράρω xml fragments βάσει ενός current version name&lt;/LI&gt;
&lt;LI&gt;Σε επίπεδο κώδικα, πρέπει να τρέχει ένα κομμάτι κώδικα βάσει ενός current version name, ή κάποιες φορές ένα άλλο αν το τρέχον version δεν είναι αυτό που θέλω.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;Έγραψα λοιπον μια μικρή σχετικά κλάσση, η οποία κάνει αυτά ακριβώς τα πράγματα. Διαβάζει μια λίστα απο versions/features απο το&amp;nbsp;app config, και βάσει αυτών φιλτράρω τα configuration&amp;nbsp;αρχεία μας, και μου δίνει και κάποιες μεθόδους στο επίπεδο του κώδικα που τρέχω κάτι αν το τρέχον version είναι το ΧΧΧ,&amp;nbsp;overload που του δίνω και τον κώδικα που τρέχει αν το version ΔΕΝ είναι το ΧΧΧ, και κάνα-δύο ακόμα που μου λένε αν το ΧΧΧ είναι μέσα στα τρέχοντα version/feature names κτλ. &lt;/P&gt;&lt;PRE&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: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;class&lt;/SPAN&gt; VersionFilter {


        &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;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:green;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;/// Filters an Xml file&lt;/SPAN&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;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:green;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;/// &amp;lt;param name="inputNode"&amp;gt;&amp;lt;/param&amp;gt;&lt;/SPAN&gt;
        &lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:green;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;/// &amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;&lt;/SPAN&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;static&lt;/SPAN&gt; XmlElement FilterForCurrentVersions(XmlElement inputNode);

        &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;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:green;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;/// Checks if the givern version string is actually included in the CurrentVersions&lt;/SPAN&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;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:green;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;/// &amp;lt;param name="versionString"&amp;gt;&amp;lt;/param&amp;gt;&lt;/SPAN&gt;
        &lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:green;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;/// &amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;&lt;/SPAN&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;static&lt;/SPAN&gt; &lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;bool&lt;/SPAN&gt; IsCurrentVersion(&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;string&lt;/SPAN&gt; versionString);

        &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;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:green;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;/// Runs the runForVersion code if the versionString is included in the active versions, else it runs runIfNotVersion&lt;/SPAN&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;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:green;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;/// &amp;lt;param name="versionString"&amp;gt;&amp;lt;/param&amp;gt;&lt;/SPAN&gt;
        &lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:green;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;/// &amp;lt;param name="runForVersion"&amp;gt;&amp;lt;/param&amp;gt;&lt;/SPAN&gt;
        &lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:green;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;/// &amp;lt;param name="runIfNotVersion"&amp;gt;&amp;lt;/param&amp;gt;&lt;/SPAN&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;static&lt;/SPAN&gt; &lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;void&lt;/SPAN&gt; RunForVersion(&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;string&lt;/SPAN&gt; versionString, Action runForVersion, Action runIfNotVersion);

        &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;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:green;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;/// Runs the given code, only if the given version string is incluyded in the "active" versions ... &lt;/SPAN&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;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:green;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;/// &amp;lt;param name="versionString"&amp;gt;&amp;lt;/param&amp;gt;&lt;/SPAN&gt;
        &lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:green;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;/// &amp;lt;param name="runForVersion"&amp;gt;&amp;lt;/param&amp;gt;&lt;/SPAN&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;static&lt;/SPAN&gt; &lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;void&lt;/SPAN&gt; RunForVersion(&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;string&lt;/SPAN&gt; versionString, Action runForVersion);

    }&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;Βέβαια,&amp;nbsp;έπρεπε να γίνουν κάποιες αλλαγές στον κώδικα εκεί που φορτώνω τα config files.&amp;nbsp;Και εκεί που θέλουμε να τρέξουμε το Α ή το Β ανάλογα με το τρέχον version, να χρησιμοποιήσουμε τη RunForVersion. Αλλά δεν ήταν και ιδιέταιρα πολλή δουλειά αυτό.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Κι&amp;nbsp;έτσι, μετά απο 1 - 2 μέρες τα cofig αρχεία μας είχαν πάνω στα elements ένα ForVersions attribute, και τα cs αρχεία μας χρησιμοποιούν το VersionFilter.RunForVersion:&lt;/P&gt;&lt;PRE&gt;&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:black;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt; &amp;lt;SiteMap&amp;gt;
   ... 
    &amp;lt;item allow-permissions=&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:#666666;FONT-FAMILY:Courier New;BACKGROUND-COLOR:#e4e4e4;"&gt;"ADD_CUSTOMER"&lt;/SPAN&gt; Text=&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:#666666;FONT-FAMILY:Courier New;BACKGROUND-COLOR:#e4e4e4;"&gt;"Νέα Ομάδα  Πελατών"&lt;/SPAN&gt;  NavigateUrl=&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:#666666;FONT-FAMILY:Courier New;BACKGROUND-COLOR:#e4e4e4;"&gt;"createJoint.action"&lt;/SPAN&gt; ForVersions=&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:#666666;FONT-FAMILY:Courier New;BACKGROUND-COLOR:#e4e4e4;"&gt;"Phase3"&lt;/SPAN&gt; /&amp;gt;
  ...
&amp;lt;/SiteMap&amp;gt;  &lt;/SPAN&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;..&amp;nbsp;και στον κώδικα ... &lt;/P&gt;&lt;PRE&gt;&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:black;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt; VersionFilter.RunForVersion(Constants.VersionNames.DocModificationHistory, 
                () =&amp;gt; { &lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;this&lt;/SPAN&gt;.chkNewReceipt.Visible &lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:red;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;=&lt;/SPAN&gt; !&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;this&lt;/SPAN&gt;.IsNewRecord &amp;amp;&amp;amp; !&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;string&lt;/SPAN&gt;.IsNullOrEmpty(&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;this&lt;/SPAN&gt;.ddlVerificationDocumentType.SelectedValue); },
                 () =&amp;gt; &lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;this&lt;/SPAN&gt;.chkNewReceipt.Attributes[&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:#666666;FONT-FAMILY:Courier New;BACKGROUND-COLOR:#e4e4e4;"&gt;"style"&lt;/SPAN&gt;] &lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:red;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;=&lt;/SPAN&gt; &lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:#666666;FONT-FAMILY:Courier New;BACKGROUND-COLOR:#e4e4e4;"&gt;"visibility: hidden"&lt;/SPAN&gt;
            );&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;P&gt;.. ε, και στο app config ένα ακόμα app setting με τα τρέχοντα version names ... &lt;/P&gt;&lt;PRE&gt;&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:black;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;&amp;lt;add key=&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:#666666;FONT-FAMILY:Courier New;BACKGROUND-COLOR:#e4e4e4;"&gt;"CurrentVersions"&lt;/SPAN&gt; value=&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:#666666;FONT-FAMILY:Courier New;BACKGROUND-COLOR:#e4e4e4;"&gt;"Phase2;Phase3;Groups;Flagging"&lt;/SPAN&gt;/&amp;gt;&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;... στην αρχή, άκουσα διάφορα. "&lt;EM&gt;Μα τι μας λές τώρα, το μόνο σίγουρο είναι το branching στον TFS&lt;/EM&gt;" ... "&lt;EM&gt;Μα τώρα τέτοια θα κάνουμε ...&lt;/EM&gt; " κτλ. κτλ. &lt;/P&gt;
&lt;P&gt;Αλλά ήρθε εκείνη η μέρα, όπου έπρεπε να ανοίξει ένα feature. Μέχρι τώρα, θα έπρεπε να μαζεύαμε dlls, aspx, scripts, να τα κάναμε installation bundle, γράψιμο οδηγιών για τους admins που θα κάνουν το deploy, deploy .. και μετά το απαραίτητο code branch merge για να συνεχίσουμε όλοι in-sync. &lt;/P&gt;
&lt;P&gt;Aντ' αυτού όμως, έφυγε ένα email το οποίο έλεγε ... "&lt;EM&gt;παρακαλώ βρείτε το app setting 'CurrentVersions' στο web config, και προσθέστε ένα ';Flagging' στο τέλος του value&lt;/EM&gt;". Περιττό να πώ ότι το deployment όλων των άλλων εταιριών που συμμετέχουν στο project παίρνει μισή μέρα τουλάχιστον. Και πλέον το να υποστηρίξω 2 και 3 και 5 UAT deployments παράλληλα με διαφορετικά features έχει γίνει παιχνίδι. &lt;/P&gt;
&lt;P&gt;Έτσι, μετά απο όλα αυτά, σκέφτηκα ότι αξίζει τον κόπο να μοιραστώ τη σκέψη με τον κόσμο, για να ακούσω και κάποια τρίτη γνώμη :]&lt;/P&gt;
&lt;P&gt;Πολύ καλό μας απόγευμα λοιπόν !&amp;nbsp;&lt;/P&gt;</description></item><item><title>Προβληματισμός σχεδιασμού εφαρμογής</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/52016.aspx</link><pubDate>Fri, 26 Jun 2009 09:32:40 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:52016</guid><dc:creator>Ηλίας Κεκάκος</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/52016.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=16&amp;PostID=52016</wfw:commentRss><description>Γειά σας παιδιά, έχω κολήσει και δεν ξέρω πως να σχεδιάσω μία φόρμα αγορών, γι' αυτό θα ήθελα την γώμη σας στο παρακάτω:&lt;br&gt;Θέλω να σχεδιάσω μιά φαρμογή στην οποία ο χρήστης θα καταχωρεί τις εντολές αγοράς και τις παραλαβές. Απ' ότι αντιλαμβάνομαι θα υπάρχούν 3 πίνακες: ένας με τα γενικάστοιχεία αγορών, ένας με τα προιόντα και τις ποσότητες προς αγορά που θα μπούν σε μιά φόρμα και θα καταχωρεί ο χρήστης. Μέχρι εδώ καλά, στις παραλαβές πως τις κάνουμε;&lt;br&gt;Ο πελάτης θέλει να μπορεί να κάνει τμηματικές παραλαβές. Άρα φαντάζομαι ότι θα υπάρχει μιά φόρμα παραλαβών όπου ο χρήστης θα επιλέχει μία εντολή αγοράς, θα του εμφανίζει τα προιόντα προς αγορά αυτής της εντολής και αυτός σ' ένα datagrid θα επιλέγει το προιόν την ποσότητα παραλαβής, το παραστατικό και την ημερομηνία παραλαβής. Θα μπορεί να καταχωρεί τόσα προιόντα όσα και αυτά της εντολής αγοράς χωρίς περιορισμό στην ποσότητα.&lt;br&gt;Δεν ξέρω κάτι δεν μου κολλάει, ποιά είναι η γνώμη σας;&lt;br&gt;&lt;br&gt;Ευχαριστώ &lt;br&gt;</description></item><item><title>Telerik OpenAccess ORM- Step by step tutorial ebook</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/51749.aspx</link><pubDate>Wed, 17 Jun 2009 18:29:26 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:51749</guid><dc:creator>nikolaosk</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/51749.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=16&amp;PostID=51749</wfw:commentRss><description>&lt;br&gt;H telerik διαθέτει στους developers ένα ebook πάνω στο OPENAccess ORM.&lt;br&gt;&lt;br&gt;μπορείτε να κατεβάσετε το ebook και τα samples από &lt;a href="http://www.telerik.com/support/documentation-and-tutorials/step-by-step-tutorial-for-openaccess.aspx"&gt;εδώ&lt;/a&gt;.&lt;br&gt;</description></item></channel></rss>