<?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>ASP.NET WebForms</title><link>https://www.dotnetzone.gr:443/cs/forums/13/ShowForum.aspx</link><description>Θέματα για web εφαρμογές, σε ASP.NET WebForms</description><dc:language>el</dc:language><generator>CommunityServer 2.1 SP3 (Build: 20423.1)</generator><item><title>Απ: Migrating από μονολιθικό application σε multi-project: Πρόβλημα μεταβλητών</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/4592.aspx</link><pubDate>Wed, 24 Aug 2005 17:26:52 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:4592</guid><dc:creator>Sunburn</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/4592.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=13&amp;PostID=4592</wfw:commentRss><description>Ευχαριστώ για την απάντηση. Έπρεπε να διευκρινίσω οτι δεν χρησιμοποιώ σχεδόν καθόλου τα Session &amp; Application objects για τον λόγο ακριβώς που επισημαίνεις. Απλά έχω κάποια συγκεκριμένα classes με τις πληροφορίες που χρειάζομαι (profile, app settings etc.) και τα κάvω instantiate στα Application_Start &amp; Session_start events. &lt;br&gt;&lt;br&gt;Από την έρευνα που έκανα, βρήκα 2 κύριες κατευθύνσεις για την αντιμετώπιση του μονολιθικού προβλήματος:&lt;br&gt;&lt;br&gt;1) Ένα project, πολλαπλά DLLs:&lt;br&gt;http://www.chez.com/scribe/en/asp.net/184.htm&lt;br&gt;http://www.codeproject.com/aspnet/VSMaker.asp&lt;br&gt;&lt;br&gt;2) Ένα application, πολλαπλά projects:&lt;br&gt;http://www.kbalertz.com/kb_Q307467.aspx#XSLTH3139121122120121120120&lt;br&gt;http://www.codeproject.com/aspnet/sepmultweb.asp&lt;br&gt;&lt;br&gt;Η δεύτερη λύση μάλλον εξυπηρετεί τις ανάγκες μου καλύτερα. Το ιδανικό θα ήταν να μπορέσω να τοποθετήσω τα shared data &amp; functions σε ένα ξεχωριστό "core" class library το οποίο θα γίνει referenced τόσο από τα "satellite" projects όσο και από το κύριο project. Με αυτό τον τρόπο θα λυνόταν και το ζήτημα του circular reference. &lt;br&gt;&lt;br&gt;Εν πάσει περιπτώσει, ευχαριστώ για την άμεση απάντηση!&lt;br&gt;&lt;br&gt;</description></item><item><title>Απ: Migrating από μονολιθικό application σε multi-project: Πρόβλημα μεταβλητών</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/4578.aspx</link><pubDate>Wed, 24 Aug 2005 06:12:14 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:4578</guid><dc:creator>rousso</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/4578.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=13&amp;PostID=4578</wfw:commentRss><description>&lt;P&gt;Θέμα λογικής διάρθρωσης είναι...&lt;/P&gt;
&lt;P&gt;Δεν λύνεται με καμία συνταγή εκτός (ίσως) από την ακόλουθη:&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;Δόμησε τον κώδικά σου από το γενικότερο στο ειδικότερο και βάλε το ειδικότερο να "μιλάει" με το γενικότερο με τρόπους απολύτως ανεξάρτητους από οτιδήποτε άλλο τους οποίους θα καθορίζει αποκλειστικά το γενικότερο. &lt;/P&gt;
&lt;P&gt;Δηλαδή στην περίπτωσή σου: αν το γενικότερο "φυλάσει" μια παράμετρο σε ένα Session variable, το ειδικότερο δεν πρέπει να το γνωρίζει αυτό και δεν πρέπει (παρά το γεγονός ότι έχει πρόσβαση στα Session variables) να πηγαίνει κατευθείαν στο Session (με Session["something"]) και να πάιρνει την τιμή. Αντίθετα το γενικότερο θα πρέπει να διαθέτει ένα public μηχανισμό (property ή&amp;nbsp;method) τον οποίο θα χρησιμοποιεί το ειδικότερο για να πάρει τα δεδομένα που θέλει.&lt;/P&gt;
&lt;P&gt;Η πρακτική να τα διαβάζεις όλα από κάποιου είδους κοινά publicly available resources (μεταβλητές) δεν είναι καλή και ειδικά αν αυτά τα resources είναι τα Application ή τα Session variables...&lt;/P&gt;
&lt;P&gt;Σαν βοηθητική τεχνική σου προτείνω να εξαφανίζεις μία μία όλες τις application &amp;amp; session scope μεταβλητές σου μέσα σε classes και να διορθωνεις ένα ένα&amp;nbsp;τα compile time errors. (Ελπίζω να τις έχεις μέσα σε Properties ή Methods και να μην τις χρησιμοποιείες παντού με Appliction["xxx"] ή Session["xxx"] κλήσεις γιατί θα δυσκολευτείς πολύ).&lt;/P&gt;
&lt;P&gt;Μην θεωρείς τίποτα δεδομένο εκτός από τα πράγματα που μπορεί να ελέγξει ο compiler.&lt;/P&gt;
&lt;P&gt;Π.χ.ο compiler δεν μπορεί να ελέγξει&amp;nbsp;τίποτε για την έφραση Session["blahblah"] και (ειδικά αν υπάρχει αυτούσια 10 φορές σε διάφορα σημεία του κώδικά σου. Αν όμως αντί για Session["blahblah"] έχεις δώσει κάτι σαν MyClass.Blahblah, (όπου MyClass.Blahblah είναι κάποιο property του στύλ: class MyClass { public object Blahblah { get { return Session["blahblah"]; } } }), τότε μόλις αλλάξει assembly το MyClass ο compiler θα σου βρεί όλα τα σημεία που πρέπει να διορθώσεις (τα οποία είναι και τα πιθανά σημεία λάθους που τώρα αναζητάς με trial&amp;amp;error).&lt;/P&gt;
&lt;P&gt;good luck&lt;BR&gt;rousso&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;υ/γ: Προσεκτικά μόνο στα μεγάλα restructures μη γίνει κανένα κακό. Ελπίζω να το το έχεις σε source control.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description></item><item><title>Migrating από μονολιθικό application σε multi-project: Πρόβλημα μεταβλητών</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/4567.aspx</link><pubDate>Wed, 24 Aug 2005 02:58:57 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:4567</guid><dc:creator>Sunburn</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/4567.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=13&amp;PostID=4567</wfw:commentRss><description>Γεια χαρα σε όλους.&lt;br&gt;
&lt;br&gt;
Αντιμετωπίζω ένα πρόβλημα το οποίο είμαι σίγουρος πως λύνεται πολύ εύκολα, αλλά ακόμα δεν έχω βρεί την λύση.&lt;br&gt;
&lt;br&gt;
Αναπτύσσω εδώ και αρκετό καιρό μια web εφαρμογή σε ASP.NET 1.1, η οποία
με έχει εξυπηρετήσει αρκετά καλά. Ξεκίνησε σαν ένα μικρού μεγέθους
solution και σιγά-σιγά γιγαντώθηκε (ως συνήθως). Το θέμα είναι οτι το
solution άρχισε μονολιθικά ("one dll to rule them all"), και συνέχισε
έτσι εως σήμερα, με αποτέλεσμα να έχει φτάσει το κύριο dll τα 900-950K
σε μέγεθος και να γίνει πλέον επιτακτική η διάσπαση της εφαρμογής σε
ένα multi-tier (ουσιαστικά multi-project) σχέδιο. Οπότε, δημιουργώ
μερικά δευτερεύοντα projects και διανέμω τον κώδικα σε αυτά, ώστε να
δημιουργήσω assemblies που θα χρησιμοποιήσω από το κύριο project. &lt;br&gt;
&lt;br&gt;
Εδώ βρίσκεται και το πρόβλημα. Καθώς τοποθετώ τα κομμάτια του κώδικα σε
ξεχωριστά projects, αρχίζουν (φυσικά) να γκρινιάζουν οτι τους λείπουν
διάφορες application &amp;amp; session-scope μεταβλητές τις οποίες εως τώρα
έβλεπαν μια χαρά. Το πρώτο που σκέφτηκα ήταν να αλλάξω όλα τα functions
στα δευτερεύοντα projects ώστε να παίρνουν σαν παραμέτρους τις
μεταβλητές που εως τώρα απλά άρπαζαν από τη μνήμη (π.χ. τα DB
connection strings). Αυτό όμως απαιτεί αρκετή δουλειά και δεν μπορώ να
πιστέψω ότι δεν υπάρχει πιο απλός τρόπος. Δοκίμασα να κάνω reference to
πρωτεύον project από τα δευτερέυοντα μπας και δω τις μεταβλητές ετσι,
αλλα το VS γκρίνιαξε για circular reference (σωστά, αφού είχα κάνει ήδη
reference τα δευτερεύοντα projects από το πρωτεύον).&lt;br&gt;
&lt;br&gt;
Είμαι σίγουρος οτι υπάρχει μια πολύ απλή λύση σε αυτό το πρόβλημα, αλλά
δεν την έχω βρεί ακόμα. Ιδέες/προτάσεις από μυαλά πιο έμπειρα στο
συγκεκριμένο θέμα ευπρόσδεκτες.&lt;br&gt;</description></item></channel></rss>