Καλησπέρα παιδιά,
μιας και τις τελευταίες μέρες δεν παίζει πολλή δουλειά,
έχω τον καιρό να ασχολούμαι με φιλοσοφικές αναζητήσεις. Μια εκ των
οποίων αποφάσισα να μοιραστώ μαζί σας, να δούμε και μια άλλη άποψη.
Η μορφή που έχουν - ως έχει - τα περισσότερα Web Services που έχω δεί,
θυμίζει Remote Procedure Call με τη μόνη διαφορά να είναι η χρήση του
HTTP και SOAP αντί για κάποιο proprietary πρωτόκολλο τύπου Remoting,
CORBA κτλ κτλ. Η ένστασή μου με τον παραπάνω τρόπο, είναι οτι δεν κάνει
expose ένα end-point ... πιο πολύ κάνει expose ένα API. Έτσι, στην
ουσία γράφεις tightly-bound κώδικα σα να είχες αυτά τα objects τοπικά.
Καλά ως εδώ ...
... αλλά ...
... όλη αυτή η όμορφη προτεινόμενη κατάσταση με τα SOA και τα σόγια που
λέει κι ο μέγιστος, δεν θα έπρεπε να μας σπρώχνει προς όσο το δυνατόν
πιο loosely-coupled τρόπους επικοινωνίας;;; Σκέφτηκα εγω ... και
(αντι)λέγω ...
Αντί να έχω ένα Web Service, ή μια πληθώρα απο Web Services στο ....
enterprise μου ( μπορείτε να με λέτε Captain Kirk... ) οι οποίες δίνουν
έξω ένα σωρό απο API-α, δεν θα ήταν πιο απλό και όμορφο να έχω μόνο
μία, η οποία έχει μόνο μια μέθοδο, καπως έτσι:
public IMessage ProcessRequest(IMessage request) { ... }
... και να έχω subclasses ενός abstract implementation του IMessage για
όλα τα μυνήματα και τις λειτουργίες όλων αυτών των Web Services που
προανέφερα; Πακετάκι με λίγο xml config, λίγο Xml Serialization και
λίγο reflection, θα μπορούσα να προσθέτω δυναμικά message handlers οι
οποίοι εξυπηρετούν νέους τύπους μυνημάτων, χωρίς ποτέ να χρειαστεί να
κάνω recompile το service μου, και χωρίς ποτέ να χρειαστεί καν να το
σταματήσω ...
( Αν δεν κάνω λάθος, και το ίδιο το SOAP πλέον, χρήσιμοποιεί κάποια
αντίστοιχη ιδέα - αυτό που ακούω να λένε οτι περάσαμε απο το SOAP/RPC
στο Document Literal SOAP ... αλλά θα σας γελάσω για τις λεπτομέρειες,
ίσως κάποιος άλλος γνωρίζει περισσότερα επι του θέματος και μας φωτίσει
όλους ... )
Ποιά η γνώμη σας για όλα αυτά;
Angel
O:]