Τρίτη 19 Φεβρουαρίου 2008

Γιατι XML-RPC;

Το XML-RPC έχει πολλά πλεονεκτήματα έναντι άλλων τυποποιήσεων που χρησιμοποιούνται για Web Services, όπως το SOAP.
Το πιο βασικό πλεονέκτημα είναι ότι είναι απλό και δεν επιδέχεται προσθήκης επεκτάσεων, όπως γίνεται με τα πιο σύγχρονα πρότυπα που σου δίνουν δυνατότητα να δημιουργήσεις custom complex τύπους και σε οδηγούν στο να φτιάξεις έναν κλώνο του μοντέλου του συστήματος. Αυτό μοιάζει να ειναι εύκολο και πολύ αντικειμενοστραφές, αλλά στην πραγματικότα καταλήγει να ειναι δύσκολα συντηρίσιμο. Εκτώς κι αν το σύστημα κατασκευάζεται για να λειτουργήσει αποκλειστικά και μονο με Web Services, οπότε το μοναδικό μοντέλο που θα υπάρχει ειναι αυτό των Web Services.
Το δεύτερο πλεονέκτημα ειναι ότι είναι πολύ απλό και ξεκάθαρο το τι μπορείς να κάνεις. Είναι σαφές ότι οι τύποι που μπορείς να χρησιμοποιήσεις ειναι Double, Integer, String, Boolean, Date, Base64, Array, Struct. Που είναι τύποι που υποστηρίζονται από όλες τις γνωστές γλώσσες προγραμματισμού κι όχι οτιδήποτε, όπως πχ Serializable που θα υποστηριζοταν μονο από Java. Οπότε Web Services γραμμένα σύμφωνα με το XML-RPC specification μπορούν να κληθούν [θεωρητικά] από οποιαδήποτε γνωστή γλώσσα προγραμματισμού, όσο περίπλοκα κι αν έχουν φτιαχθει. Αλλά επισης αυτοι οι τύποι ειναι αρκετοι, αν όχι και παραπάνω απο αρκετοι [ένα Integer μπορεί να γραφεί ως Double, ή ένα Array ως Struct κ.ο.κ.] ώστε να καλύψουν κάθε περιπτωση.
Τρίτον, αυτή η απλότητα το καθιστα πιο εύκολο για τον προγραμματιστή, αλλά και για το ίδιο το μηχάνημα το οποίο δε θα χρειαστεί να κάνει περιπλοκους "αυτοματοποιημένους" ελέγχους ορθότητας του μηνύματος, απλά θα το πάρει και θα το μετατρέψει σε αυτους τους στοιχειώδης τύπους που μπορεί να χρηισμοποιήσει ο Developer.

Υλοποιήσεις για xml-rpc apis μπορείτε να βρείτε για πάρα πολλές γλώσσες προγραμματιμού, αλλά σίγουρα τα καλύτερα είναι για Java και .NET που θεωρουνται και οι πλέον δημοφιλείς.

Το api που χρησιμοποιώ εγώ ειναι της Apache http://ws.apache.org/xmlrpc/xmlrpc2/. Το οποίο προσφερει κάποιες επεκτάσεις, που καλό ειναι να χρησιμοποιηθούν με πολύ προσοχή. Αυτές οι επεκτάσεις προσφέρουν, μεταξύ αλλων, ένα πολύ χρήσιμο χαρακτηριστικό. Την συμπίεση των XML μηνυμάτων. Αυτό έχει ως αποτέλεσμα την σημαντική μείωση της κίνησης. Καθώς τα XML που δημιουργούνται είναι αρκετα μεγαλα, ενώ στην πραγματικότητα ειναι επανάληψη ενος πολύ μικρού λεξιλογίου. Να σημειωθεί ότι ο server τα στέλνει συμπιεσμένα μονο εαν στο header του request υπάρχει σχετική παραμετρος. Πράγμα που κάνει το συγκεκριμένο api να παραμένει συμβατο με το πρότυπο καθως μονο αν του δωθει η "εντολη" θα αξιοποιήσει το feature αυτο.

Αλλά επίσης υπάρχουν αρκετα ακομα, τα οποια δεν έχω χρησιμοποιήσεις καθώς η γλώσσα προγραμματισμού που χρησιμοποιώ είναι η Java. Οποτε και δε μπορώ να σας προτεινω κάποιο συγκεκριμένο! Αλλά ο φίλος μου ο Γούγλης ξέρει!

LinkWithin

Blog Widget by LinkWithin

Mobile edition