Εισαγωγή στον Κατανεμημένο Προγραμματισμό



Σχετικά έγγραφα
14. Δικτύωση με Java Δικτύωση με Java Sockets Δημιουργία της σύνδεσης Διευθυνσιοδότηση της σύνδεσης

Η Υλοποίηση της Επικοινωνίας. Κατανεµηµένα Συστήµατα

Διδάσκων: Παναγιώτης Ανδρέου

ιαδικτυακές Εφαρµογές

Ειδικά Θέματα Προγραμματισμού

Δίκτυα Υπολογιστών Firewalls. Χάρης Μανιφάβας

(C) 2010 Pearson Education, Inc. All rights reserved.

Web and HTTP. Βασικά Συστατικά: Web Server Web Browser HTTP Protocol

Εργαστήριο Java. Αντικείµενο: Δίκτυα. Χειρισµός URLs. Άσκηση 1. Lab11. Πακέτο java.net

{ πρωτόκολλο, τοπική-διεύθυνση, τοπική-διεργασία, απομακρυσμένη-διεύθυνση, απομακρυσμένη-διεργασία }

Επίπεδο Μεταφοράς. (ανεβαίνουμε προς τα πάνω) Εργαστήριο Δικτύων Υπολογιστών Τμήμα Μηχανικών Η/Υ και Πληροφορικής

Τεχνολογία TCP/IP ΙΑ ΙΚΤΥΩΣΗ- INTERNET. Τεχνολογίες Τηλεκπαίδευσης & Εφαρµογές - Ιούλιος

1.2.2 Το μοντέλο δικτύωσης TCP/IP 1 / 26

HY335 4ο Φροντιστήριο

Εισαγωγή Επανάληψη. ΤΕΙ Στερεάς Ελλάδας. ΣT Εξάμηνο, Κατεύθυνση Μηχανικών Δικτύων Τ.Ε. Τμήμα Μηχανικών Πληροφορικής Τ.Ε. Διαδικτυακός Προγραμματισμός

Αρχιτεκτονικές Συστημάτων

ΤΕΧΝΟΛΟΓΙΑ ΙΚΤΥΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ

7.2.2 Σχέση OSI και TCP/IP

Βασικές Έννοιες Web Εφαρμογών

Δίκτυα Υπολογιστών I

Άσκηση 2 η Πρωτόκολλο επικοινωνίας TCP/IP

Επικοινωνία Client/Server Απομακρυσμένη Κλήση Διαδικασιών

Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών Δίκτυα υπολογιστών. (και το Διαδίκτυο)

Ντίρλης Νικόλαος- ΕΤΥ 3ο ΦΡΟΝΤΙΣΤΗΡΙΟ ΠΑΡΑΣΚΕΥΗ 25 ΟΚΤΩΒΡΙΟΥ 2013 ΑΙΘΟΥΣΑ Β4

Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων. ίκτυα Υπολογιστών Ι. To Μοντέλο OSI. Αναπλ. Καθηγ. Π. εμέστιχας

7.2 Τεχνολογία TCP/IP

Πρωτόκολλα Διαδικτύου

Δίκτυα Υπολογιστών. Το επίπεδο εφαρμογής (application layer) Κ. Βασιλάκης

ικτύωσησε Java Κατανεµηµένα Συστήµατα 08-1

Αξιολόγηση Υπηρεσιών ιαδικτύου µέσω Περιπτώσεων Μελέτης

Διαδικτυακές Εφαρμογές. Ενότητα 2: Enterprise Java Beans και Java Server Faces Μιχάλας Άγγελος Βούρκας Δημήτριος Τμήμα Μηχανικών Πληροφορικής ΤΕ

Τι είναι ένα δίκτυο υπολογιστών; Αρχιτεκτονική επιπέδων πρωτοκόλλων. Δικτυακά πρωτόκολλα

Εισαγωγή στη J2EE. Μέρος 2

Κατανεμημένα Συστήματα. Ενότητα # 4: Μηχανισμοί Επικοινωνίας Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

Υπηρεσιοστρεφής Αρχιτεκτονική SOA (Service Oriented Architecture)

Υπηρεσίες Ιστού (Web Services) Τεχνολογία Διοίκησης Επιχειρησιακών Διαδικασιών

ίκτυα υπολογιστών Στόχοι κεφαλαίου ίκτυα

//στο pin 3 του μικροελεγκτή συνδέουμε το control pin του ρελέ. WRITE 'I am on' στο SOCKET // λέω στον client ότι άναψα τη λάμπα

Remote Method Invocation (RMI)

ΗY335: Δίκτυα Υπολογιστών Χειμερινό Εξάμηνο Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης Διδάσκουσα: Μαρία Παπαδοπούλη

Εισαγωγή στην επιστήμη των υπολογιστών. Υλικό Υπολογιστών Κεφάλαιο 6ο ίκτυα υπολογιστών

Αντικειμενοστρεφής Προγραμματισμός

ΤΕΧΝΟΛΟΓΙΑ ΔΙΚΤΥΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ

Τι είναι η Spring. Η Spring είναι ένα ελεύθερο (open source) περιβάλλον εργασίας για εφαρμογές Java. Μπορεί να περιγραφεί ως:

ΤΕΙ ΗΠΕΙΡΟΥ. ΜΑΘΗΜΑ: Πρωτόκολλα Επικοινωνίας ιαδικτύου. Εξάµηνο: 3ον. Κεφάλαιο 8 ον : ΕπίπεδοΕφαρµογής (Application Layer) Στεργίου Ελευθέριος

Δίκτυα Υπολογιστών. Το επίπεδο εφαρμογής (application layer) Κ. Βασιλάκης

ΤΕΧΝΟΛΟΓΙΑ ΔΙΚΤΥΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ 7ο ΚΕΦΑΛΑΙΟ

Κατανεμημένα Συστήματα

Τεχνολογίες ιαδικτύου

ιαδικτυακές Εφαρµογές Πραγµατικού Χρόνου µε Java

Τεχνολογίες Παγκόσμιου Ιστού. 1η διάλεξη

ΚΑΤΑΝΕΜΗΜΕΝΟ ΣΥΣΤΗΜΑ ΔΙΑΧΕΙΡΙΣΗΣ ΣΥΣΚΕΥΩΝ ΑΣΗΜΑΚΟΠΟΥΛΟΣ ΣΩΤΗΡΗΣ ΑΜ : 3021

Προγραμματισμός με BSD Sockets σε περιβάλλον Linux

Πρότυπο Αναφοράς Open Systems Interconnection (OSI) Επικοινωνίες Δεδομένων Μάθημα 5 ο

ΤΕΙ ΗΠΕΙΡΟΥ Τμήμα Τηλεπληροφορικής & Διοίκησης

ΔΙΑΓΩΝΙΣΜΑ ΤΕΛΙΚΗΣ ΕΠΑΝΑΛΗΨΗΣ ΣΤΙΣ ΕΝΟΤΗΤΕΣ

Υπηρεσίες Ιστού (Web Services) ΜΙΧΑΛΗΣ ΜΑΛΙΑΠΠΗΣ

Εργαστήριο Δικτύων Υπολογιστών

Αρχιτεκτονική του πληροφοριακού συστήµατος Cardisoft Γραµµατεία 2003 ιαχείριση Προσωπικού

Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Διάλεξη #11 η : Διαδικτυακές Εφαρμογές με τη Java

Βασικές Υπηρεσίες Διαδικτύου. Επικοινωνίες Δεδομένων Μάθημα 2 ο

CORBA. Αρχιτεκτονική και 3-tier 3. εφαρµογές. Β. Φλώρος. Μαρτάκος. Τµήµα Πληροφορικής και Τηλεπικοινωνιών Εθνικό και Καποδιστιακό Πανεπιστήµιο Αθηνών

Λειτουργικά Συστήματα Η/Υ

Πρωτόκολλο FTP. Από τα παλαιότερα πρωτόκολλα του ArpaNet Το FTP είναι μια τυποποίηση του TCP/IP Πρόκειται για πρωτόκολο γενικού σκοπού

Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου 10η Διάλεξη: Web Services

Εισαγωγή στο πως λειτουργεί το διαδίκτυο

Περιεχόμενα. Πρόλογος... xiii

Κεφάλαιο 7.3. Πρωτόκολλο TCP

Πρόγραµµα 9.1 Πέρασµα δεδοµένων στην µνήµη

ΕΙΣΟ ΟΣ-ΕΞΟ ΟΣ Ε ΟΜΕΝΩΝ

Γενικές Αρχές. Τεχνολογία ικτύων Επικοινωνιών ΙΙ

Αρχιτεκτονικές κατανεμημένων συστημάτων. I. Sommerville 2006 Βασικές αρχές Τεχνολογίας Λογισμικού, 8η αγγ. έκδοση Κεφ. 12

Κεφάλαιο 7 Διαδικτύωση-Internet. 7.2 Τεχνολογία TCP/IP

Network Address Translation (NAT)

ΠΕΡΙΕΧΟΜΕΝΑ. Πρόλογος Κεφάλαιο 1 ο Αρχές Διαχείρισης πληροφορίας στον Παγκόσμιο Ιστό... 15

Επίπεδο δικτύου IP Forwading κτλ

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΔΙΚΤΥΩΝ

Επιχειρησιακά Πληροφοριακά Συστήματα. Site: Στόχος Σκοπός μαθήματος

Δίκτυα Θεωρία

Κατανεµηµένα Συστήµατα ΙΙ Μάθηµα Ελεύθερης Επιλογής, Εαρινού Εξαµήνου Τοµέας Εφαρµογών και Θεµελιώσεων

ΚΟΙΝΩΝΙΚΗ ΔΙΚΤΥΩΣΗ ΜΕΣΩ ΚΙΝΗΤΩΝ ΣΥΣΚΕΥΩΝ: ΧΡΗΣΗ ΔΕΚΤΗ GPS ΓΙΑ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΗΣ ΚΟΙΝΩΝΙΚΗΣ ΔΙΚΤΥΩΣΗΣ ΣΕ ΚΙΝΗΤΗ ΣΥΣΚΕΥΗ

SNMP ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΟΥ ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ

Προγραμματισμός και Συστήματα στον Παγκόσμιο Ιστό Ενότητα 9: Web Services. Καθ. Ιωάννης Γαροφαλάκης Πολυτεχνική Σχολή Μηχανικών Η/Υ & Πληροφορικής

Αρχιτεκτονικές κατανεμημένων συστημάτων. I. Sommerville 2006 Βασικές αρχές Τεχνολογίας Λογισμικού, 8η αγγ. έκδοση Κεφ. 12

Ταχύτητα, Απλότητα & Αξιοπιστία

Διπλωματική Εργασία. Μέλλιος Θωμάς, Πετρίδης Κοσμάς. Επιβλέπων Καθηγητής: Πρωτόγερος Νικόλαος

Δίκτυα Υπολογιστών ΙΙ (Ασκήσεις Πράξης)

Φύλλο Εργασίας 1 ου Κεφαλαίου

Μάθημα 6: Αρχιτεκτονική TCP/IP

Σύγχρονα εργαλεία και τεχνολογίες ανάπτυξης I.S. Το Microsoft.NET

Ιόνιο Πανεπιστήµιο Τµήµα Αρχειονοµίας Βιβλιοθηκονοµίας. Μοντέλο TCP/IP. Ενότητα E. Συστήµατα Επικοινωνίας

ΣΥΣΤΗΜΑΤΑ SCADA. Μέρος 5. Δικτύωση για Απομακρυσμένο Έλεγχο και Μεταφορά Δεδομένων

Κεφάλαιο 1. Βασικά Στοιχεία της Java... 13

Πρωτόκολλα Διαδικτύου. Άγγελος Ρούσκας Τμήμα Ψηφιακών Συστημάτων Πανεπιστήμιο Πειραιώς

Βασικά Θέματα Επικοινωνίας. Κατανεμημένα Συστήματα 1

Λογισµικό (Software SW) Λειτουργικά Συστήµατα και ίκτυα

Ιόνιο Πανεπιστήµιο Τµήµα Πληροφορικής Συστήµατα Επικοινωνίας. Μοντέλο TCP/IP. Ενότητα E. Πόσοι εµπλέκονται σε ένα Σύστηµα Επικοινωνίας

ΕΠΛ 012. Δίκτυα Τπολογιστών & Διαδίκτυο

Αποµακρυσµένη κλήση διαδικασιών

Εισαγωγή στο διαδίκτυο

Transcript:

Εισαγωγή στον Κατανεμημένο Προγραμματισμό

Περιεχόμενα Βασικές γνώσεις υποδοχών δικτύων Ιστορία του κατανεμημένου προγραμματισμού Εξέλιξη των πλαισίων ανάπτυξης επιχειρηματικών εφαρμογών

Βασικές γνώσεις Υποδοχών Δικτύων

Βασικές γνώσεις Δικτύων Επίπεδο εφαρμογών Γνωστές εφαρμογές HTTP FTP Telnet Εφαρμογές χρήστη Επίπεδο μεταφοράς TCP UDP Programming Interface: Sockets Επίπεδο δικτύου IP Επίπεδο σύνδεσης Οδηγοί συσκευών Στοίβα TCP/IP Εφαρμογής (http,ftp,telnet, ) Μεταφοράς (TCP, UDP,..) Δικτύου (IP,..) Σύνδεσης (device driver,..)

Βασικές γνώσεις Δικτύων TCP (Transport Control Protocol) είναι ένα πρωτόκολλο με σύνδεση και παρέχει την αξιόπιστη μεταφορά δεδομένων ανάμεσα σε δύο υπολογιστές Παραδείγματα εφαρμογών HTTP FTP Telnet Στοίβα TCP/IP Εφαρμογής (http,ftp,telnet, ) Μεταφοράς (TCP, UDP,..) Δικτύου (IP,..) Σύνδεσης (device driver,..)

Βασικές γνώσεις Δικτύων UDP (User Datagram Protocol) είναι ένα πρωτόκολλο χωρίς σύνδεση που μεταδίδει ανεξάρτητα πακέτα δεδομένων, ονομάζονται datagrams, ανάμεσα σε δύο υπολογιστές χωρίς να εξασφαλίζει την παράδοσή τους Παράδειγμα εφαρμογών: Clock server Ping Στοίβα TCP/IP Εφαρμογής (http,ftp,telnet, ) Μεταφοράς (TCP, UDP,..) Δικτύου (IP,..) Σύνδεσης (device driver,..)

Κατανοώντας τις υποδοχές Τα πρωτόκολλα TCP και UDP χρησιμοποιούν υποδοχές δικτύου (ports) για την διασύνδεση ροών δεδομένων με συγκεκριμένες εφαρμογές server P o r t TCP Client app app app app port port port port TCP or UDP Data Packet port# data

Κατανοώντας τις υποδοχές Οι υποδοχείς αντιπροσωπεύονται με ένα θετικό 16-bit ακέραιο Μερικοί υποδοχείς είναι δεσμευμένες από υπηρεσίες του συστήματος: ftp 21/tcp telnet 23/tcp smtp 25/tcp login 513/tcp Οι υποδοχείς που χρησιμοποιούμε στις εφαρμογές μας έχουν συνήθως αριθμούς >= 1024

Sockets Παρέχουν ένα περιβάλλον για προγραμματισμό στο επίπεδο μεταφοράς. ΟπρογραμματισμόςμεSockets μοιάζει πολύ με την χρήση αρχείων Το Λ.Σ. χειρίζεται τα Socket handles σας File handle. Οι ροές δεδομένων σε αρχεία λειτουργούν με τον ίδιο μηχανισμό και στα socket ΟπρογραμματισμόςμεSocket είναι ανεξάρτητος από την γλώσσα προγραμματισμού. Αυτό σημαίνει ότι μία Java εφαρμογή που κάνει χρήση socket μπορεί να επικοινωνήσει και με εφαρμογές που κάνουν χρήση socket σε C, C#, Visual Basic, Delphi κλπ.

Επικοινωνία με Socket Ένα πρόγραμμα εξυπηρετητής (server) εκτελείτε σεένανυπολογιστήκαιέχειέναsocket που συνδέεται με συγκεκριμένη υποδοχή (port) περιμένοντας από μία εφαρμογή πελάτη να κάνει μία αίτηση σύνδεσης server port Αίτηση σύνδεσης Client

Επικοινωνία με Socket Αν όλα πάνε καλά, ο server δέχεται την σύνδεση και δημιουργεί ένα νέο socket και το συνδέει με διαφορετική υποδοχή και ενημερώνει την εφαρμογή πελάτη ότι η επικοινωνία θα συνεχιστεί στην καινούργια υποδοχή. Το νέο socket (και η νέα υποδοχή) απαιτείται για να μπορεί ο server να συνεχίσει να ακούει για νέες αιτήσεις από εφαρμογές πελάτες στην αρχική υποδοχή ενώ εξυπηρετεί την τρέχουσα σύνδεση server port port Σύνδεση port Client

Η ιστορία του Κατανεμημένου Προγραμματισμού

Εξέλιξη στις πλατφόρμες Φράσεις Κλειδιά The Network Is the Computer Objects Legacy to the Web The Computer Is the Network Network of Embedded Things Network of Things Κλίμακα Εκκίνηση/Κορύφωση 100s 1,000s 1,000,000s 10,000,000s 100,000,000s 100,000,000 s 100,000,000s 100,000,000 1984/1987 1990/1993 1996/1999 2001/2003 1998/2004 2004/2007 Πρωτόκολλα μεταφοράς X X +HTTP (+JVM) +XML Portal +RM Unknown Ευρετήρια NS, NS+ +CDS +LDAP(*) +UDDI +Jini +? Πρωτόκολλα Συνόδου RPC, XDR +CORBA +CORBA, RM +SOAP, XML +RM/Jini +? Schematic

Πρωτότυπα Επικοινωνίας (Communication Patterns) Client- Server 3-Tier Web Application Web Services Hybrid P2P Fractal

Πρωτότυπα Επικοινωνίας (Communication Patterns) Επιχειρησιακές Εφαρμογές DB Server App Server Web Server Browser Client J2EE J2SE/ J2ME Εφαρμογές Διαδυκτίου (Web Application)

Πρωτότυπα Επικοινωνίας (Communication Patterns) Bus. Sys. DB App Web Browser XML (UDDI, SOAP) J2EE J2SE/ J2ME Context and Identity (LDAP, Policy, Liberty) Υπηρεσίες Διαδυκτίου (Web Services)

Εξέλιξη των πλαισίων Ανάπτυξης Επιχειρησιακών Εφαρμογών

Εξέλιξη των πλαισίων ανάπτυξης Επιχειρησιακών Εφαρμογών Μονολιθικά (Single tier) Δισδιάστατα - Πελάτης / Εξυπηρετητής (Two tier) Τρισδιάστατα (Three tier) Βασισμένα σε RPC Βασισμένα σε απομακρυσμένα αντικείμενα DCOM CORBA Βασισμένα σε τεχνολογίες ιστότοπων (HTML browser and Web server) Εξυπηρετητές εφαρμογών βασισμένοι σε ιδιωτικές τεχνολογίες Εξυπηρετητές εφαρμογών βασισμένοι ανοικτά πρότυπα

Επιχειρησιακές εφαρμογές Τμήματα των επιχειρησιακών εφαρμογών Επίπεδο παρουσίασης ή Διεπαφής χρήστη (Presentation logic) Επίπεδο Επιχειρησιακής Λογικής ή Επιχειρησιακών Διαδικασιών (Business logic) Επίπεδο πρόσβασης δεδομένων (Data access logic and data model) Υπηρεσίες συστήματος (System services) Η εξέλιξη των πλαισίων ανάπτυξης επιχειρησιακών εφαρμογών αντανακλά Πόσο ευέλικτα μπορείς να κάνεις αλλαγές Ποιος παρέχει τις υπηρεσίες συστήματος

Μονολιθικά συστήματα(mainframe-based) Χαζά τερματικά συνδέονται απευθείας στον κεντρικό υπολογιστή Κεντρικοποιημένο μοντέλο (ΟΧΙ Κατανεμημένο) Τα επίπεδα παρουσίασης, επιχειρησιακής λογικής και πρόσβασης δεδομένων συμπλέκονται σε μια μονολιθική εφαρμογή

Μονολιθικά συστήματα: Πλεονεκτήματα και μειονεκτήματα Πλεονεκτήματα: Δεν απαιτείται διαχείριση εφαρμογών-πελατών Η συνέπεια στοιχείων είναι εύκολο να επιτευχθεί Μειονεκτήματα: Δύσκολη επαναχρησιμοποίηση, συντήρηση και βελτίωση εφαρμογώνμιακαιταδιάφοραεπίπεδατηςεφαρμογής μπλέκονται

Μοντέλο Πελάτη Εξυπηρετητή (Two-Tier) SQL request SQL response Database Σύνθετες εφαρμογές πελάτη (Fat clients) επικοινωνούν απευθείας με την Βάση δεδομένων Στέλνονται ερωτήματα SQL και λαμβάνονται μη επεξεργασμένα δεδομένα Τα επίπεδα παρουσίασης, επιχειρησιακής λογικής και πρόσβασης δεδομένων βρίσκονται στην πλευρά της εφαρμογής πελάτη

Μοντέλο Πελάτη Εξυπηρετητή (Two-Tier) Πλεονεκτήματα: Ανεξαρτησία από την Βάση Δεδομένων(σε σύγκριση με μονολιθικά μοντέλα) Μειονεκτήματα: Τα επίπεδα παρουσίασης, επιχειρησιακής λογικής και πρόσβασης δεδομένων συμπλέκονται στην πλευρά της εφαρμογής πελάτη κάνοντας δύσκολη την συντήρηση και βελτίωση της εφαρμογής Το μοντέλο δεδομένων έχει «ισχυρή συνάφεια» με τις εφαρμογές πελάτη Σε περίπτωση αλλαγής της μορφής της Βάσης Δεδομένων (DB Schema) όλες οι εφαρμογές πελάτη δεν λειτουργούν Οι ενημερώσεις στην εφαρμογή απαιτούν ταυτόχρονη ενημέρωση σε όλες τις εφαρμογές πελάτη, κάνοντας την συντήρηση εφιάλτη Μια σύνδεση με την βάση δεδομένων για κάθε εφαρμογή πελάτη, κάνοντας δύσκολη την κλιμάκωση Τα δεδομένα μεταφέρονται χωρίς επεξεργασία στις εφαρμογές πελάτη αυξάνοντας την κίνηση δεδομένων στο δίκτυο

Παράδειγμα two-tier: Sockets στην Java Ένα socket είναι ένα άκρο σε ένα αμφίδρομο κανάλι επικοινωνίας ανάμεσα σε δύο προγράμματα που επικοινωνούν μέσω ενός δικτύου Κάθε socket συνδέεται σε μια υποδοχή ώστε το επίπεδο TCP μπορεί να αναγνωρίσει την εφαρμογή για την οποία προέρχονται / προορίζονται τα δεδομένα Η Java διαθέτει ένα πακέτο (java.net) για τις κλάσεις που σχετίζονται με το δίκτυο Διαθέτει κλάσεις για sockets Socket για υλοποίηση εφαρμογών πελάτη ServerSocket για υλοποίηση εξυπηρετητών

Java Sockets Server ServerSocket(1234) Output/write stream Client Input/read stream Socket( 10.0.0.1, 1234)

Υλοποιώντας έναν Εξυπηρετητή 1. Ανοίγουμε ένα Server Socket: ServerSocket server; DataOutputStream os; DataInputStream is; server = new ServerSocket( PORT ); 2. Περιμένουμε μία αίτηση χρήστη: Socket client = server.accept(); 3. Δημιουργούμε ροές δεδομένων για την επικοινωνία με την εφαρμογή πελάτη is = new DataInputStream( client.getinputstream() ); os = new DataOutputStream( client.getoutputstream() ); 4. Πραγματοποιούμε την επικοινωνία με την εφαρμογή πελάτη Διάβασμα δεδομένων από πελάτη: String line = is.readline(); Αποστολή δεδομένων σε πελάτη: os.writebytes("hello\n"); 5. Κλείσιμο sockets: client.close();

Πολυνηματικός εξυπηρετητής: Υποστήριξη πολλαπλών πελατών Client 1 Process Server Process Internet Server Threads Client 2 Process

Υλοποιώντας έναν πολυνηματικό Εξυπηρετητή 1. Ανοίγουμε ένα Server Socket: ServerSocket server; DataOutputStream os; DataInputStream is; server = new ServerSocket( PORT ); 2α. Περιμένουμε μία αίτηση χρήστη: while(true){ Socket client = server.accept(); 2β. Δημιουργούμε ένα νήμα με παράμετρο το socket του πελάτη 3. Υλοποιούμε τα βήματα 3 & 4 του απλού εξυπηρετητή σε κάθε νήμα 4. Κλείνουμε το νήμα που δημιουργήσαμε στο τέλος

Υλοποιώντας μία εφαρμογή πελάτη 1. Δημιουργούμε ένα αντικείμενο Socket: client = new Socket( server, port_id ); 2. Δημιουργούμε ροές δεδομένων για την επικοινωνία με τον εξυπηρετητή is = new DataInputStream(client.getInputStream() ); os = new DataOutputStream( client.getoutputstream() ); 3. Πραγματοποιούμε την επικοινωνία με τον εξυπηρετητή: Διάβασμα δεδομένων από τον εξυπηρετητή: String line = is.readline(); Αποστολή δεδομένων στον εξυπηρετητή: os.writebytes("hello\n"); 4. Κλείσιμο sockets: client.close();

Ένας απλός εξυπηρετητής (απλοποιημένος κώδικας) // SimpleServer.java: a simple server program import java.net.*; import java.io.*; public class SimpleServer { public static void main(string args[]) throws IOException { // Register service on port 1234 ServerSocket s = new ServerSocket(1234); Socket s1=s.accept(); // Wait and accept a connection // Get a communication stream associated with the socket OutputStream s1out = s1.getoutputstream(); DataOutputStream dos = new DataOutputStream (s1out); // Send a string! dos.writeutf("hi there"); // Close the connection, but not the server socket dos.close(); s1out.close(); s1.close(); } }

Μια απλή εφαρμογή πελάτη (απλοποιημένος κώδικας) // SimpleClient.java: a simple client program import java.net.*; import java.io.*; public class SimpleClient { public static void main(string args[]) throws IOException { // Open your connection to a server, at port 1234 Socket s1 = new Socket("mundroo.cs.mu.oz.au",1234); // Get an input file handle from the socket and read the input InputStream s1in = s1.getinputstream(); DataInputStream dis = new DataInputStream(s1In); String st = new String (dis.readutf()); System.out.println(st); // When done, just close the connection and exit dis.close(); s1in.close(); s1.close(); } }

Socket Exceptions try { Socket client = new Socket(host, port); handleconnection(client); } catch(unknownhostexception uhe) { System.out.println("Unknown host: " + host); uhe.printstacktrace(); } catch(ioexception ioe) { System.out.println("IOException: " + ioe); ioe.printstacktrace(); }

ServerSocket & Exceptions public ServerSocket(int port) throws IOException Creates a server socket on a specified port. A port of 0 creates a socket on any free port. You can use getlocalport() to identify the (assigned) port on which this socket is listening. The maximum queue length for incoming connection indications (a request to connect) is set to 50. If a connection indication arrives when the queue is full, the connection is refused. Throws: IOException - if an I/O error occurs when opening the socket. SecurityException - if a security manager exists and its checklisten method doesn't allow the operation.

Εξυπηρετητής σε ατέρμονο βρόχο // SimpleServerLoop.java: a simple server program that runs forever in a single thead import java.net.*; import java.io.*; public class SimpleServerLoop { public static void main(string args[]) throws IOException { // Register service on port 1234 ServerSocket s = new ServerSocket(1234); while(true) { Socket s1=s.accept(); // Wait and accept a connection // Get a communication stream associated with the socket OutputStream s1out = s1.getoutputstream(); DataOutputStream dos = new DataOutputStream (s1out); // Send a string! dos.writeutf("hi there"); // Close the connection, but not the server socket dos.close(); s1out.close(); s1.close(); } } }

Μελετήστε Βασικά θέματα Socket http://www.javaworld.com/javaworld/jw-12-1996/jw-12-sockets.html Σειριοποίηση αντικειμένων http://java.sun.com/developer/technicalarticles/alt/sockets/index.html

Τρισδιάστατες Επιχειρησιακές Εφαρμογές (Βασισμένες σε RPC) RPC request RPC response SQL request SQL response Database Απλούστερες εφαρμογές πελάτη (Thin clients): Τo επίπεδο παρουσίασης είναι ξεχωριστό από το επίπεδο επιχειρησιακής λογική και το επίπεδο πρόσβασης δεδομένων Τα επίπεδα επιχειρησιακής λογικής και πρόσβασης δεδομένων υλοποιούνται στον ενδιάμεσο εξυπηρετητή Απαιτείται η ύπαρξη ενδιάμεσου εξυπηρετητή Παράλληλη επεξεργασία, πολυνημάτωση, δοσοληψίες (transaction), ασφάλεια, διατήρηση δεδομένων (persistence), πολυπλεξία (multiplexing), απόδοση, κλπ.

Τρισδιάστατες Επιχειρησιακές Εφαρμογές (Βασισμένες σε RPC) Πλεονεκτήματα: Η επιχειρησιακή λογική είναι περισσότερη ευέλικτη σε σχέση με το μοντέλο πελάτη-εξυπηρετητή Μπορεί να μεταβάλετε ανεξάρτητα με την εφαρμογή πελάτη Μειονεκτήματα: Εισάγεται πολυπλοκότητα στον ενδιάμεσο εξυπηρετητή Η εφαρμογή πελάτη και ο ενδιάμεσος εξυπηρετητής είναι ισχυρά συνδεδεμένοι (σε σχέση με τις τρισδιάστατες επιχειρησιακές εφαρμογές βασισμένες σε αντικείμενα) Ο κώδικας δεν είναι επαναχρησιμοποιήσιμος (σε σχέση με τις τρισδιάστατες επιχειρησιακές εφαρμογές βασισμένες σε αντικείμενα)

Τρισδιάστατες Επιχειρησιακές Εφαρμογές (Βασισμένες σε Απομακρυσμένα Αντικείμενα) Object request Object response SQL request SQL response Database Η επιχειρησιακή λογική και η πρόσβαση δεδομένων υλοποιούνται με αντικείμενα Χρησιμοποιείται «αφαίρεση» στον ορισμό τους (interface language) Μοντέλα αντικειμένων: CORBA, RMI, DCOM Η γλώσσα ορισμού διεπαφών της CORBA είναι η IDL Η γλώσσα ορισμού διεπαφών του RMI είναι η Java interface

Τρισδιάστατες Επιχειρησιακές Εφαρμογές (Βασισμένες σε Απομακρυσμένα Αντικείμενα) Πλεονεκτήματα: Λιγότερη συνάφεια σε σχέση με το μοντέλο RPC Ο κώδικας είναι επαναχρησιμοποιήσιμος Μειονεκτήματα: Ηπολυπλοκότητατουενδιάμεσουεπιπέδουπρέπει να αντιμετωπιστεί

Παράδειγμα: Java RMI Παράδειγμα στο JBuilder για το RMI

Τρισδιάστατες Επιχειρησιακές Εφαρμογές (Βασισμένες σε τεχνολογίες διαδικτύου) HTML request HTML response WEB Server SQL request SQL response Database Ο φυλλομετρητής (Browser) υλοποιεί το επίπεδο παρουσίασης Ο Browser επικοινωνεί με το Web server μέσω του πρωτόκολλου HTTP Τα επίπεδα επιχειρησιακής λογικής και πρόσβασης δεδομένων υλοποιούνται με τεχνολογίες δυναμικής παραγωγής περιεχομένου (CGI, Servlet/JSP, ASP)

Τρισδιάστατες Επιχειρησιακές Εφαρμογές (Βασισμένες σε τεχνολογίες διαδικτύου) Πλεονεκτήματα: Η εφαρμογή πελάτη βρίσκεται παντού Μηδενική διαχείριση εφαρμογής πελάτη Υποστηρίζονται πολλαπλά είδη συσκευών Κινητά τηλέφωνα με J2ME Μειονεκτήματα: Ηπολυπλοκότητατουενδιάμεσουεπιπέδουπρέπει να αντιμετωπιστεί

Τάσεις Μετάβαση από μονολιθικές ή δισδιάστατες εφαρμογές σε πολυδιάστατες αρχιτεκτονικές Μετάβαση από μονολιθικά μοντέλα σε αντικειμενοστραφή Μετάβαση από εξειδικευμένες εφαρμογές πελάτη σε πελάτες βασισμένες σε τεχνολογίες διαδικτύου

Σημαντικά προβλήματα και λύσεις Η πολυπλοκότητα του ενδιάμεσου επιπέδου παραμένει Στην πλειονότητα το επιχειρησιακών εφαρμογών πολλές απαιτούμενες υπηρεσίες επαναλαμβάνονται Παράλληλη επεξεργασία & δοσοληψίες (transaction) Εξομοίωση φορτίου και ασφάλεια Διαχείριση πόρων και συνδέσεων Πως λύνουμε το πρόβλημα Εξυπηρετητές επιχειρησιακών εφαρμογών που υλοποιούν τις κοινές υπηρεσίες Ιδιωτικές τεχνολογίες ενάντια σε ανοικτά πρότυπα

Εξυπηρετητές εφαρμογών βασισμένοι σε ιδιωτικές τεχνολογίες Χρήση μοντέλου «αρθρωμάτων και πλαισίων" Τα αρθρώματα υλοποιούν την επιχειρησιακή λογική Τα πλαίσια παρέχουν τις υπηρεσίες συστήματος Το πρωτόκολλο επικοινωνίας ανάμεσα στα αρθρώματα και στα πλαίσια εκτέλεσης είναι αυστηράορισμένααλλάβασίζονταισειδιωτικές τεχνολογίες Πρόβλημα με ιδιωτικές τεχνολογίες: Δεν υπάρχει δυνατότητα αλλαγής προμηθευτή Παραδείγματα: Tuxedo,.NET

Εξυπηρετητές εφαρμογών βασισμένοι σε ανοικτά πρότυπα Το πρωτόκολλο επικοινωνίας ανάμεσα στα αρθρώματα και στα πλαίσια εκτέλεσης είναι αυστηράορισμένακαιβασίζονται σε ανοικτά πρότυπα Η J2EE είναι ένα τέτοιο πρότυπο προσφέρει μεταφερσιμότητα κώδικα Βελτιώνεται από ανεξάρτητους κατασκευαστές