SlideShare une entreprise Scribd logo
1  sur  18
ΜΑΪΤΗΣ ΑΝΤΩΝΗΣ it1020
1
Υπηρεσίες και ΣυναλλαγέςΠαγκόσμιου Ιστού
Θέμα :
Οι Υπηρεσίες Ιστού σε περιβάλλον .NET, και το Windows
Communication Framework.
Μαϊτης Αντώνιος
Email : antonismaitis@gmail.com
ΜΑΪΤΗΣ ΑΝΤΩΝΗΣ it1020
2
Εισαγωγή
Στην σύγχρονη αυτή εποχή οι ραγδαίες εξελίξεις στην τεχνολογία
φαντάζουν αδύνατες στην επαρκή παρακολούθηση τους ως γενικό
σύνολο. Η έρευνα αυτής της εργασίας εκπονείται στα πλαίσια του
μαθήματος Υπηρεσίες και Συναλλαγές Παγκοσμίου Ιστού του τμήματος
Εφαρμοσμένης Πληροφορικής και επικεντρώνεται στις υπηρεσίες ιστού
σε περιβάλλον .ΝΕΤ και σε ένα πλαίσιο για την οικοδόμηση
προσανατολισμένα δοσμένων υπηρεσιών σε εφαρμογές (service-
oriented applications) με την ονομασία Windows Communication
Framework (WCF).
ΜΑΪΤΗΣ ΑΝΤΩΝΗΣ it1020
3
Web Services
Η υπηρεσία ιστού είναι έννοια που πρόσφατα βρέθηκε στο προσκήνιο
χάρη σε μια τεχνολογία ανταλλαγής μηνυμάτων γνωστή ως SOAP.
Υπηρεσίες δικτύου ονομάζονται όλες εκείνες οι ομαδοποιημένες
τεχνολογίες που προσανατολίζονται διαδικτυακά. Οι υπηρεσίες αυτές
έχουν γίνει πλέον ένα σημαντικό κομμάτι κινητήριας δύναμης για τις
περισσότερεςκαι μεγαλύτερες εταιρίες παγκοσμίως.Η χρησιμότητα τους
προσαρμόζεται για πελάτες υπαλλήλους και προμηθευτές οι οποίοι
μέσω αυτών εξυπηρετούνται με μεγάλη διεκπεραιωτική ικανότητα από
πολλά και απομακρυσμένα γεωγραφικά σημεία. Τα web services
βασίζονται σε ανοιχτά πρότυπα όπως HTTP, XML και SOAP. Οι clients
ανταλλάσουν δεδομένα με τις υπηρεσίες χρησιμοποιώντας αυτά τα
πρότυπα οπότε η εγγραφή μιας υπηρεσίας σε λειτουργικό διαφορετικού
τύπου από αυτού που θα γίνει η εκτέλεση φαίνεται εκτός από
πραγματοποιήσιμη και αρκετά εύκολη. Οι υπηρεσίες ιστού κατά κανόνα
έχουν καταγραφεί όλες με το όνομα τους, ή τουλάχιστον όλες εκείνες
των οποίων ο δημιουργός τις έχει συμπεριλάβει στον κατάλογο UDDI.
Αυτός ο κατάλογος αποτελεί το συγκεντρωτικό όλων και είναι για ην
αναζήτηση των υπηρεσιών από μηχανές και όχι από εμάς. Το μέλλον
των υπηρεσιών ιστού κρίνεται ραγδαία αναπτυσσόμενο αλλά και βάση
για οποιαδήποτε άλλη ανάπτυξη στον χώρο του διαδικτύου. Μια
υπηρεσία Ιστού είναι μια διεπαφή με κάποια εφαρμογή που
επιτυγχάνεται με τη βοήθεια τεχνολογιών Διαδικτύου, συνήθως
τεχνολογιών Ιστού. Τυπικά παραδείγματα υπηρεσιών Ιστού είναι ένα
αίτημα για την τιμή μιας μετοχής ή ενός μερίσματος, ένα αίτημα για
διαθέσιμες θέσεις σε μια συγκεκριμένη πτήση, ένα αίτημα για την
παραγγελία και αποστολή ενός βιβλίου ή ένα αίτημα για τη βέλτιστη
διαδρομή από μια πόλη σε μια άλλη.
Αρχιτεκτονική υπηρεσιών Ιστού
Μια αρχιτεκτονική web services φαίνεται σε ένα απλό παράδειγμα
όπου ένας περιηγητής παράγει αιτήματα προς ένα διακομιστή Ιστού ή
προς ένα πρόγραμμα που φέρεται ως διακομιστής Ιστού το οποίο στην
ουσία καταλαβαίνει HTTP. Τα αιτήματα αποκωδικοποιούνται από τον
διακομιστή , ο οποίος στη συνέχεια προσπελαύνει μια συγκεκριμένη
ΜΑΪΤΗΣ ΑΝΤΩΝΗΣ it1020
4
εφαρμογή. Μια αρχιτεκτονική υπηρεσίας Ιστού έχει δύο τμήματα. Ένα
τμήμα ανεξάρτητο από πλατφόρμα υλοποίησης, που εκπροσωπείται
από τα μέρη της αρχιτεκτονικής που χρησιμοποιούν ανοικτά
πρωτόκολλα του Διαδικτύου, όπως HTTP και FTP, και ένα τμήμα
εξειδικευμένο σε συγκεκριμένη πλατφόρμα υλοποίησης, όπως LINUX ή
Windows. Η βασική ιδέα πίσω από τις υπηρεσίες Ιστού είναι ότι
βασίζονται στα μηνύματα, δηλαδή, χρησιμοποιούν ανοικτά
τυποποιημένα πρωτόκολλα όπως το HTTP για την ανταλλαγή
μηνυμάτων για την κλήση υπηρεσιών. Μια αρχιτεκτονική υπηρεσίας
Ιστού υλοποιείται σε πέντε επίπεδα. Αυτά ορίζονται ως ανακάλυψη,
περιγραφή, πακετάρισμα, μεταφορά και δίκτυο. Η ανακάλυψη είναι ένα
επίπεδο που επιτρέπει τους πελάτες που αναζητούν κάποια υπηρεσία
Ιστού να ανακτήσουν περιγραφές της υπηρεσίας Ιστού από τους
παροχείς. Αυτές περιλαμβάνουν και καθορισμό της διεπαφής με την
υπηρεσία, δηλαδή τι μηνύματα αναμένει και τι είδους αποκρίσεις στέλνει.
Υπάρχουν διάφορα πρότυπα για το επίπεδο της ανακάλυψης, όπως το
WDDI και το WS-inspection. Η περιγραφή είναι tο επίπεδο που παρέχει
περιγραφή των πρωτοκόλλων δικτύου, πακεταρίσματος και μεταφοράς
που χρησιμοποιεί η υπηρεσία και πρέπει να χρησιμοποιηθούν για την
επικοινωνία μαζί της. Υπάρχουν αρκετά αναδυόμενα και προτεινόμενα
πρότυπα γι' αυτό το επίπεδο όπως το WDSL και το RDF του W3
Consortium. Το πακετάρισμα περιγράφει τη μορφή των δεδομένων που
θα ανταλλαχθούν με την υπηρεσία Ιστού. Ποιά δεδομένα πρέπει να
αποσταλούν προς τη υπηρεσία για κάθε αίτημα και ποιά δεδομένα θα
αποστείλει η υπηρεσία ως απόκριση σε κάποιο αίτημα. Εδώ
χρησιμοποιείταιτο SOAP.Η μεταφορά περιλαμβάνει τις τεχνολογίες που
χρησιμοποιούνται για την αποστολή και παραλαβή μηνυμάτων. Αυτές
περιλαμβάνουν τα πρωτόκολλα TCP, HTTP, POP3, SMTP και FTP.
Τέλος το δίκτυο αντιστοιχεί στο επίπεδο δικτύου του πολυεπιπέδου
μοντέλου του Διαδικτύου. Παρέχει τις βασικές υπηρεσίες για
επεξεργασία λαθών, αποστολή μηνυμάτων, λήψη μηνυμάτων,
επικοινωνία με ξένους υπολογιστές και δρομολόγηση.
XML Web Services
Τα XML Web Services είναι εφαρμογές που εκτελούνται πάνω σε έναν
web server και κάνουν expose API functions, ή Web Methods, τα οποία
ΜΑΪΤΗΣ ΑΝΤΩΝΗΣ it1020
5
μπορούν να χρησιμοποιηθούν από clients στο Internet. Ουσιαστικά η
ολοκληρωμένη ενέργεια που γίνεται είναι η εισαγωγή από μέρους του
χρήστη ενός αιτήματος και η απόκριση από την υπηρεσία με το
ζητούμενο αποτέλεσμα. Ένα τέτοιο παράδειγμα είναι το Virtual Earth
όπου ο χρήστης εισάγει γεωγραφικέςσυντεταγμένες και αυτό επιστρέφει
την ακριβή τοποθεσία πάνω στον χάρτη.
.ΝΕΤ
Ο χώρος της πληροφορικής έχει πραγματοποιήσει στροφή από stand-
alone εφαρμογές και client/server εφαρμογές, σε λύσεις που ζουν και
τρέχουν στο web και είναι το ίδιο λειτουργικές και προσβάσιμες όσο και
οι μη διαδικτυακές εφαρμογές. Ακόμη και στις γλώσσες
προγραμματισμού έχουμε την μεταπήδηση από compiled σε scripting
γλώσσες, από rich GUIs σε HTML και από τον αντικειμενοστραφή
προγραμματισμόσε εμπορικές πλέον κατασκευασμένες εφαρμογές από
έναν πετυχημένο συνδυασμό HTML, DHTML, XML, COM κτλ. Το .ΝΕΤ
είναι ένα σύνολο από εργαλεία τα οποία συνδυάζονται για να φέρουν εις
πέρας την μετατροπή του Internet σε μια πλατφόρμα παροχής
υπηρεσιών λογισμικού.Ένα σημαντικό κομμάτιτης προσφοράςτου είναι
ότι προσφέρει ευκολίες ώστε να χρησιμοποιήσουμε το διαδίκτυο ως
μέσω μεταφοράς των αρχείων της εφαρμογής μας, με πολύ εύκολο
τρόπο (ClickOnce). Επίσης πολύ σημαντική είναι η δυνατότητα που μας
δίνει ένα κομμάτι του συνόλου των εργαλείων του για RAD (Rapid
Application Development) , δηλαδή την ταχεία ανάπτυξη εφαρμογών.
Αυτό το επιτυγχάνει δίνοντας στον χρήστη τη δυνατότητα να
χρησιμοποιεί έτοιμα και αποδοτικά κομμάτια κώδικα αλλά και ένα
σύνολο κλάσεων που βοηθούν τον προγραμματιστή να κερδίσει χρόνο
αλλά και απόδοση για τα project του.
.NET CLR
Ένα από τα βασικά στοιχεία του .ΝΕΤ είναι το .NET CLR. Η λειτουργία
αυτού είναι γραφικής εικονικής φύσης. Στην πράξη ενεργεί στο
λειτουργικό σύστημα παρέχοντας του ένα εικονικό περιβάλλον για το
hosting των διαχειριζόμενων εφαρμογών. Το CLR φορτώνει modules
ΜΑΪΤΗΣ ΑΝΤΩΝΗΣ it1020
6
που περιέχουν εκτελέσιμα και τρέχει τον κώδικά τους. Ο κώδικα μπορεί
να χαρακτηριστεί ως διαχειρίσιμος ή όχι , στην κανονική του ορολογία
managed or unmanaged. Σε κάθε περίπτωση το CLR κρίνει πως θα
ενεργήσει με αυτά. Ο διαχειρίσιμος κώδικας αποτελείται από εντολές
γραμμένες σε γλώσσα ψευδοκώδικα η οποία ονομάζεται CIL ( common
intermediate language ). Οι εντολές αυτής της γλώσσαςγίνονται compile
just in time σε native κώδικα στο run time. Οι μέθοδοι γίνονται συνήθως
μια φορά JIT compile πριν κληθούν για πρώτη φορά και έπειτα
κρατούνται στην μνήμη και παραμένουν εκεί για όλη την διάρκεια
λειτουργίας της εφαρμογής. Επίσης το CLR περιλαμβάνει ένα garbage
collector ο οποίος καταγράφει τις αναφορές στα αντικείμενα και τα
καταστρέφει όταν η μνήμη που καταλαμβάνουν δεν γίνεται πλέον
referenced και χρειάζεται κάπου αλλού. Ένα πλεονέκτημα που έχει είναι
ότι μπορεί να εκτελέσει κώδικα ο οποίος έχει μεταγλωττιστεί από C#, J#,
C, C++, VB και Jscriptσε CIL αλλά και με χρήση μεταφραστών για άλλες
γλώσσες.
Garbage Collector
Η εκτέλεση του Garbage Collector δεν γνωρίζουμε πότε θα κληθεί εκτός
αν τον καλέσουμε επίτηδες με την εντολή => GC.Collect();) . Πρακτικά
τρέχει όποτετο σύστημα χρειάζεται μνήμη. Όταν κληθεί καθαρίζει όλα τα
διαχειρίσιμα αντικείμενα που έχουμε δημιουργήσει. Το CLR
χρησιμοποιεί έναν από τους πολλούς αλγορίθμους του Garbage
Collector και συγκεκριμένα εκείνον που αντιστοιχεί σε κάθε αντικείμενο
που δημιουργείτε σε μια γενιά από objects. Στο .ΝΕΤ υπάρχουν τρείς
γενιές από αντικείμενα (0,1,2). Κάθε νέο δημιουργημένο αντικείμενο
αντιστοιχίζεται στη γενιά 0. Όταν εκτελεστεί το Garbage Collector και
παραμείνει το αντικείμενο αυτό τότεπαίρνει προαγωγήστο επίπεδο 1. Ο
Garbage Collector αφού κάνει collect στη γενιά 0 και δεν επαρκεί η
μνήμη τότε θα κάνει collect στη γενιά 1 και ούτω καθεξής. Ο Garbage
Collector επίσης κάνει release κρατώντας στη μνήμη του δείκτες που
ονομάζονται roots. Μέσω των roots o Garbage Collector ξέρει ποια
αντικείμενα χρησιμοποιούνται και ποια όχι. Με αυτήν την ιδιότητα που
έχει καταλαβαίνουμε πως το release που κάνει είναι πετυχημένο και
συγκεκριμένο. Για να αποφευχθεί το πρόβλημα του να γίνει collect ένα
αντικείμενο το οποίο 'κρέμεται' από κάποιο άλλο, ο Garbage Collector
ΜΑΪΤΗΣ ΑΝΤΩΝΗΣ it1020
7
δημιουργεί object graphs με τα αντικείμενα που είναι στη μνήμη κάθε
φορά που εκτελείται. Για όλους τους παραπάνω λόγους και όχι μόνο,
είναι πασιφανές ότι το Garbage collection έχει μεγάλο overhead.
Περιοχές Εφαρμογής
Ο παραδοσιακός τρόπος να απομονώνεις την μία εφαρμογή από την
άλλη είναι να τις κάνεις host σε διαφορετικά processes. Αυτή η μέθοδος
απαιτεί μεγάλη κατανάλωση μνήμης. Η αποτελεσματικότητα στην
διαχείριση μνήμης δεν είναι σημαντική σε client εφαρμογές, με
συστήματα ενός χρήστη, αλλά είναι κρίσιμη στην περίπτωσητων servers
οι οποίοιδιαχειρίζονται χιλιάδες χρήστες. Το CLR μπορεί να φιλοξενήσει
πολλές εφαρμογές σε ένα process. Αυτό γίνεται με το να διαχωρίζει το
process σε εικονικές περιοχές οι οποίες ονομάζονται περιοχές
εφαρμογής ή με την κανονική ορολογία application domains. Το CLR δεν
ξεκινάει ένα νέο process για κάθε εφαρμογή. Αντί αυτού, τρέχει μία
διαδικασία ή ένα σύνολο διαδικασιών και φιλοξενεί όλες τις ξεχωριστές
εφαρμογές στα application domains. Τα application domains είναι
ασφαλή όπως και τα processes γιατί σχηματίζουν όρια τα οποία δεν
μπορούν να παραβιάσουν οι managed εφαρμογές. Ωστόσο τα
application domains είναι πιο αποτελεσματικά από τα processes γιατί
ένα process μπορεί να φιλοξενήσει πολλά application domains αλλά και
γιατί οι βιβλιοθήκες μπορούν να φορτωθούν σε application domains και
να διαμοιραστούν σε όλους.
Managed Κώδικας
Διαχειρίσιμος ή managed κώδικας είναι κώδικας ο οποίος έχει
σχεδιαστεί να τρέχει υπό τον έλεγχο του CLR.Τα modules του managed
κώδικα είναι συνήθως της μορφής .ΕΧΕ, .DLL, ή NETMODULE. Κάθε
module managed κώδικα περιέχει τέσσερα στοιχεία, το Windows
Portable Executable File Header, τα Μεταδεδομένα, τα οποία
περιγράφουν το module και τις εξωτερικές συσχετίσεις του, το CLR
Header, όπου αποθηκεύονται πληροφορίες για την θέση του CIL και το
πού βρίσκονται τα μεταδεδομένα και τις πραγματικές CIL εντολές που
δημιουργήθηκαν από τον πηγαίο κώδικα.
ΜΑΪΤΗΣ ΑΝΤΩΝΗΣ it1020
8
Windows Portable Executable File Header
Τα εκτελέσιμα αρχεία ονομάζονται ELF στα *nix και PE στα WIN32
συστήματα. Όταν πάμε να εκτελέσουμε ένα .exe τότε το λειτουργικό και
ποιο συγκεκριμένα ο ProcessLoaderτου λειτουργικού ψάχνει το header
του αρχείου για να ελέγξει αν είναι έγκυρος (valid). Αν ικανοποιεί την
εγκυρότητα το εκτελεί. Στην περίπτωση που έχουμε εγκατεστημένο το
.ΝΕΤ framework στο μηχάνημα μας τότεο process loader τροποποιείται
έτσι ώστε μόλις δει ένα managed application να δώσει τον έλεγχο στο
CLR.
Μεταδεδομένα
Ο όρος μεταδεδομένα χαρακτηρίζει δεδομένα που αφορούν άλλα
δεδομένα. Κατά κανόνα, ένα σύνολο μεταδεδομένων περιγράφει ένα
άλλο σύνολο δεδομένων, το οποίο αποτελεί μια πηγή. Στον κόσμο του
.ΝΕΤ τα μεταδεδομένα τα μεταδεδομένα είναι μια περιοχή του module
στην οποία περιγράφεται το ίδιο το module. Τα μεταδεδομένα μοιάζουν
με τις COM βιβλιοθήκες, μιας και περιγράφουν τις ιδιότητες κάθε
στοιχείου του Module (attributes, location, dependencies, properties,
fields κτλ).
Assemblies
Tα assemblies είναι συλλογές ενός ή περισσότερων αρχείων τα οποία
ομαδοποιούνται για να σχηματίσουν μια λογική μονάδα και είναι
παρόμοια με το concept του “package” στην Java και την Lisp. Τα αρχεία
μπορούν να βρίσκονται σε οποιοδήποτε κατάλογο ξεκινώντας από το
root της εφαρμογής (εκεί που εκτελέστηκε το .exe ή .dll αρκεί να υπάρχει
σωστή αντιστοίχιση στα references. Μπορούν ακόμη να βρίσκονται και
στην GAC. Τα assemblies δημιουργούνται χρησιμοποιώντας ένα
εργαλείο που ονομάζεται AL (Assembly Linker). Η δομή του assembly
ορίζεται στο “manifest” μια περιοχή μέσα στο assembly η οποία περιέχει
τα στοιχεία όνομα, μια λίστα αρχείων μαζί με τα κρυπτογραφικά hashes,
μια λίστα τύπων δεδομένων που εξάγονται και εισάγονται από άλλα
αρχεία, αριθμό έκδοσης και culture string ( π.χ. en-US).
ΜΑΪΤΗΣ ΑΝΤΩΝΗΣ it1020
9
Ισχυρά και μη, ονόματα για Assemblies
Υπάρχουν δύο τύποι για assemblies: Τα ισχυρά και τα όχι- ισχυρά
ονόματα (strongly and weakly named assemblies). Τα μη-ισχυρά
ονόματα δεν χρησιμοποιούν κρυπτογραφικές υπογραφές για να
ταυτοποιήσουν τα ονόματα των στοιχείων και δεν μπορούν να
βρίσκονται στην Global Assembly Cache(GAC). Τα ισχυρά ονόματα
περιέχουν το publisher’s key και τις ψηφιακές υπογραφές που
χρησιμοποιήθηκανγια να αποθηκευτούντα components στο GAC – κάτι
το οποίο βοηθάει τον έλεγχο των εκδόσεων (version checking). Αυτό
είναι σημαντικό όταν τα components δημιουργούνται έτσι ώστε να
μπορούν να χρησιμοποιηθούναπό πολλούς χρήστες. Το .NET SDK έχει
ένα utility, το οποίο ονομάζεται SN, το οποίο δημιουργεί strongly named
assemblies αλλά και το AL μπορεί επίσης να χρησιμοποιηθεί για να
δημιουργήσει strongly named assemblies. Επίσης το VS.NET μπορεί να
δημιουργήσει SN assemblies. Τυπικά, το VS.NET θα συμπεριλάβει ένα
κλειδί και μία υπογραφή, εάν έχετε κάποια.
.NET Framework Class Library (FCL)
Ένα ακόμη βασικό στοιχείο του .ΝΕΤ είναι το .NET Framework Class
Library (FCL). Γενικά υπάρχουν περισσότεροι από 7000 τύποι classes,
structs, interfaces, enumarations και delegates στο .net framework class
library. Οι τύποι αυτοί είναι οργανωμένοι σε ένα σύνολο ιεραρχικών
Namespaces. Είναι αξιοσημείωτο ότι υπάρχει μεγάλη συνάφεια με τα
concepts της Java. Τα ονόματα αυτά εισάγονται μέσω C# και VB
imports.
GUIs – Graphical User Interfaces
Μέχρι πρόσφατα, τα περισσότερα μοντέρνα προγράμματα
χρησιμοποιούν ένα GUI όχι μόνο κείμενο αλλά και χαρακτήρες:
παράθυρα, μενού, κουμπιά κτλ. Από αυτά user χαρακτηρίζεται το
φυσικό πρόσωπο που χρησιμοποιεί το πρόγραμμα. Interface ορίζεται ο
τρόπος αλληλεπίδρασης με το πρόγραμμα ενώ τα τυπικά γραφικά
στοιχεία αποτελούν τα παράθυρα που εμφανίζουν τον γραφικό τρόπο
επικοινωνίας του χρήστη με την μηχανή τα menu με τις επιλογές και τα
ΜΑΪΤΗΣ ΑΝΤΩΝΗΣ it1020
10
ενέργειες επικοινωνίας και τα κουμπιά με τις εντολές που μας δίνεται η
δυνατότητα να επιλέξουμε.
Event-Driven Προγραμματισμός
Τα προγράμματα GUIS χρησιμοποιούν συχνά Event-Driven
Προγραμματισμό. Η μέθοδος αυτή βοηθάει λειτουργώντας ως
ανταποκριτήςαφού το πρόγραμμα περιμένει να συμβούν κάποια events
για να ανταποκριθεί.Τέτοιουείδους events είναι το κλικ του ποντικιού, το
drag , το πάτημα ενός κουμπιού στο πληκτρολόγιο κτλ. Ορισμένες
ορολογίες στο θέμα αυτό είναι το firing an event όταν ένα αντικείμενο
δημιουργεί ένα γεγονός, το listener-object όπου περιμένει να συμβεί
κάποιο event και το event handler που είναι η μέθοδος που απαντάει
στο event. Η διαφορά με τον παραδοσιακό λοιπόν προγραμματισμό
είναι ότι αντί για λίστα εντολών έχουμε τα αντικείμενα που ενεργοποιούν
τα γεγονότα και τα αντικείμενα που απαντούν σε γεγονότα – αποκρίσεις.
Επίσης στον παραδοσιακό προγραμματισμό το πρόγραμμα εκτελείται
από τον υπολογιστή ενώ εδώ η εκτέλεση εξαρτάται από
αλληλεπιδράσεις του χρήστη με τον υπολογιστήεξηγώντας πως το τι θα
εκτελείται αφορά και καθορίζεται από τα events.
Soap
Το SOAP είναι μια πρόσφατη τεχνολογία που επιτρέπει στα μηνύματα
να στέλνονται από πελάτες σε διακομιστές, από διακομιστές σε άλλους
διακομιστές και από διακομιστές σε πελάτες, να πακετάρονται με τέτοιο
τρόπο που όλες οι οντότητες που εμπλέκονται στην ανταλλαγή
μηνυμάτων να καταλαβαίνουν τη φύση των δεδομένων που
ανταλλάσσονται. Το SOAP έχει υλοποιηθεί με τη τεχνολογία XML. Ένα
μήνυμα SOAP περιέχει αρκετά δεδομένα ώστε ο παραλήπτης να μπορεί
να ενεργήσει και να προσφέρει την υπηρεσία που ζήτησε ο πελάτης που
έστειλε το μήνυμα. Τέλος τα μηνύματα SOAP αποτελούνται από ένα
περίβλημα που περιέχει μια προαιρετική κεφαλίδα και ένα υποχρεωτικό
σώμα.
ΜΑΪΤΗΣ ΑΝΤΩΝΗΣ it1020
11
WCF Web Services
Οι υπηρεσίες αυτές είναι χτισμένες χρησιμοποιώντας το Windows
Communication Framework, εργαλείο που αποτελείται από ποικιλία
βιβλιοθηκών και διευκολύνσεων για την εξυπηρέτηση του
προγραμματισμόωςπρος την ευκολία και συνεργασία για την συγγραφή
υπηρεσιών ιστού. Οι υπηρεσίες που δημιουργούνται ακολουθούν την
λογική ότι βρίσκονται σε έναν server και υπάρχουν ενδιαφερόμενοι
πελάτες που κάνουν χρήση αυτών. Η λογική της χρήσης των υπηρεσιών
ακολουθεί το μοντέλο πολλά προς πολλά από την άποψη ότι μία
υπηρεσία μπορεί να χρησιμοποιείται από πολλούς πελάτες αλλά και
ένας μόνο πελάτης μπορεί να χρησιμοποιεί πολλές υπηρεσίες. Οι
υπηρεσίες του WCF ακολουθούν το Web Services Description
Language Interface κι έτσι καθίσταται δυνατή η χρήση από
οποιονδήποτεWCF client θεωρώντας στην πράξη αμελητέο στοιχείο το
λειτουργικό στο οποίο γίνεται το Hosting. Οι υπηρεσίες του WCF
γίνονται Host στον IIS Server της Microsoft, στον οποίο επιβάλλεται να
υπάρχει εγκατεστημένο το .NET Framework για να μπορέσουν να
λειτουργήσουν σωστά οι υπηρεσίες. Ο τρόπος που οι υπηρεσίες
γίνονται Host, μοιάζει πολύ με τον τρόπο που ακολουθείτε για τις
ιστοσελίδες, μόνο που εδώ αντί να κάνουμε request στο server για να
πάρουμε μια ιστοσελίδα, κάνουμε request στο service στέλνοντάς του
δεδομένα, και το service με τη σειρά του μας στέλνει ένα response με
κάποια άλλα δεδομένα.
Δημιουργία WCF Web Service
Βήμα 1:
Ανοίγουμε το Visual Studio 2010 και επιλέγουμε File>New>Project και
στη συνέχεια επιλέγουμε στα Templates τη Visual C#>WCF και
διαλέγουμε το Template WCF Template Application. Στη συνέχεια αφού
δώσουμε το όνομα που θέλουμε στο project μας, πατάμε ΟΚ.
ΜΑΪΤΗΣ ΑΝΤΩΝΗΣ it1020
12
Βλέπουμε λοιπόν ότι το Visual Studio δημιούργησε το project μας και
στον Solution Explorer φαίνονται τα παρακάτω αρχεία:
Ας δούμε λοιπόν κάποια πράγματα για τα αρχεία αυτά:
IService1.cs:
Αποτελεί το interface του service που θα δημιουργήσουμε. Το αρχείο
αυτό περιέχει τις δηλώσεις των μεθόδωνπου θα χρησιμοποιήσουμε στο
ΜΑΪΤΗΣ ΑΝΤΩΝΗΣ it1020
13
service μας, καθώς επίσης και τις δηλώσεις των αντικειμένων (object)
που θα χρησιμοποιήσουμε.
Service1.svc.cs:
Αποτελεί την υλοποίηση των συναρτήσεων που αναφέρονται στο
interface που περιγράψαμε πιο πάνω. Στο αρχείο αυτό περιγράφονται
και υλοποιούνται αναλυτικά οι μέθοδοι που χρησιμοποιούμε.
Βήμα 2:
Ας δούμε ένα απλό σενάριο μιας WCF υπηρεσίας. Έστω λοιπόν ότι
θέλουμε να έχουμε μια μέθοδο στην οποία θα στέλνουμε ένα string και
θα μας επιστρέφει το μήνυμα “Hello World, “+το string που στείλαμε. Αν
στείλουμε για παράδειγμα “StudentGuru”, θέλουμε να μας επιστρέψει
“Hello World, StudentGuru”.
Η μέθοδος που αναφέρουμε θα μπορούσε να υλοποιείται ως εξής:
public string helloworld(string str)
{
string message = "Hello World, " + str;
return str;
}
Για να χρησιμοποιήσουμε την παραπάνω μέθοδο στο service μας, θα
πρέπει να κάνουμε τα εξής 2 πράγματα:
1.πρέπει να δηλώσουμε τη μέθοδό μας στο Interface του service
(IService1.cs).
2.πρέπει να δηλώσουμε την υλοποίηση της μεθόδου μας στο
service(Service1.svc.cs).
Για το 1ο βήμα, πηγαίνουμε στο αρχείο IService1.cs, και προσθέτουμε
τα εξής μέσα στο σώμα του public interface IService1
[OperationContract]
string helloworld(string str);
Με τον τρόπο αυτό, ενημερώνουμε το service για τη μέθοδό μας, για να
ξέρει πώς να χειριστεί τα δεδομένα που θα στείλουμε, και να γνωρίζει τι
ΜΑΪΤΗΣ ΑΝΤΩΝΗΣ it1020
14
θα είναι αυτό που θα μας επιστρέψει. Τώρα λοιπόν γνωρίζει το service
ότι όταν εμείς θα καλέσουμε τη μέθοδο helloworld, θα του στείλουμε και
ένα string κατά την κλήση της μεθόδου, ενώ όταν η μέθοδος
ολοκληρωθεί, θα μας επιστρέψει ένα string.
Για το 2ο βήμα, πηγαίνουμε στο αρχείο Service1.svc.cs, και
προσθέτουμε τα εξής, μέσα στο σώμα της public class Service1:
IService1
public string helloworld(string str)
{
string message = "Hello World, " + str;
return message;
}
Βλέπουμε λοιπόν ότι η κλάση Service1 υλοποιεί το Interface
IService1.Έχοντας δηλώσει λοιπόν τον ορισμό (definition) της μεθόδου
helloworld στο Interface IService1, στην κλάση Service1 δηλώνουμε την
υλοποίηση του Service αυτού. Στο σημείο αυτό, μπορούμε να τρέξουμε
το service που έχουμε φτιάξει για να δούμε αν και κατά πόσο λειτουργεί.
Βήμα 3ο:
Από το Visual Studio, επιλέγουμε run (F5) και παρατηρούμε ότι τρέχει ο
IISServer πάνω στον οποίο «σηκώνεται» και το service που έχουμε
φτιάξει:
Παράλληλα, ανοίγει το εργαλείο WCF Test Client, το οποίο θα μας
βοηθήσει στο debugging.Σε περίπτωση που δεν σας ανοίγει το εν λόγω
εργαλείο, μπορείτε να το βρείτε στο παρακάτω path: C:Program Files
(x86)Microsoft Visual Studio 10.0Common7IDEWcfTestClient.exe
ΜΑΪΤΗΣ ΑΝΤΩΝΗΣ it1020
15
Βήμα 4ο:
Αυτό που μας επιτρέπει να κάνουμε το WCF Test Client είναι να
στέλνουμε δεδομένα στο service που έχουμε φτιάξει και να μας δείχνει τι
επιστρέφει η κάθε μέθοδοςπου καλούμε, ώστε να ξέρουμε αν λειτουργεί
σωστά τοservice μας. Κάνουμε διπλό κλικ στη μέθοδο helloworld() που
δημιουργήσαμε πιο πάνω, και στη συνέχεια γράφουμε το string που
θέλουμε να στείλουμε στο πεδίοValue του str στο παράθυρο του
Request, και επιλέγουμε Invoke, για να δούμε τι θα επιστρέψει η
μέθοδος:
ΜΑΪΤΗΣ ΑΝΤΩΝΗΣ it1020
16
Βλέπουμε λοιπόν στο πεδίο Response το αποτέλεσμα που επιστρέφεται
από το service μας:
Έτσι διαπιστώνουμε ότι το service που έχουμε δημιουργήσει λειτουργεί
σωστά. Ακολουθώντας λοιπόν αυτήν την διαδικασία που περιγράψαμε
μπορούμε να προσθέσουμε και άλλες μεθόδους στο service μας οι
οποίες μπορεί να είναι πολύ πιο σύνθετες συγκριτικά με το hello world.
Μπορούμε για παράδειγμα να γράφουμε σε βάσεις δεδομένων, να
εκτελούμε πολύπλοκα queries και άλλα σχετικά.
ΜΑΪΤΗΣ ΑΝΤΩΝΗΣ it1020
17
Επίλογος
Η έρευνα που έγινε κρατάει πλέον δεδομένο ότι για να χρησιμοποιήσει
κάποιος αποτελεσματικά το Framework πρέπει να έχει μία στερεή
γνώση στον Αντικειμενοστραφή Προγραμματισμό. Λέγοντας ‘στερεή
γνώση’ δεν εννοώ τόσο τις τεχνικές λεπτομέρειες, όσο την ποιοτική
κατανόηση των δυνατοτήτων που προσφέρει στην μοντελοποίηση και
την αρχιτεκτονική ενός συστήματος. Φυσικά, πολλές από τις νέες
τεχνολογίες είναι καταπληκτικές. Όποιος έχει αναπτύξει κατανεμημένες
εφαρμογές χρησιμοποιώντας παλαιότερες τεχνολογίες όπως DCOM και
COM+ ή ακόμα και .NET Remoting ή XML Web Services δεν μπορεί
παρά να θαυμάσει την ευελιξία, την κομψότητα και την παραγωγικότητα
που προσφέρει και αναμένεται να δώσει περισσότερα στο μέλλον το
Windows Communication Foundation (WCF).
ΜΑΪΤΗΣ ΑΝΤΩΝΗΣ it1020
18
Βιβλιογραφία:
Αρχιτεκτονική Πλατφόρμας Υπηρεσιών Ιστού (Sanjiva
Weerawarana, Francisco Curbera, Frank Leyman, Tony Storey, Donald
F. Fergunson– Επιστημονικήεπιμέλεια Ελληνικής έκδοσης Δρ. Χρήστος
Κ. Γεωργιάδης)
C# 4.0 in a Nutshell: The Definitive Reference (In a Nutshell
(O'Reilly)
Professional WCF Programming: net development with the
Windows C.( Klein, Scott )
Πτυχιακή: Γεράσιμος Μηνιάτης ‘Η τεχνολογία των Web Services’
Ευχαριστώ θερμά:
Studentguru.gr
WCFtutorial.net
Allinonetraining.gr

Contenu connexe

En vedette

Tarea seminario 2 prácticas
Tarea seminario 2 prácticasTarea seminario 2 prácticas
Tarea seminario 2 prácticasnievesdejulian
 
Jaume bofill i mates power oui y omy
Jaume bofill i mates power oui y omyJaume bofill i mates power oui y omy
Jaume bofill i mates power oui y omyWidadOumaima
 
Dinksy_wizualizujemy dane, idee, procesy
Dinksy_wizualizujemy dane, idee, procesyDinksy_wizualizujemy dane, idee, procesy
Dinksy_wizualizujemy dane, idee, procesyAnna Pillar
 
Graham Dick CV Jan 2017
Graham Dick CV Jan 2017Graham Dick CV Jan 2017
Graham Dick CV Jan 2017Graham Dick
 

En vedette (6)

Tarea seminario 2 prácticas
Tarea seminario 2 prácticasTarea seminario 2 prácticas
Tarea seminario 2 prácticas
 
Jaume bofill i mates power oui y omy
Jaume bofill i mates power oui y omyJaume bofill i mates power oui y omy
Jaume bofill i mates power oui y omy
 
Update sepsis
Update sepsisUpdate sepsis
Update sepsis
 
Dinksy_wizualizujemy dane, idee, procesy
Dinksy_wizualizujemy dane, idee, procesyDinksy_wizualizujemy dane, idee, procesy
Dinksy_wizualizujemy dane, idee, procesy
 
Graham Dick CV Jan 2017
Graham Dick CV Jan 2017Graham Dick CV Jan 2017
Graham Dick CV Jan 2017
 
Dialnet
Dialnet Dialnet
Dialnet
 

Similaire à Μαϊτης Αντώνιος

Micro Front-ends and Microservices Architecture in Web Application Development
Micro Front-ends and Microservices Architecture in Web Application DevelopmentMicro Front-ends and Microservices Architecture in Web Application Development
Micro Front-ends and Microservices Architecture in Web Application DevelopmentISSEL
 
Η αρχιτεκτονική των Microservices και Micro Front-ends στην Ανάπτυξη Εφαρµογώ...
Η αρχιτεκτονική των Microservices και Micro Front-ends στην Ανάπτυξη Εφαρµογώ...Η αρχιτεκτονική των Microservices και Micro Front-ends στην Ανάπτυξη Εφαρµογώ...
Η αρχιτεκτονική των Microservices και Micro Front-ends στην Ανάπτυξη Εφαρµογώ...ISSEL
 
Η Ιστορία του Διαδικτύου
Η Ιστορία του ΔιαδικτύουΗ Ιστορία του Διαδικτύου
Η Ιστορία του ΔιαδικτύουMarios5oLuk
 
ΤΑΞΙΔΙ ΣΤΟ ΥΠΟΛΟΓΙΣΤΙΚΟ ΝΕΦΟΣ
ΤΑΞΙΔΙ ΣΤΟ ΥΠΟΛΟΓΙΣΤΙΚΟ ΝΕΦΟΣ ΤΑΞΙΔΙ ΣΤΟ ΥΠΟΛΟΓΙΣΤΙΚΟ ΝΕΦΟΣ
ΤΑΞΙΔΙ ΣΤΟ ΥΠΟΛΟΓΙΣΤΙΚΟ ΝΕΦΟΣ 1lykspartis
 
Ruby On Rails Introduction [Εισαγωγή στο Rails]
Ruby On Rails Introduction [Εισαγωγή στο Rails]Ruby On Rails Introduction [Εισαγωγή στο Rails]
Ruby On Rails Introduction [Εισαγωγή στο Rails]Nikos Dimitrakopoulos
 
κατηγορίες ως πρός την αρχιτεκτονική τους
κατηγορίες ως πρός την αρχιτεκτονική τουςκατηγορίες ως πρός την αρχιτεκτονική τους
κατηγορίες ως πρός την αρχιτεκτονική τουςbasflor
 
Mixalis_ploutarxos
Mixalis_ploutarxosMixalis_ploutarxos
Mixalis_ploutarxospanat5lthes
 
Διαδίκτυο
ΔιαδίκτυοΔιαδίκτυο
Διαδίκτυοpanat5lthes
 
ΔιαδίκτυοGt
ΔιαδίκτυοGtΔιαδίκτυοGt
ΔιαδίκτυοGtpanat5lthes
 
Το Azure δεν είναι χορτοφάγο! - 59ο DotNetZone Event
Το Azure δεν είναι χορτοφάγο! - 59ο DotNetZone EventΤο Azure δεν είναι χορτοφάγο! - 59ο DotNetZone Event
Το Azure δεν είναι χορτοφάγο! - 59ο DotNetZone EventPanagiotis Kanavos
 
Τεχνολογίες_Διαδικτύου.pdf
Τεχνολογίες_Διαδικτύου.pdfΤεχνολογίες_Διαδικτύου.pdf
Τεχνολογίες_Διαδικτύου.pdfssuser9421c7
 
2- IoT - 4th Industrial Revolution.ppt
2- IoT - 4th Industrial Revolution.ppt2- IoT - 4th Industrial Revolution.ppt
2- IoT - 4th Industrial Revolution.pptAlex420296
 
Java free-book
Java free-bookJava free-book
Java free-bookble nature
 

Similaire à Μαϊτης Αντώνιος (20)

Micro Front-ends and Microservices Architecture in Web Application Development
Micro Front-ends and Microservices Architecture in Web Application DevelopmentMicro Front-ends and Microservices Architecture in Web Application Development
Micro Front-ends and Microservices Architecture in Web Application Development
 
Η αρχιτεκτονική των Microservices και Micro Front-ends στην Ανάπτυξη Εφαρµογώ...
Η αρχιτεκτονική των Microservices και Micro Front-ends στην Ανάπτυξη Εφαρµογώ...Η αρχιτεκτονική των Microservices και Micro Front-ends στην Ανάπτυξη Εφαρµογώ...
Η αρχιτεκτονική των Microservices και Micro Front-ends στην Ανάπτυξη Εφαρµογώ...
 
Η Ιστορία του Διαδικτύου
Η Ιστορία του ΔιαδικτύουΗ Ιστορία του Διαδικτύου
Η Ιστορία του Διαδικτύου
 
ΤΑΞΙΔΙ ΣΤΟ ΥΠΟΛΟΓΙΣΤΙΚΟ ΝΕΦΟΣ
ΤΑΞΙΔΙ ΣΤΟ ΥΠΟΛΟΓΙΣΤΙΚΟ ΝΕΦΟΣ ΤΑΞΙΔΙ ΣΤΟ ΥΠΟΛΟΓΙΣΤΙΚΟ ΝΕΦΟΣ
ΤΑΞΙΔΙ ΣΤΟ ΥΠΟΛΟΓΙΣΤΙΚΟ ΝΕΦΟΣ
 
Ruby On Rails Introduction [Εισαγωγή στο Rails]
Ruby On Rails Introduction [Εισαγωγή στο Rails]Ruby On Rails Introduction [Εισαγωγή στο Rails]
Ruby On Rails Introduction [Εισαγωγή στο Rails]
 
κατηγορίες ως πρός την αρχιτεκτονική τους
κατηγορίες ως πρός την αρχιτεκτονική τουςκατηγορίες ως πρός την αρχιτεκτονική τους
κατηγορίες ως πρός την αρχιτεκτονική τους
 
internet
internetinternet
internet
 
Diadiktyo
DiadiktyoDiadiktyo
Diadiktyo
 
Mixalis_ploutarxos
Mixalis_ploutarxosMixalis_ploutarxos
Mixalis_ploutarxos
 
Client server computing
Client server computing Client server computing
Client server computing
 
Makis_Prodromos
Makis_ProdromosMakis_Prodromos
Makis_Prodromos
 
Διαδίκτυο
ΔιαδίκτυοΔιαδίκτυο
Διαδίκτυο
 
ΔιαδίκτυοGt
ΔιαδίκτυοGtΔιαδίκτυοGt
ΔιαδίκτυοGt
 
Παρουσίαση Smart
Παρουσίαση SmartΠαρουσίαση Smart
Παρουσίαση Smart
 
Kef09
Kef09Kef09
Kef09
 
Το Azure δεν είναι χορτοφάγο! - 59ο DotNetZone Event
Το Azure δεν είναι χορτοφάγο! - 59ο DotNetZone EventΤο Azure δεν είναι χορτοφάγο! - 59ο DotNetZone Event
Το Azure δεν είναι χορτοφάγο! - 59ο DotNetZone Event
 
Τεχνολογίες_Διαδικτύου.pdf
Τεχνολογίες_Διαδικτύου.pdfΤεχνολογίες_Διαδικτύου.pdf
Τεχνολογίες_Διαδικτύου.pdf
 
2- IoT - 4th Industrial Revolution.ppt
2- IoT - 4th Industrial Revolution.ppt2- IoT - 4th Industrial Revolution.ppt
2- IoT - 4th Industrial Revolution.ppt
 
Εισαγωγή σε C# και .ΝΕΤ
Εισαγωγή σε C# και .ΝΕΤΕισαγωγή σε C# και .ΝΕΤ
Εισαγωγή σε C# και .ΝΕΤ
 
Java free-book
Java free-bookJava free-book
Java free-book
 

Μαϊτης Αντώνιος

  • 1. ΜΑΪΤΗΣ ΑΝΤΩΝΗΣ it1020 1 Υπηρεσίες και ΣυναλλαγέςΠαγκόσμιου Ιστού Θέμα : Οι Υπηρεσίες Ιστού σε περιβάλλον .NET, και το Windows Communication Framework. Μαϊτης Αντώνιος Email : antonismaitis@gmail.com
  • 2. ΜΑΪΤΗΣ ΑΝΤΩΝΗΣ it1020 2 Εισαγωγή Στην σύγχρονη αυτή εποχή οι ραγδαίες εξελίξεις στην τεχνολογία φαντάζουν αδύνατες στην επαρκή παρακολούθηση τους ως γενικό σύνολο. Η έρευνα αυτής της εργασίας εκπονείται στα πλαίσια του μαθήματος Υπηρεσίες και Συναλλαγές Παγκοσμίου Ιστού του τμήματος Εφαρμοσμένης Πληροφορικής και επικεντρώνεται στις υπηρεσίες ιστού σε περιβάλλον .ΝΕΤ και σε ένα πλαίσιο για την οικοδόμηση προσανατολισμένα δοσμένων υπηρεσιών σε εφαρμογές (service- oriented applications) με την ονομασία Windows Communication Framework (WCF).
  • 3. ΜΑΪΤΗΣ ΑΝΤΩΝΗΣ it1020 3 Web Services Η υπηρεσία ιστού είναι έννοια που πρόσφατα βρέθηκε στο προσκήνιο χάρη σε μια τεχνολογία ανταλλαγής μηνυμάτων γνωστή ως SOAP. Υπηρεσίες δικτύου ονομάζονται όλες εκείνες οι ομαδοποιημένες τεχνολογίες που προσανατολίζονται διαδικτυακά. Οι υπηρεσίες αυτές έχουν γίνει πλέον ένα σημαντικό κομμάτι κινητήριας δύναμης για τις περισσότερεςκαι μεγαλύτερες εταιρίες παγκοσμίως.Η χρησιμότητα τους προσαρμόζεται για πελάτες υπαλλήλους και προμηθευτές οι οποίοι μέσω αυτών εξυπηρετούνται με μεγάλη διεκπεραιωτική ικανότητα από πολλά και απομακρυσμένα γεωγραφικά σημεία. Τα web services βασίζονται σε ανοιχτά πρότυπα όπως HTTP, XML και SOAP. Οι clients ανταλλάσουν δεδομένα με τις υπηρεσίες χρησιμοποιώντας αυτά τα πρότυπα οπότε η εγγραφή μιας υπηρεσίας σε λειτουργικό διαφορετικού τύπου από αυτού που θα γίνει η εκτέλεση φαίνεται εκτός από πραγματοποιήσιμη και αρκετά εύκολη. Οι υπηρεσίες ιστού κατά κανόνα έχουν καταγραφεί όλες με το όνομα τους, ή τουλάχιστον όλες εκείνες των οποίων ο δημιουργός τις έχει συμπεριλάβει στον κατάλογο UDDI. Αυτός ο κατάλογος αποτελεί το συγκεντρωτικό όλων και είναι για ην αναζήτηση των υπηρεσιών από μηχανές και όχι από εμάς. Το μέλλον των υπηρεσιών ιστού κρίνεται ραγδαία αναπτυσσόμενο αλλά και βάση για οποιαδήποτε άλλη ανάπτυξη στον χώρο του διαδικτύου. Μια υπηρεσία Ιστού είναι μια διεπαφή με κάποια εφαρμογή που επιτυγχάνεται με τη βοήθεια τεχνολογιών Διαδικτύου, συνήθως τεχνολογιών Ιστού. Τυπικά παραδείγματα υπηρεσιών Ιστού είναι ένα αίτημα για την τιμή μιας μετοχής ή ενός μερίσματος, ένα αίτημα για διαθέσιμες θέσεις σε μια συγκεκριμένη πτήση, ένα αίτημα για την παραγγελία και αποστολή ενός βιβλίου ή ένα αίτημα για τη βέλτιστη διαδρομή από μια πόλη σε μια άλλη. Αρχιτεκτονική υπηρεσιών Ιστού Μια αρχιτεκτονική web services φαίνεται σε ένα απλό παράδειγμα όπου ένας περιηγητής παράγει αιτήματα προς ένα διακομιστή Ιστού ή προς ένα πρόγραμμα που φέρεται ως διακομιστής Ιστού το οποίο στην ουσία καταλαβαίνει HTTP. Τα αιτήματα αποκωδικοποιούνται από τον διακομιστή , ο οποίος στη συνέχεια προσπελαύνει μια συγκεκριμένη
  • 4. ΜΑΪΤΗΣ ΑΝΤΩΝΗΣ it1020 4 εφαρμογή. Μια αρχιτεκτονική υπηρεσίας Ιστού έχει δύο τμήματα. Ένα τμήμα ανεξάρτητο από πλατφόρμα υλοποίησης, που εκπροσωπείται από τα μέρη της αρχιτεκτονικής που χρησιμοποιούν ανοικτά πρωτόκολλα του Διαδικτύου, όπως HTTP και FTP, και ένα τμήμα εξειδικευμένο σε συγκεκριμένη πλατφόρμα υλοποίησης, όπως LINUX ή Windows. Η βασική ιδέα πίσω από τις υπηρεσίες Ιστού είναι ότι βασίζονται στα μηνύματα, δηλαδή, χρησιμοποιούν ανοικτά τυποποιημένα πρωτόκολλα όπως το HTTP για την ανταλλαγή μηνυμάτων για την κλήση υπηρεσιών. Μια αρχιτεκτονική υπηρεσίας Ιστού υλοποιείται σε πέντε επίπεδα. Αυτά ορίζονται ως ανακάλυψη, περιγραφή, πακετάρισμα, μεταφορά και δίκτυο. Η ανακάλυψη είναι ένα επίπεδο που επιτρέπει τους πελάτες που αναζητούν κάποια υπηρεσία Ιστού να ανακτήσουν περιγραφές της υπηρεσίας Ιστού από τους παροχείς. Αυτές περιλαμβάνουν και καθορισμό της διεπαφής με την υπηρεσία, δηλαδή τι μηνύματα αναμένει και τι είδους αποκρίσεις στέλνει. Υπάρχουν διάφορα πρότυπα για το επίπεδο της ανακάλυψης, όπως το WDDI και το WS-inspection. Η περιγραφή είναι tο επίπεδο που παρέχει περιγραφή των πρωτοκόλλων δικτύου, πακεταρίσματος και μεταφοράς που χρησιμοποιεί η υπηρεσία και πρέπει να χρησιμοποιηθούν για την επικοινωνία μαζί της. Υπάρχουν αρκετά αναδυόμενα και προτεινόμενα πρότυπα γι' αυτό το επίπεδο όπως το WDSL και το RDF του W3 Consortium. Το πακετάρισμα περιγράφει τη μορφή των δεδομένων που θα ανταλλαχθούν με την υπηρεσία Ιστού. Ποιά δεδομένα πρέπει να αποσταλούν προς τη υπηρεσία για κάθε αίτημα και ποιά δεδομένα θα αποστείλει η υπηρεσία ως απόκριση σε κάποιο αίτημα. Εδώ χρησιμοποιείταιτο SOAP.Η μεταφορά περιλαμβάνει τις τεχνολογίες που χρησιμοποιούνται για την αποστολή και παραλαβή μηνυμάτων. Αυτές περιλαμβάνουν τα πρωτόκολλα TCP, HTTP, POP3, SMTP και FTP. Τέλος το δίκτυο αντιστοιχεί στο επίπεδο δικτύου του πολυεπιπέδου μοντέλου του Διαδικτύου. Παρέχει τις βασικές υπηρεσίες για επεξεργασία λαθών, αποστολή μηνυμάτων, λήψη μηνυμάτων, επικοινωνία με ξένους υπολογιστές και δρομολόγηση. XML Web Services Τα XML Web Services είναι εφαρμογές που εκτελούνται πάνω σε έναν web server και κάνουν expose API functions, ή Web Methods, τα οποία
  • 5. ΜΑΪΤΗΣ ΑΝΤΩΝΗΣ it1020 5 μπορούν να χρησιμοποιηθούν από clients στο Internet. Ουσιαστικά η ολοκληρωμένη ενέργεια που γίνεται είναι η εισαγωγή από μέρους του χρήστη ενός αιτήματος και η απόκριση από την υπηρεσία με το ζητούμενο αποτέλεσμα. Ένα τέτοιο παράδειγμα είναι το Virtual Earth όπου ο χρήστης εισάγει γεωγραφικέςσυντεταγμένες και αυτό επιστρέφει την ακριβή τοποθεσία πάνω στον χάρτη. .ΝΕΤ Ο χώρος της πληροφορικής έχει πραγματοποιήσει στροφή από stand- alone εφαρμογές και client/server εφαρμογές, σε λύσεις που ζουν και τρέχουν στο web και είναι το ίδιο λειτουργικές και προσβάσιμες όσο και οι μη διαδικτυακές εφαρμογές. Ακόμη και στις γλώσσες προγραμματισμού έχουμε την μεταπήδηση από compiled σε scripting γλώσσες, από rich GUIs σε HTML και από τον αντικειμενοστραφή προγραμματισμόσε εμπορικές πλέον κατασκευασμένες εφαρμογές από έναν πετυχημένο συνδυασμό HTML, DHTML, XML, COM κτλ. Το .ΝΕΤ είναι ένα σύνολο από εργαλεία τα οποία συνδυάζονται για να φέρουν εις πέρας την μετατροπή του Internet σε μια πλατφόρμα παροχής υπηρεσιών λογισμικού.Ένα σημαντικό κομμάτιτης προσφοράςτου είναι ότι προσφέρει ευκολίες ώστε να χρησιμοποιήσουμε το διαδίκτυο ως μέσω μεταφοράς των αρχείων της εφαρμογής μας, με πολύ εύκολο τρόπο (ClickOnce). Επίσης πολύ σημαντική είναι η δυνατότητα που μας δίνει ένα κομμάτι του συνόλου των εργαλείων του για RAD (Rapid Application Development) , δηλαδή την ταχεία ανάπτυξη εφαρμογών. Αυτό το επιτυγχάνει δίνοντας στον χρήστη τη δυνατότητα να χρησιμοποιεί έτοιμα και αποδοτικά κομμάτια κώδικα αλλά και ένα σύνολο κλάσεων που βοηθούν τον προγραμματιστή να κερδίσει χρόνο αλλά και απόδοση για τα project του. .NET CLR Ένα από τα βασικά στοιχεία του .ΝΕΤ είναι το .NET CLR. Η λειτουργία αυτού είναι γραφικής εικονικής φύσης. Στην πράξη ενεργεί στο λειτουργικό σύστημα παρέχοντας του ένα εικονικό περιβάλλον για το hosting των διαχειριζόμενων εφαρμογών. Το CLR φορτώνει modules
  • 6. ΜΑΪΤΗΣ ΑΝΤΩΝΗΣ it1020 6 που περιέχουν εκτελέσιμα και τρέχει τον κώδικά τους. Ο κώδικα μπορεί να χαρακτηριστεί ως διαχειρίσιμος ή όχι , στην κανονική του ορολογία managed or unmanaged. Σε κάθε περίπτωση το CLR κρίνει πως θα ενεργήσει με αυτά. Ο διαχειρίσιμος κώδικας αποτελείται από εντολές γραμμένες σε γλώσσα ψευδοκώδικα η οποία ονομάζεται CIL ( common intermediate language ). Οι εντολές αυτής της γλώσσαςγίνονται compile just in time σε native κώδικα στο run time. Οι μέθοδοι γίνονται συνήθως μια φορά JIT compile πριν κληθούν για πρώτη φορά και έπειτα κρατούνται στην μνήμη και παραμένουν εκεί για όλη την διάρκεια λειτουργίας της εφαρμογής. Επίσης το CLR περιλαμβάνει ένα garbage collector ο οποίος καταγράφει τις αναφορές στα αντικείμενα και τα καταστρέφει όταν η μνήμη που καταλαμβάνουν δεν γίνεται πλέον referenced και χρειάζεται κάπου αλλού. Ένα πλεονέκτημα που έχει είναι ότι μπορεί να εκτελέσει κώδικα ο οποίος έχει μεταγλωττιστεί από C#, J#, C, C++, VB και Jscriptσε CIL αλλά και με χρήση μεταφραστών για άλλες γλώσσες. Garbage Collector Η εκτέλεση του Garbage Collector δεν γνωρίζουμε πότε θα κληθεί εκτός αν τον καλέσουμε επίτηδες με την εντολή => GC.Collect();) . Πρακτικά τρέχει όποτετο σύστημα χρειάζεται μνήμη. Όταν κληθεί καθαρίζει όλα τα διαχειρίσιμα αντικείμενα που έχουμε δημιουργήσει. Το CLR χρησιμοποιεί έναν από τους πολλούς αλγορίθμους του Garbage Collector και συγκεκριμένα εκείνον που αντιστοιχεί σε κάθε αντικείμενο που δημιουργείτε σε μια γενιά από objects. Στο .ΝΕΤ υπάρχουν τρείς γενιές από αντικείμενα (0,1,2). Κάθε νέο δημιουργημένο αντικείμενο αντιστοιχίζεται στη γενιά 0. Όταν εκτελεστεί το Garbage Collector και παραμείνει το αντικείμενο αυτό τότεπαίρνει προαγωγήστο επίπεδο 1. Ο Garbage Collector αφού κάνει collect στη γενιά 0 και δεν επαρκεί η μνήμη τότε θα κάνει collect στη γενιά 1 και ούτω καθεξής. Ο Garbage Collector επίσης κάνει release κρατώντας στη μνήμη του δείκτες που ονομάζονται roots. Μέσω των roots o Garbage Collector ξέρει ποια αντικείμενα χρησιμοποιούνται και ποια όχι. Με αυτήν την ιδιότητα που έχει καταλαβαίνουμε πως το release που κάνει είναι πετυχημένο και συγκεκριμένο. Για να αποφευχθεί το πρόβλημα του να γίνει collect ένα αντικείμενο το οποίο 'κρέμεται' από κάποιο άλλο, ο Garbage Collector
  • 7. ΜΑΪΤΗΣ ΑΝΤΩΝΗΣ it1020 7 δημιουργεί object graphs με τα αντικείμενα που είναι στη μνήμη κάθε φορά που εκτελείται. Για όλους τους παραπάνω λόγους και όχι μόνο, είναι πασιφανές ότι το Garbage collection έχει μεγάλο overhead. Περιοχές Εφαρμογής Ο παραδοσιακός τρόπος να απομονώνεις την μία εφαρμογή από την άλλη είναι να τις κάνεις host σε διαφορετικά processes. Αυτή η μέθοδος απαιτεί μεγάλη κατανάλωση μνήμης. Η αποτελεσματικότητα στην διαχείριση μνήμης δεν είναι σημαντική σε client εφαρμογές, με συστήματα ενός χρήστη, αλλά είναι κρίσιμη στην περίπτωσητων servers οι οποίοιδιαχειρίζονται χιλιάδες χρήστες. Το CLR μπορεί να φιλοξενήσει πολλές εφαρμογές σε ένα process. Αυτό γίνεται με το να διαχωρίζει το process σε εικονικές περιοχές οι οποίες ονομάζονται περιοχές εφαρμογής ή με την κανονική ορολογία application domains. Το CLR δεν ξεκινάει ένα νέο process για κάθε εφαρμογή. Αντί αυτού, τρέχει μία διαδικασία ή ένα σύνολο διαδικασιών και φιλοξενεί όλες τις ξεχωριστές εφαρμογές στα application domains. Τα application domains είναι ασφαλή όπως και τα processes γιατί σχηματίζουν όρια τα οποία δεν μπορούν να παραβιάσουν οι managed εφαρμογές. Ωστόσο τα application domains είναι πιο αποτελεσματικά από τα processes γιατί ένα process μπορεί να φιλοξενήσει πολλά application domains αλλά και γιατί οι βιβλιοθήκες μπορούν να φορτωθούν σε application domains και να διαμοιραστούν σε όλους. Managed Κώδικας Διαχειρίσιμος ή managed κώδικας είναι κώδικας ο οποίος έχει σχεδιαστεί να τρέχει υπό τον έλεγχο του CLR.Τα modules του managed κώδικα είναι συνήθως της μορφής .ΕΧΕ, .DLL, ή NETMODULE. Κάθε module managed κώδικα περιέχει τέσσερα στοιχεία, το Windows Portable Executable File Header, τα Μεταδεδομένα, τα οποία περιγράφουν το module και τις εξωτερικές συσχετίσεις του, το CLR Header, όπου αποθηκεύονται πληροφορίες για την θέση του CIL και το πού βρίσκονται τα μεταδεδομένα και τις πραγματικές CIL εντολές που δημιουργήθηκαν από τον πηγαίο κώδικα.
  • 8. ΜΑΪΤΗΣ ΑΝΤΩΝΗΣ it1020 8 Windows Portable Executable File Header Τα εκτελέσιμα αρχεία ονομάζονται ELF στα *nix και PE στα WIN32 συστήματα. Όταν πάμε να εκτελέσουμε ένα .exe τότε το λειτουργικό και ποιο συγκεκριμένα ο ProcessLoaderτου λειτουργικού ψάχνει το header του αρχείου για να ελέγξει αν είναι έγκυρος (valid). Αν ικανοποιεί την εγκυρότητα το εκτελεί. Στην περίπτωση που έχουμε εγκατεστημένο το .ΝΕΤ framework στο μηχάνημα μας τότεο process loader τροποποιείται έτσι ώστε μόλις δει ένα managed application να δώσει τον έλεγχο στο CLR. Μεταδεδομένα Ο όρος μεταδεδομένα χαρακτηρίζει δεδομένα που αφορούν άλλα δεδομένα. Κατά κανόνα, ένα σύνολο μεταδεδομένων περιγράφει ένα άλλο σύνολο δεδομένων, το οποίο αποτελεί μια πηγή. Στον κόσμο του .ΝΕΤ τα μεταδεδομένα τα μεταδεδομένα είναι μια περιοχή του module στην οποία περιγράφεται το ίδιο το module. Τα μεταδεδομένα μοιάζουν με τις COM βιβλιοθήκες, μιας και περιγράφουν τις ιδιότητες κάθε στοιχείου του Module (attributes, location, dependencies, properties, fields κτλ). Assemblies Tα assemblies είναι συλλογές ενός ή περισσότερων αρχείων τα οποία ομαδοποιούνται για να σχηματίσουν μια λογική μονάδα και είναι παρόμοια με το concept του “package” στην Java και την Lisp. Τα αρχεία μπορούν να βρίσκονται σε οποιοδήποτε κατάλογο ξεκινώντας από το root της εφαρμογής (εκεί που εκτελέστηκε το .exe ή .dll αρκεί να υπάρχει σωστή αντιστοίχιση στα references. Μπορούν ακόμη να βρίσκονται και στην GAC. Τα assemblies δημιουργούνται χρησιμοποιώντας ένα εργαλείο που ονομάζεται AL (Assembly Linker). Η δομή του assembly ορίζεται στο “manifest” μια περιοχή μέσα στο assembly η οποία περιέχει τα στοιχεία όνομα, μια λίστα αρχείων μαζί με τα κρυπτογραφικά hashes, μια λίστα τύπων δεδομένων που εξάγονται και εισάγονται από άλλα αρχεία, αριθμό έκδοσης και culture string ( π.χ. en-US).
  • 9. ΜΑΪΤΗΣ ΑΝΤΩΝΗΣ it1020 9 Ισχυρά και μη, ονόματα για Assemblies Υπάρχουν δύο τύποι για assemblies: Τα ισχυρά και τα όχι- ισχυρά ονόματα (strongly and weakly named assemblies). Τα μη-ισχυρά ονόματα δεν χρησιμοποιούν κρυπτογραφικές υπογραφές για να ταυτοποιήσουν τα ονόματα των στοιχείων και δεν μπορούν να βρίσκονται στην Global Assembly Cache(GAC). Τα ισχυρά ονόματα περιέχουν το publisher’s key και τις ψηφιακές υπογραφές που χρησιμοποιήθηκανγια να αποθηκευτούντα components στο GAC – κάτι το οποίο βοηθάει τον έλεγχο των εκδόσεων (version checking). Αυτό είναι σημαντικό όταν τα components δημιουργούνται έτσι ώστε να μπορούν να χρησιμοποιηθούναπό πολλούς χρήστες. Το .NET SDK έχει ένα utility, το οποίο ονομάζεται SN, το οποίο δημιουργεί strongly named assemblies αλλά και το AL μπορεί επίσης να χρησιμοποιηθεί για να δημιουργήσει strongly named assemblies. Επίσης το VS.NET μπορεί να δημιουργήσει SN assemblies. Τυπικά, το VS.NET θα συμπεριλάβει ένα κλειδί και μία υπογραφή, εάν έχετε κάποια. .NET Framework Class Library (FCL) Ένα ακόμη βασικό στοιχείο του .ΝΕΤ είναι το .NET Framework Class Library (FCL). Γενικά υπάρχουν περισσότεροι από 7000 τύποι classes, structs, interfaces, enumarations και delegates στο .net framework class library. Οι τύποι αυτοί είναι οργανωμένοι σε ένα σύνολο ιεραρχικών Namespaces. Είναι αξιοσημείωτο ότι υπάρχει μεγάλη συνάφεια με τα concepts της Java. Τα ονόματα αυτά εισάγονται μέσω C# και VB imports. GUIs – Graphical User Interfaces Μέχρι πρόσφατα, τα περισσότερα μοντέρνα προγράμματα χρησιμοποιούν ένα GUI όχι μόνο κείμενο αλλά και χαρακτήρες: παράθυρα, μενού, κουμπιά κτλ. Από αυτά user χαρακτηρίζεται το φυσικό πρόσωπο που χρησιμοποιεί το πρόγραμμα. Interface ορίζεται ο τρόπος αλληλεπίδρασης με το πρόγραμμα ενώ τα τυπικά γραφικά στοιχεία αποτελούν τα παράθυρα που εμφανίζουν τον γραφικό τρόπο επικοινωνίας του χρήστη με την μηχανή τα menu με τις επιλογές και τα
  • 10. ΜΑΪΤΗΣ ΑΝΤΩΝΗΣ it1020 10 ενέργειες επικοινωνίας και τα κουμπιά με τις εντολές που μας δίνεται η δυνατότητα να επιλέξουμε. Event-Driven Προγραμματισμός Τα προγράμματα GUIS χρησιμοποιούν συχνά Event-Driven Προγραμματισμό. Η μέθοδος αυτή βοηθάει λειτουργώντας ως ανταποκριτήςαφού το πρόγραμμα περιμένει να συμβούν κάποια events για να ανταποκριθεί.Τέτοιουείδους events είναι το κλικ του ποντικιού, το drag , το πάτημα ενός κουμπιού στο πληκτρολόγιο κτλ. Ορισμένες ορολογίες στο θέμα αυτό είναι το firing an event όταν ένα αντικείμενο δημιουργεί ένα γεγονός, το listener-object όπου περιμένει να συμβεί κάποιο event και το event handler που είναι η μέθοδος που απαντάει στο event. Η διαφορά με τον παραδοσιακό λοιπόν προγραμματισμό είναι ότι αντί για λίστα εντολών έχουμε τα αντικείμενα που ενεργοποιούν τα γεγονότα και τα αντικείμενα που απαντούν σε γεγονότα – αποκρίσεις. Επίσης στον παραδοσιακό προγραμματισμό το πρόγραμμα εκτελείται από τον υπολογιστή ενώ εδώ η εκτέλεση εξαρτάται από αλληλεπιδράσεις του χρήστη με τον υπολογιστήεξηγώντας πως το τι θα εκτελείται αφορά και καθορίζεται από τα events. Soap Το SOAP είναι μια πρόσφατη τεχνολογία που επιτρέπει στα μηνύματα να στέλνονται από πελάτες σε διακομιστές, από διακομιστές σε άλλους διακομιστές και από διακομιστές σε πελάτες, να πακετάρονται με τέτοιο τρόπο που όλες οι οντότητες που εμπλέκονται στην ανταλλαγή μηνυμάτων να καταλαβαίνουν τη φύση των δεδομένων που ανταλλάσσονται. Το SOAP έχει υλοποιηθεί με τη τεχνολογία XML. Ένα μήνυμα SOAP περιέχει αρκετά δεδομένα ώστε ο παραλήπτης να μπορεί να ενεργήσει και να προσφέρει την υπηρεσία που ζήτησε ο πελάτης που έστειλε το μήνυμα. Τέλος τα μηνύματα SOAP αποτελούνται από ένα περίβλημα που περιέχει μια προαιρετική κεφαλίδα και ένα υποχρεωτικό σώμα.
  • 11. ΜΑΪΤΗΣ ΑΝΤΩΝΗΣ it1020 11 WCF Web Services Οι υπηρεσίες αυτές είναι χτισμένες χρησιμοποιώντας το Windows Communication Framework, εργαλείο που αποτελείται από ποικιλία βιβλιοθηκών και διευκολύνσεων για την εξυπηρέτηση του προγραμματισμόωςπρος την ευκολία και συνεργασία για την συγγραφή υπηρεσιών ιστού. Οι υπηρεσίες που δημιουργούνται ακολουθούν την λογική ότι βρίσκονται σε έναν server και υπάρχουν ενδιαφερόμενοι πελάτες που κάνουν χρήση αυτών. Η λογική της χρήσης των υπηρεσιών ακολουθεί το μοντέλο πολλά προς πολλά από την άποψη ότι μία υπηρεσία μπορεί να χρησιμοποιείται από πολλούς πελάτες αλλά και ένας μόνο πελάτης μπορεί να χρησιμοποιεί πολλές υπηρεσίες. Οι υπηρεσίες του WCF ακολουθούν το Web Services Description Language Interface κι έτσι καθίσταται δυνατή η χρήση από οποιονδήποτεWCF client θεωρώντας στην πράξη αμελητέο στοιχείο το λειτουργικό στο οποίο γίνεται το Hosting. Οι υπηρεσίες του WCF γίνονται Host στον IIS Server της Microsoft, στον οποίο επιβάλλεται να υπάρχει εγκατεστημένο το .NET Framework για να μπορέσουν να λειτουργήσουν σωστά οι υπηρεσίες. Ο τρόπος που οι υπηρεσίες γίνονται Host, μοιάζει πολύ με τον τρόπο που ακολουθείτε για τις ιστοσελίδες, μόνο που εδώ αντί να κάνουμε request στο server για να πάρουμε μια ιστοσελίδα, κάνουμε request στο service στέλνοντάς του δεδομένα, και το service με τη σειρά του μας στέλνει ένα response με κάποια άλλα δεδομένα. Δημιουργία WCF Web Service Βήμα 1: Ανοίγουμε το Visual Studio 2010 και επιλέγουμε File>New>Project και στη συνέχεια επιλέγουμε στα Templates τη Visual C#>WCF και διαλέγουμε το Template WCF Template Application. Στη συνέχεια αφού δώσουμε το όνομα που θέλουμε στο project μας, πατάμε ΟΚ.
  • 12. ΜΑΪΤΗΣ ΑΝΤΩΝΗΣ it1020 12 Βλέπουμε λοιπόν ότι το Visual Studio δημιούργησε το project μας και στον Solution Explorer φαίνονται τα παρακάτω αρχεία: Ας δούμε λοιπόν κάποια πράγματα για τα αρχεία αυτά: IService1.cs: Αποτελεί το interface του service που θα δημιουργήσουμε. Το αρχείο αυτό περιέχει τις δηλώσεις των μεθόδωνπου θα χρησιμοποιήσουμε στο
  • 13. ΜΑΪΤΗΣ ΑΝΤΩΝΗΣ it1020 13 service μας, καθώς επίσης και τις δηλώσεις των αντικειμένων (object) που θα χρησιμοποιήσουμε. Service1.svc.cs: Αποτελεί την υλοποίηση των συναρτήσεων που αναφέρονται στο interface που περιγράψαμε πιο πάνω. Στο αρχείο αυτό περιγράφονται και υλοποιούνται αναλυτικά οι μέθοδοι που χρησιμοποιούμε. Βήμα 2: Ας δούμε ένα απλό σενάριο μιας WCF υπηρεσίας. Έστω λοιπόν ότι θέλουμε να έχουμε μια μέθοδο στην οποία θα στέλνουμε ένα string και θα μας επιστρέφει το μήνυμα “Hello World, “+το string που στείλαμε. Αν στείλουμε για παράδειγμα “StudentGuru”, θέλουμε να μας επιστρέψει “Hello World, StudentGuru”. Η μέθοδος που αναφέρουμε θα μπορούσε να υλοποιείται ως εξής: public string helloworld(string str) { string message = "Hello World, " + str; return str; } Για να χρησιμοποιήσουμε την παραπάνω μέθοδο στο service μας, θα πρέπει να κάνουμε τα εξής 2 πράγματα: 1.πρέπει να δηλώσουμε τη μέθοδό μας στο Interface του service (IService1.cs). 2.πρέπει να δηλώσουμε την υλοποίηση της μεθόδου μας στο service(Service1.svc.cs). Για το 1ο βήμα, πηγαίνουμε στο αρχείο IService1.cs, και προσθέτουμε τα εξής μέσα στο σώμα του public interface IService1 [OperationContract] string helloworld(string str); Με τον τρόπο αυτό, ενημερώνουμε το service για τη μέθοδό μας, για να ξέρει πώς να χειριστεί τα δεδομένα που θα στείλουμε, και να γνωρίζει τι
  • 14. ΜΑΪΤΗΣ ΑΝΤΩΝΗΣ it1020 14 θα είναι αυτό που θα μας επιστρέψει. Τώρα λοιπόν γνωρίζει το service ότι όταν εμείς θα καλέσουμε τη μέθοδο helloworld, θα του στείλουμε και ένα string κατά την κλήση της μεθόδου, ενώ όταν η μέθοδος ολοκληρωθεί, θα μας επιστρέψει ένα string. Για το 2ο βήμα, πηγαίνουμε στο αρχείο Service1.svc.cs, και προσθέτουμε τα εξής, μέσα στο σώμα της public class Service1: IService1 public string helloworld(string str) { string message = "Hello World, " + str; return message; } Βλέπουμε λοιπόν ότι η κλάση Service1 υλοποιεί το Interface IService1.Έχοντας δηλώσει λοιπόν τον ορισμό (definition) της μεθόδου helloworld στο Interface IService1, στην κλάση Service1 δηλώνουμε την υλοποίηση του Service αυτού. Στο σημείο αυτό, μπορούμε να τρέξουμε το service που έχουμε φτιάξει για να δούμε αν και κατά πόσο λειτουργεί. Βήμα 3ο: Από το Visual Studio, επιλέγουμε run (F5) και παρατηρούμε ότι τρέχει ο IISServer πάνω στον οποίο «σηκώνεται» και το service που έχουμε φτιάξει: Παράλληλα, ανοίγει το εργαλείο WCF Test Client, το οποίο θα μας βοηθήσει στο debugging.Σε περίπτωση που δεν σας ανοίγει το εν λόγω εργαλείο, μπορείτε να το βρείτε στο παρακάτω path: C:Program Files (x86)Microsoft Visual Studio 10.0Common7IDEWcfTestClient.exe
  • 15. ΜΑΪΤΗΣ ΑΝΤΩΝΗΣ it1020 15 Βήμα 4ο: Αυτό που μας επιτρέπει να κάνουμε το WCF Test Client είναι να στέλνουμε δεδομένα στο service που έχουμε φτιάξει και να μας δείχνει τι επιστρέφει η κάθε μέθοδοςπου καλούμε, ώστε να ξέρουμε αν λειτουργεί σωστά τοservice μας. Κάνουμε διπλό κλικ στη μέθοδο helloworld() που δημιουργήσαμε πιο πάνω, και στη συνέχεια γράφουμε το string που θέλουμε να στείλουμε στο πεδίοValue του str στο παράθυρο του Request, και επιλέγουμε Invoke, για να δούμε τι θα επιστρέψει η μέθοδος:
  • 16. ΜΑΪΤΗΣ ΑΝΤΩΝΗΣ it1020 16 Βλέπουμε λοιπόν στο πεδίο Response το αποτέλεσμα που επιστρέφεται από το service μας: Έτσι διαπιστώνουμε ότι το service που έχουμε δημιουργήσει λειτουργεί σωστά. Ακολουθώντας λοιπόν αυτήν την διαδικασία που περιγράψαμε μπορούμε να προσθέσουμε και άλλες μεθόδους στο service μας οι οποίες μπορεί να είναι πολύ πιο σύνθετες συγκριτικά με το hello world. Μπορούμε για παράδειγμα να γράφουμε σε βάσεις δεδομένων, να εκτελούμε πολύπλοκα queries και άλλα σχετικά.
  • 17. ΜΑΪΤΗΣ ΑΝΤΩΝΗΣ it1020 17 Επίλογος Η έρευνα που έγινε κρατάει πλέον δεδομένο ότι για να χρησιμοποιήσει κάποιος αποτελεσματικά το Framework πρέπει να έχει μία στερεή γνώση στον Αντικειμενοστραφή Προγραμματισμό. Λέγοντας ‘στερεή γνώση’ δεν εννοώ τόσο τις τεχνικές λεπτομέρειες, όσο την ποιοτική κατανόηση των δυνατοτήτων που προσφέρει στην μοντελοποίηση και την αρχιτεκτονική ενός συστήματος. Φυσικά, πολλές από τις νέες τεχνολογίες είναι καταπληκτικές. Όποιος έχει αναπτύξει κατανεμημένες εφαρμογές χρησιμοποιώντας παλαιότερες τεχνολογίες όπως DCOM και COM+ ή ακόμα και .NET Remoting ή XML Web Services δεν μπορεί παρά να θαυμάσει την ευελιξία, την κομψότητα και την παραγωγικότητα που προσφέρει και αναμένεται να δώσει περισσότερα στο μέλλον το Windows Communication Foundation (WCF).
  • 18. ΜΑΪΤΗΣ ΑΝΤΩΝΗΣ it1020 18 Βιβλιογραφία: Αρχιτεκτονική Πλατφόρμας Υπηρεσιών Ιστού (Sanjiva Weerawarana, Francisco Curbera, Frank Leyman, Tony Storey, Donald F. Fergunson– Επιστημονικήεπιμέλεια Ελληνικής έκδοσης Δρ. Χρήστος Κ. Γεωργιάδης) C# 4.0 in a Nutshell: The Definitive Reference (In a Nutshell (O'Reilly) Professional WCF Programming: net development with the Windows C.( Klein, Scott ) Πτυχιακή: Γεράσιμος Μηνιάτης ‘Η τεχνολογία των Web Services’ Ευχαριστώ θερμά: Studentguru.gr WCFtutorial.net Allinonetraining.gr