Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Uploading/Downloading αρχείων μέσω web

Îåêßíçóå áðü ôï ìÝëïò Dimitris Papadimitriou. Τελευταία δημοσίευση από το μέλος Dimitris Papadimitriou στις 12-02-2007, 17:07. Υπάρχουν 2 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  12-02-2007, 14:56 24878

    Uploading/Downloading αρχείων μέσω web

    Έχω μια διαδικασία που δέχεται κάποιες παραμέτρους με σκοπό να επιστρέψει ένα μεγάλο αρχείο ανάλογα με αυτές τις παραμέτρους. Ο client είναι windows forms και ο server είναι asp.net web services. Οπότε αν θέλω να εκτελέσω την όλη διαδικασία με μια κλήση, θα πρέπει να περάσω τις παραμέτρους σαν arguments ενός service και να επιστρέψω το αρχείο σαν return value. Φυσικά για λόγους scalability θα ήθελα η διαδικασία να υποστηρίζει μεγάλα αρχεία (π.χ. 100MB). Σκέφτομαι δυο λύσεις:

    1. Χωρίζω το αρχείο σε κομμάτια on the fly. Στέλνω πίσω το πρώτο κομμάτι του αρχείου σαν return value του service και στη συνέχεια ο client ζητάει τα κομμάτια από κάποιο άλλο generic service δίνοντας κάτι σαν ticket, το οποίο επίσης πήρε από την πρώτη κλήση.
      - GetFile(param1 as string, param2 as string, param3 as string, byref ticket as string) as string
      - GetFilePart(ticket as string) as string
      1. Yes Μπορώ να έχω progress του download
      2. Yes Χρησιμοποιώ web service που ταιριάζει με την υπόλοιπη σχεδίαση του συστήματος
      3. No Είναι λίγο customιά ο τρόπος κατεβάσματος του αρχείου και ίσως προσθέτει λίγο παραπάνω φόρτο λόγω διαδοχικών κλήσεων web service
    2. Χρησιμοποιώ ένα HTTP Handler αντί για web service. Περνάω τις παραμέτρους στο query string και επιστρέφω το αρχείο στο response του handler.
      1. Yes Αρκετά standard τρόπος μεταφοράς αρχείου μέσω IIS
      2. Yes Πιο γρήγορος από ότι το web service
      3. No Δεν μπορώ να έχω progress του download (???? ή μπορώ ????)
      4. No Λίγο custom τρόπος επικοινωνίας για το σύστημά μου (όλη η υπόλοιπη επικοινωνία είναι με web services)

    Το ίδιο περίπου θέλω να κάνω και για uploading αρχείου. Σε αυτή την περίπτωση οι παράμετροι θα καθορίζουν την τύχη του αρχείου στον server και το αρχείο επίσης μπορεί να είναι μεγαλούτσικο. 

    Θέλετε να μοιραστείτε την γνώμη σας;


    Dimitris Papadimitriou
    Software Development Professional
    dotNETZone.gr News

    Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Διαβάστε επίσης τους όρους χρήσης.
  •  12-02-2007, 15:11 24880 σε απάντηση της 24878

    Απ: Uploading/Downloading αρχείων μέσω web

    Έχω υλοποιήσει κάτι παρόμοιο χρησιμοποιώντας την πρώτη λύση, μόνο που λαμβάνω τα δεδομένα ως byte[] σε chunks, και μαζί με αυτά αποστέλω και το checksum του τρέχοντος chunk (για verification κάθε chunk). Το κάθε πακέτο είναι 128KB + 32byte checksum.
    Υπάρχει overhead (λόγω των πολλών κλήσεων), αλλά η λύση είναι scalable, καθώς έχω μεταφέρει με επιτυχία αρχεία της τάξης των 500MB σε 20-30 clients ταυτόχρονα, με υποστήριξη resume.

    Ωστόσο, δεν έχω υλοποιήσει security μηχανισμούς (γιατί δεν ήταν απαιτούμενο). Για κάτι πιο "formal",  ίσως να ήθελες να ρίξεις μια ματιά και σε αυτό (το οποίο χρησιμοποιεί WSE): http://www.codeproject.com/soap/MTOMWebServices.asp

    Μην αφήνετε τα media να σας "ταΐζουν"!
  •  12-02-2007, 17:07 24892 σε απάντηση της 24880

    Απ: Uploading/Downloading αρχείων μέσω web

    Mitsaras:
    Έχω υλοποιήσει κάτι παρόμοιο χρησιμοποιώντας την πρώτη λύση, μόνο που λαμβάνω τα δεδομένα ως byte[] σε chunks, και μαζί με αυτά αποστέλω και το checksum του τρέχοντος chunk (για verification κάθε chunk). Το κάθε πακέτο είναι 128KB + 32byte checksum.
    Υπάρχει overhead (λόγω των πολλών κλήσεων), αλλά η λύση είναι scalable, καθώς έχω μεταφέρει με επιτυχία αρχεία της τάξης των 500MB σε 20-30 clients ταυτόχρονα, με υποστήριξη resume.

    Ναι, υπάρχει λίγο overhead, αλλά δουλεύει αξιόπιστα.

    Mitsaras:
    Για κάτι πιο "formal",  ίσως να ήθελες να ρίξεις μια ματιά και σε αυτό (το οποίο χρησιμοποιεί WSE): http://www.codeproject.com/soap/MTOMWebServices.asp

    Το είχα δει αυτό στο παρελθόν, λιγάκι επιπόλαια βέβαια! Είδα ότι έχει κάνει και κάποιες προσθήκες. Θα το κοιτάξω πιο προσεκτικά.


    Dimitris Papadimitriou
    Software Development Professional
    dotNETZone.gr News

    Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Διαβάστε επίσης τους όρους χρήσης.
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems