<?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>Απ: Application Logging</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/8683.aspx</link><pubDate>Sun, 15 Jan 2006 07:46:26 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:8683</guid><dc:creator>Χρήστος Γεωργακόπουλος</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/8683.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=16&amp;PostID=8683</wfw:commentRss><description>&lt;P&gt;Μερικές σκόριπιες σκέψεις και προσωπικές απόψεις:&lt;/P&gt;
&lt;P&gt;&lt;BLOCKQUOTE&gt;&lt;table width="85%"&gt;&lt;tr&gt;&lt;td class="txt4"&gt;&lt;img src="/cs/Themes/default/images/icon-quote.gif"&gt;&amp;nbsp;&lt;strong&gt;panko wrote:&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="quoteTable"&gt;&lt;table width="100%"&gt;&lt;tr&gt;&lt;td valign="top" class="txt4"&gt;Τι καταγράφω, Υπάρχει κάποια λίστα του τί πρέπει να καταγράφει μια εφαρμογή που σέβεται τον εαυτό της&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/BLOCKQUOTE&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Debugging information:&lt;/STRONG&gt; Πρέπει να καθορίσεις σε ποιο σημείο της εφαρμογής κάνεις το loging των exceptions που έρχονται. Αν είναι smart client εφαρμογή (με web services ενδιάμεσα) έχεις δύο σημεία: Τα webmethods στα web services και το UI στον client (ή κάπου "πάνω πάνω").&amp;nbsp;Αν δεν έχεις smart client παραλείπεις το πρώτο. Logging "πάνω-πάνω" σημαίνει ότι όλη σου η ιεραρχία κάνει handling τα exceptions της, προσθέτει τα δικά της κατανοητά μηνύματα και ξανακάνει throw τα exceptions μέχρι να φτάσουν στο ανώτερο επίπεδο το οποίο και θα κάνει log το πλήρες exception με όλα τα inner exceptions (και ίσως και ένα stack trace).&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Auditing:&lt;/STRONG&gt; Αυτό είναι δικό σου θέμα, καθώς αφορά αποκλειστικά το δικό σου μοντέλο business. Πρέπει να καθορίσεις ποιες ενέργειες είναι σημαντικές και είναι χρήσιμο να καταγραφούν, καθώς και τι στοιχεία καταγράφεις για αυτές τις ενέργειες. Σκέψου επίσης και πως θα εκμεταλευτείς αυτές τις πληροφορίες στο μέλλον (τι search θα κάνεις στα δεδομένα που θα μαζεύεις).&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Performace tracing:&lt;/STRONG&gt; Σκέψου ποια είναι τα bottlenecks της εφαρμογής και που πραγματικά αξίζει να κρατάς τέτοιες πληροφορίες. Αν το bottleneck είναι η βάση, τότε ίσως αυτό το θέμα πρέπει να παραμείνει στη βάση και η εφαρμογή να μην μετράει τίποτα. Αν έχεις μερικές ρουτίνες που όντως χρειάζονται σημαντικό υπολογιστικό χρόνο, που διαφέρει από client σε client και από χρήση σε χρήση, ίσως θα μπορούσε να σε καλύψει το γενικότερο auditing (απλά να καταγράφεις το χρόνο που χρειάστηκε η ενέργεια για να ολοκληρωθεί μαζί με τα υπόλοιπα στοιχεία που κρατάς). Αν δουλεύεις με smart client εκτός από τη βάση μπορεί να σου δώσει αρκετά καλά στοιχεία και ο IIS, οπότε δεν χρειάζεται κάποια ειδική μέριμνα στην εφαρμογή.&lt;/P&gt;
&lt;P&gt;&lt;BLOCKQUOTE&gt;&lt;table width="85%"&gt;&lt;tr&gt;&lt;td class="txt4"&gt;&lt;img src="/cs/Themes/default/images/icon-quote.gif"&gt;&amp;nbsp;&lt;strong&gt;panko wrote:&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="quoteTable"&gt;&lt;table width="100%"&gt;&lt;tr&gt;&lt;td valign="top" class="txt4"&gt;Σε ποια φάση της ανάπτυξης πρέπει να καθοριστούν όλα αυτά&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/BLOCKQUOTE&gt;&lt;/P&gt;
&lt;P&gt;Όσο πιο νωρίς τόσο πιο καλά. Ιδιαίτερα για το debug info και ιδιαίτερα αν συμμετέχουν πολλοί developers στο project, είναι απαραίτητο να καθορίσετε κάποια standards από την αρχή.&lt;/P&gt;
&lt;P&gt;&lt;BLOCKQUOTE&gt;&lt;table width="85%"&gt;&lt;tr&gt;&lt;td class="txt4"&gt;&lt;img src="/cs/Themes/default/images/icon-quote.gif"&gt;&amp;nbsp;&lt;strong&gt;panko wrote:&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="quoteTable"&gt;&lt;table width="100%"&gt;&lt;tr&gt;&lt;td valign="top" class="txt4"&gt;Πως συνδέονται με την καταγραφή απαιτήσεων&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/BLOCKQUOTE&gt;&lt;/P&gt;
&lt;P&gt;Ρώτα τον πελάτη αν θέλει να καταγράφονται κάποιες ενέργειες (για το Auditing). Για τα debug info, είναι θέμα δικής σου ευκολίας και ο πελάτης δεν χρειάζεται να ξέρει τίποτα. Για το performace είναι ανάμικτο, πρέπει να δεις αν ο πελάτης θέλει τέτοια στοιχεία αλλά και εσύ θα βοηθηθείς από αυτό.&lt;/P&gt;
&lt;P&gt;&lt;BLOCKQUOTE&gt;&lt;table width="85%"&gt;&lt;tr&gt;&lt;td class="txt4"&gt;&lt;img src="/cs/Themes/default/images/icon-quote.gif"&gt;&amp;nbsp;&lt;strong&gt;panko wrote:&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="quoteTable"&gt;&lt;table width="100%"&gt;&lt;tr&gt;&lt;td valign="top" class="txt4"&gt;Πιθανές κατηγοριοποιήσεις των καταγραφομένων events&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/BLOCKQUOTE&gt;&lt;/P&gt;
&lt;P&gt;Έχει να κάνει αρκετά με το project αυτό το θέμα, αλλά και με τον τρόπο που δουλεύετε. Αν πχ, κάθε developer αναλαμβάνει κάποιες φόρμες, μια αποτελεσματική κατηγοριοποίηση θα χώριζε τα events ανάλογα με τη φόρμα που παρουσιάστηκαν για να έχει ο κάθε developer μπροστά του αυτά που τον αφορούν. Αν κάθε developer δουλεύει διαφορετικό layer, ίσως να χρειαζόταν αντίστοιχα διαφορετική κατηγοριοποίηση.&lt;/P&gt;
&lt;P&gt;&lt;BLOCKQUOTE&gt;&lt;table width="85%"&gt;&lt;tr&gt;&lt;td class="txt4"&gt;&lt;img src="/cs/Themes/default/images/icon-quote.gif"&gt;&amp;nbsp;&lt;strong&gt;panko wrote:&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="quoteTable"&gt;&lt;table width="100%"&gt;&lt;tr&gt;&lt;td valign="top" class="txt4"&gt;Προτάσεις για τις πληροφορίες που πρέπει να καταγράφονται στα διάφορα tiers της εφαρμογής -&amp;nbsp;άλλα πράγματα θέλω στο data, άλλα στο business&amp;nbsp;και άλλα στο UI. Τι γίνεται με τους perfomance counters, Πως καταλαβαίνω ποιούς πρέπει να κατασκευάσω κλπ &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/BLOCKQUOTE&gt;&lt;/P&gt;
&lt;P&gt;Δεν μπορώ να σκεφτώ κάτι για αυτά, ίσως αν μας έλεγες μερικά πράγματα παραπάνω για την εφαρμογή;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description></item><item><title>Application Logging</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/8682.aspx</link><pubDate>Sun, 15 Jan 2006 06:59:02 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:8682</guid><dc:creator>Panagiotis Kontopoulos</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/8682.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=16&amp;PostID=8682</wfw:commentRss><description>&lt;P&gt;Πρόσφατα, στα πλαίσια ενός έργου με απασχόλησε το θέμα του Application Logging. Δηλαδή της ενσωμάτωσης μέσα σε μια εφαρμογή της λογικής εκείνης που θα επιτρέψει την λεπτομερή καταγραφή των ενεργειών που γίνονται (με επιτυχία ή όχι) μαζί με ένα σύνολο συνοδευτικών πληροφοριών, &amp;nbsp;με σκοπό τα στοιχεία αυτά να μπορούν να χρησιμοποιηθούν είτε σε κάποιο μελλοντικό auditing, είτε για performance tracing, είτε ακόμη και για debugging του περιβάλλοντος παραγωγής. &lt;/P&gt;
&lt;P&gt;Αναρωτιόμουνα λοιπόν αν σας έχει απασχολήσει το θέμα, και προσοχή δεν εννοώ από τεχνικής άποψης γιατί εκεί τα πράγματα είναι απλά, Enterprise Library ή Log4Net σε συνδυασμό με ένα Monitoring εργαλείο τύπου MOM και καθαρίσαμε. Με ενδιαφέρουν τυχόν απόψεις σας ή παραπομπές γύρω από το business του πράγματος.&lt;/P&gt;
&lt;P&gt;- Τι καταγράφω, Υπάρχει κάποια λίστα του τί πρέπει να καταγράφει μια εφαρμογή που σέβεται τον εαυτό της, Σε ποια φάση της ανάπτυξης πρέπει να καθοριστούν όλα αυτά, Πως συνδέονται με την καταγραφή απαιτήσεων, Πιθανές κατηγοριοποιήσεις των καταγραφομένων events, Προτάσεις για τις πληροφορίες που πρέπει να καταγράφονται στα διάφορα tiers της εφαρμογής -&amp;nbsp;άλλα πράγματα θέλω στο data, άλλα στο business&amp;nbsp;και άλλα στο UI, Τι γίνεται με τους perfomance counters, Πως καταλαβαίνω ποιούς πρέπει να κατασκευάσω κλπ&lt;/P&gt;
&lt;P&gt;- Και βέβαια δεν ξεχνάμε τα τεχνικά θέματα της υπόθεσης, όπως : Performance, Μέγεθος κώδικα,&amp;nbsp;Συχνότητα, Που καταγράφω τι, κλπ&lt;/P&gt;
&lt;P&gt;Κάθε συνεισφορά ευπρόσδεκτη.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description></item></channel></rss>