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

 

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

Συμπίεση μεταφερόμενων δεδομένων από και προς smart clients - web services

Îåêßíçóå áðü ôï ìÝëïò vagelious. Τελευταία δημοσίευση από το μέλος KelMan στις 05-12-2007, 11:00. Υπάρχουν 4 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  04-12-2007, 10:56 37994

    Συμπίεση μεταφερόμενων δεδομένων από και προς smart clients - web services

    Γεια σε όλους.

    Γνωρίζει κανείς αν μπορώ τελικά με κάποιο τρόπο να συμπιέσω τα δεδομένα που στέλνω σε ένα smart client απο ένα web service?

    Πιο συγκεκριμένα, (αφου web service και smart client ειναι σε .net) θέλω απλα να επιστρέψω ενα datatable στον client, και να το κάνω αυτό
    με κάποιας μορφής συμπίεση!

    Βρήκα αρκετές ενδιαφέροντες προτάσεις (binary formatting serialization, προσθήκη φίλτρων συμπιεσης) οι οποίες όμως δεν μπορούν να εφαρμοστούν στο compact framework.

    Μήπως κάνω λάθος??
    Υπάρχει τρόπος?

    Ευχαριστώ!
  •  05-12-2007, 00:16 38014 σε απάντηση της 37994

    Απ: Συμπίεση μεταφερόμενων δεδομένων από και προς smart clients - web services

    Με ένα γρήγορο search στο Google ( για ".NET Compact binary web service" ), το τρίτο link με πήγε σε αυτό το pfd.

    Είναι το project κάποιου φοιτητή μάλλον, ο οποίος  - πολύ έξυπνα - χρησιμοποιεί IIS Http Compression στο server, και ένα απλό unzip στον client, σε Compact framework, εν έτη 2003 Big Smile

     
     ... πολύ έξυπνος ο μικρός, αναρωτιέμαι που να δουλεύει τώρα.

    Angel
    O:]
  •  05-12-2007, 09:55 38018 σε απάντηση της 38014

    Απ: Συμπίεση μεταφερόμενων δεδομένων από και προς smart clients - web services

    Το project ειναι ενδιαφέρον και ευχαριστώ για την απάντηση.
    Ωστόσο:
        βρισκόμαστε στο 2008!!! και στη version 3.5 του framework. Δεν θα ήθελα λοιπόν να δεχτώ ότι για ένα τέτοιο πρόβλημα δεν υπάρχει σύγχρονη λύση.
        Ναι θα μπορούσα να χρησιμοποιώ byte arrays και 3rd party εργαλεία για compression αλλά τότε ποιος ο λόγος για τον οποίον έγιναν serializable τα datatables και τα datasets???
        Μόνο για thick clients (οπου υποστηρίζεται το binary formatting)??? Η μόνο για πολύ μικρά μεγέθη δεδομένων??
       
       
  •  05-12-2007, 10:36 38022 σε απάντηση της 38018

    Απ: Συμπίεση μεταφερόμενων δεδομένων από και προς smart clients - web services

    Μα υπάρχει λύση! Θα βρεις ένα sample για συμπίεση με GZip στο WCF SDK, αν και δεν υποστηρίζει κάποιο standard. Ο Pablo Cibraro έχει επίσης υλοποιήσει το WS-Compression για WCF. Ψάχνοντας στο Google θα βρεις και υλοποιήσεις του WS-Compression για WSE3. Αν δεν θέλεις να χρησιμοποιήσεις το WS-Compression, δοκίμασες να ενεργοποιήσεις το IIS compression, το οποίο συμπιέζει τα δεδομένα σε επίπεδο HTTP.

    Τέλος, θα πρέπει να λάβεις σοβαρά υπόψη ότι τα datasets και τα datatables δεν φτιάχτηκαν ποτέ για να στέλνονται μέσω web services. Ένα web service το οποίο στέλνει datasets μπορεί να χρησιμοποιηθεί μόνο από .NET clients, καταργώντας έτσι το βασικό πλεονέκτημα των web services, το interoperability. Επίσης, είναι κακή σχεδίαση για την εφαρμογή, γιατί προϋποθέτει ότι οι clients καταλαβαίνουν πως δουλεύει ο server εσωτερικά - πως δημιουργεί πίνακες και τί πεδία χρησιμοποιεί, τί σημαίνουν τα πεδία. Αν κάνεις κάποια αλλαγή στο dataset, οι clients θα πάψουν να δουλεύουν.

    Τα web services είναι φτιαγμένα βασικά για ανταλλαγή μηνυμάτων, τα οποία έχουν νόημα άσχετα από την υλοποίηση του client ή του server. Ο client και ο server διαβάζουν από το μήνυμα μόνο τα πεδία που τους ενδιαφέρουν. Αν θέλεις να εκτελέσεις μία μεταφορά χρημάτων από ένα λογαριασμό σε άλλο, θα στείλεις στο κατάλληλο web service ένα μήνυμα που θα ζητάει τη μεταφορά και θα αναφέρει τους εμπλεκόμενους λογαριασμούς. Αν στο μέλλον θέλεις να προσθέσεις και άλλα στοιχεία (π.χ. ενδιάμεσες τράπεζες) το προσθέτεις ως optional πεδίο και οι παλιοί clients θα συνεχίσουν να δουλεύουν.

    Το WCF και το ASMX μπορεί να σου δίνουν την εντύπωση ότι δεν υπάρχει ανταλλαγή μηνυμάτων αλλά κλήση μεθόδων. Αυτό το κάνουν για να διευκολύνουν τον προγραμματισμό, μπορεί όμως να σε κάνουν να φτιάξεις μία εύθραυστη εφαρμογη η οποία δεν θα μπορεί να επικοινωνήσει με άλλες.


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  05-12-2007, 11:00 38024 σε απάντηση της 38018

    Απ: Συμπίεση μεταφερόμενων δεδομένων από και προς smart clients - web services

    Στο Compact Framework 3.5 δεν υποστηρίζεται ο BinaryFormater μόνο ο SoapFormatter, ωστόσο παρέχεται ο GzipEncoder και το System.IO.Compression namespace που υποστηρίζει και compression over HTTP. Το GzipEncoder μπορείς να το χρησιμοποιήσεις σε συνδυασμό με το WCF (δες εδώ http://msdn2.microsoft.com/en-us/library/ms751458.aspx)

    Δεν έχω παίξει με τα παραπάνω, αλλά πιστεύω είναι μια καλή άκρη ...για να βγάλεις άκρη

    Επίσης, ρίξε και ματιά εδώ μήπως σε βολέψει: http://www.codeplex.com/wscompresscf


    Vir prudens non contra ventum mingit
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems