<?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>Απ: Uploading/Downloading αρχείων μέσω web</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/24892.aspx</link><pubDate>Tue, 13 Feb 2007 01:07:11 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:24892</guid><dc:creator>Dimitris Papadimitriou</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/24892.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=16&amp;PostID=24892</wfw:commentRss><description>&lt;p&gt;&lt;BLOCKQUOTE&gt;&lt;div&gt;&lt;img src="http://www.dotnetzone.gr/cs/Themes/default/images/icon-quote.gif"&gt; &lt;strong&gt;Mitsaras:&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;Έχω υλοποιήσει κάτι παρόμοιο χρησιμοποιώντας την πρώτη λύση, μόνο που λαμβάνω τα δεδομένα ως byte[] σε chunks, και μαζί με αυτά αποστέλω και το checksum του τρέχοντος chunk (για verification κάθε chunk). Το κάθε πακέτο είναι 128KB + 32byte checksum.&lt;br&gt;Υπάρχει overhead (λόγω των πολλών κλήσεων), αλλά η λύση είναι scalable, καθώς έχω μεταφέρει με επιτυχία αρχεία της τάξης των 500MB σε 20-30 clients ταυτόχρονα, με υποστήριξη resume.&lt;/div&gt;&lt;/BLOCKQUOTE&gt;&lt;/p&gt;&lt;p&gt;Ναι, υπάρχει λίγο overhead, αλλά δουλεύει αξιόπιστα.&lt;br&gt;&lt;br&gt;&lt;BLOCKQUOTE&gt;&lt;div&gt;&lt;img src="http://www.dotnetzone.gr/cs/Themes/default/images/icon-quote.gif"&gt; &lt;strong&gt;Mitsaras:&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;Για κάτι πιο "formal",&amp;nbsp; ίσως να ήθελες να ρίξεις μια ματιά και σε αυτό (το οποίο χρησιμοποιεί WSE): &lt;a href="http://www.codeproject.com/soap/MTOMWebServices.asp"&gt;http://www.codeproject.com/soap/MTOMWebServices.asp&lt;/a&gt;&lt;br&gt;&lt;/div&gt;&lt;/BLOCKQUOTE&gt;&lt;/p&gt;&lt;p&gt;Το είχα δει αυτό στο παρελθόν, λιγάκι επιπόλαια βέβαια! Είδα ότι έχει κάνει και κάποιες προσθήκες. Θα το κοιτάξω πιο προσεκτικά.&lt;br&gt;&lt;/p&gt;</description></item><item><title>Απ: Uploading/Downloading αρχείων μέσω web</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/24880.aspx</link><pubDate>Mon, 12 Feb 2007 23:11:13 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:24880</guid><dc:creator>Mitsaras</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/24880.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=16&amp;PostID=24880</wfw:commentRss><description>Έχω υλοποιήσει κάτι παρόμοιο χρησιμοποιώντας την πρώτη λύση, μόνο που λαμβάνω τα δεδομένα ως byte[] σε chunks, και μαζί με αυτά αποστέλω και το checksum του τρέχοντος chunk (για verification κάθε chunk). Το κάθε πακέτο είναι 128KB + 32byte checksum.&lt;br&gt;Υπάρχει overhead (λόγω των πολλών κλήσεων), αλλά η λύση είναι scalable, καθώς έχω μεταφέρει με επιτυχία αρχεία της τάξης των 500MB σε 20-30 clients ταυτόχρονα, με υποστήριξη resume.&lt;br&gt;&lt;br&gt;Ωστόσο, δεν έχω υλοποιήσει security μηχανισμούς (γιατί δεν ήταν απαιτούμενο). Για κάτι πιο "formal",&amp;nbsp; ίσως να ήθελες να ρίξεις μια ματιά και σε αυτό (το οποίο χρησιμοποιεί WSE): &lt;a href="http://www.codeproject.com/soap/MTOMWebServices.asp"&gt;http://www.codeproject.com/soap/MTOMWebServices.asp&lt;/a&gt;&lt;br&gt;</description></item><item><title>Uploading/Downloading αρχείων μέσω web</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/24878.aspx</link><pubDate>Mon, 12 Feb 2007 22:56:45 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:24878</guid><dc:creator>Dimitris Papadimitriou</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/24878.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=16&amp;PostID=24878</wfw:commentRss><description>&lt;p&gt;Έχω μια διαδικασία που δέχεται κάποιες παραμέτρους με σκοπό να επιστρέψει ένα μεγάλο αρχείο ανάλογα με αυτές τις παραμέτρους. Ο client είναι windows forms και ο server είναι asp.net web services. Οπότε αν θέλω να εκτελέσω την όλη διαδικασία με μια κλήση, θα πρέπει να περάσω τις παραμέτρους σαν arguments ενός service και να επιστρέψω το αρχείο σαν return value. Φυσικά για λόγους scalability θα ήθελα η διαδικασία να υποστηρίζει μεγάλα αρχεία (π.χ. 100MB). Σκέφτομαι δυο λύσεις:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Χωρίζω το αρχείο σε κομμάτια on the fly. Στέλνω πίσω το πρώτο κομμάτι του αρχείου σαν return value του service και στη συνέχεια ο client ζητάει τα κομμάτια από κάποιο άλλο generic service δίνοντας κάτι σαν ticket, το οποίο επίσης πήρε από την πρώτη κλήση.&lt;br&gt;- GetFile(param1 as string, param2 as string, param3 as string, byref ticket as string) as string&lt;br&gt;- GetFilePart(ticket as string) as string&lt;br&gt;&lt;/li&gt;&lt;ol&gt;&lt;li&gt;&lt;img src="http://www.dotnetzone.gr/cs/emoticons/emotion-21.gif" alt="Yes" /&gt; Μπορώ να έχω progress του download&lt;/li&gt;&lt;li&gt;&lt;img src="http://www.dotnetzone.gr/cs/emoticons/emotion-21.gif" alt="Yes" /&gt; Χρησιμοποιώ web service που ταιριάζει με την υπόλοιπη σχεδίαση του συστήματος&lt;/li&gt;&lt;li&gt;&lt;img src="http://www.dotnetzone.gr/cs/emoticons/emotion-45.gif" alt="No" /&gt; Είναι λίγο customιά ο τρόπος κατεβάσματος του αρχείου και ίσως προσθέτει λίγο παραπάνω φόρτο λόγω διαδοχικών κλήσεων web service&lt;br&gt;&lt;/li&gt;&lt;/ol&gt;&lt;li&gt;Χρησιμοποιώ ένα HTTP Handler αντί για web service. Περνάω τις παραμέτρους στο query string και επιστρέφω το αρχείο στο response του handler.&lt;/li&gt;&lt;ol&gt;&lt;li&gt;&lt;img src="http://www.dotnetzone.gr/cs/emoticons/emotion-21.gif" alt="Yes" /&gt; Αρκετά standard τρόπος μεταφοράς αρχείου μέσω IIS&lt;br&gt;&lt;/li&gt;&lt;li&gt;&lt;img src="http://www.dotnetzone.gr/cs/emoticons/emotion-21.gif" alt="Yes" /&gt; Πιο γρήγορος από ότι το web service&lt;/li&gt;&lt;li&gt;&lt;img src="http://www.dotnetzone.gr/cs/emoticons/emotion-45.gif" alt="No" /&gt; Δεν μπορώ να έχω progress του download (???? ή μπορώ ????)&lt;/li&gt;&lt;li&gt;&lt;img src="http://www.dotnetzone.gr/cs/emoticons/emotion-45.gif" alt="No" /&gt; Λίγο custom τρόπος επικοινωνίας για το σύστημά μου (όλη η υπόλοιπη επικοινωνία είναι με web services)&lt;/li&gt;&lt;/ol&gt;&lt;/ol&gt;&lt;p&gt;Το ίδιο περίπου θέλω να κάνω και για uploading αρχείου. Σε αυτή την περίπτωση οι παράμετροι θα καθορίζουν την τύχη του αρχείου στον server και το αρχείο επίσης μπορεί να είναι μεγαλούτσικο.&amp;nbsp;&lt;/p&gt;&lt;p&gt;Θέλετε να μοιραστείτε την γνώμη σας;&lt;br&gt;&lt;/p&gt;</description></item></channel></rss>