Γενικά. Σχήµα Ι: Επικοινωνία Client-Server, ExecuteCommand TuniConnection

Σχετικά έγγραφα
Οδηγίες Χρήσης της MySQL

Δομημένος Προγραμματισμός

Οδηγίες Χρήσης της MySQL

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

ΚΕΦΑΛΑΙΟ Web Services

Προγραμματισμός Ι (ΗΥ120)

for for for for( . */

Postgress ΣΤΟΧΟΣ ΣΧΕΤΙΚΟ ΕΚΠΑΙ ΕΥΤΙΚΟ ΥΛΙΚΟ. ΠΕΡΙΒΑΛΛΟΝ ΓΙΑ ΕΞΑΣΚΗΣΗ pgadmin ΥΠΟΒΑΘΡΟ. Συναρτήσεις στην PostgreSQL. 1. Γενικά

Τι είναι υποπρόγραμμα; Τμήμα προγράμματος το οποίο επιτελεί ένα αυτόνομο υπολογιστικό έργο (γράφεται χωριστά από το υπόλοιπο πρόγραμμα)

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

Προγραμματισμός ΙI (Θ)

Ο βρόχος for Η εντολή for χρησιμοποιείται για τη δημιουργία επαναληπτικών βρόχων στη C

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΤΜΗΜΑ ΜΑΘΗΜΑΤΙΚΩΝ

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C

Απλοποιεί τα γεγονότα έτσι ώστε να περιγράφει τι έχει γίνει και όχι πως έχει γίνει.

ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ. Κάθε υποπρόγραμμα έχει μόνο μία είσοδο και μία έξοδο. Κάθε υποπρόγραμμα πρέπει να είναι ανεξάρτητο από τα άλλα.

Κεφάλαιο 10 ο Υποπρογράµµατα

υναµική διαχείριση µνήµης στη C++ Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: ΕΠΛ 132 Αρχές Προγραµµατισµού ΙΙ 2 είκτες

Επαναληπτικές Διαδικασίες

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language)

2.1 Αντικειµενοστρεφής προγραµµατισµός

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

Επαναληπτικές δοµές. µτ α.τ. Όχι. ! απαγορεύεται µέσα σε µία ΓΙΑ να µεταβάλλουµε τον µετρητή! διότι δεν θα ξέρουµε µετά πόσες επαναλήψεις θα γίνουν

Λύβας Χρήστος Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΠΡΟΣΑΝΑΤΟΛΙΣΜΟΥ (ΝΕΟ ΣΥΣΤΗΜΑ) 27 ΜΑΪΟΥ 2016 ΕΚΦΩΝΗΣΕΙΣ

int array[10]; double arr[5]; char pin[20]; Προγραµµατισµός Ι

Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client

Λογισµικό (Software SW) Γλώσσες

Κλάσεις και Αντικείµενα

Τεχνικός Εφαρμογών Πληροφορικής

ÏÌÉÊÑÏÍ ÖÑÏÍÔÉÓÔÇÑÉÏ ÊÏÑÄÅËÉÏ

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

Pascal. 15 Νοεμβρίου 2011

ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ. Διαδικασίες και συναρτήσεις. 22 Νοε 2008 Ανάπτυξη εφαρμογών/ Υποπρογράμματα 1

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 3 Ο. Σταθερές-Παράμετροι-Μεταβλητές Αριθμητικοί & Λογικοί Τελεστές Δομή ελέγχου-επιλογής Σύνθετοι έλεγχοι

Web Forms. Το Web Forms βρίσκεται στο µενού Οργάνωση λειτουργίας -> Βοηθητικές εργασίες -> Web Forms.

C: Από τη Θεωρία στην Εφαρµογή 2 ο Κεφάλαιο

Προγραμματισμός ΙI (Θ)

J-GANNO. Σύντοµη αναφορά στους κύριους στόχους σχεδίασης και τα βασικά χαρακτηριστικά του πακέτου (προέκδοση 0.9Β, Φεβ.1998) Χάρης Γεωργίου

Νήµαταστην Java. Συγχρονισµός νηµάτων Επικοινωνία νηµάτων Εκτελέσιµα αντικείµενα Νήµατα δαίµονες Οµάδες νηµάτων. Κατανεµηµένα Συστήµατα 11-1

Περιπτώσεις αλλαγής Λογιστικού Σχεδίου.

Σημειώσεις του εργαστηριακού μαθήματος Πληροφορική ΙΙ. Εισαγωγή στην γλώσσα προγραμματισμού

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ

Κεφάλαιο , 3.2: Συναρτήσεις II. ( ιάλεξη 12) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

if(συνθήκη) {... // οµάδα εντολών } C: Από τη Θεωρία στην Εφαρµογή 5 ο Κεφάλαιο

Στη C++ υπάρχουν τρεις τύποι βρόχων: (a) while, (b) do while, και (c) for. Ακολουθεί η σύνταξη για κάθε μια:

Επιλογή και επανάληψη. Λογική έκφραση ή συνθήκη

επιµέλεια Θοδωρής Πιερράτος

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

ΟΔΗΓΙΕΣ ΑΡΧΙΚΟΠΟΙΗΣΗΣ ΕΦΑΡΜΟΓΗΣ MODULES HAMELEON V2

ΠΑΝΕΛΛΑΔΙΚΕΣ ΕΞΕΤΑΣΕΙΣ ΗΜΕΡΗΣΙΩΝ ΕΠΑΛ ΤΡΙΤΗ 11 ΙΟΥΝΙΟΥ 2019 ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ

Εισαγωγή στον Προγραµµατισµό, Αντώνιος Συµβώνης, ΣΕΜΦΕ, ΕΜΠ,, Slide 6

ΠΛΗΡΟΦΟΡΙΚΗ Ι (MATLAB) Ενότητα 4

Χειρισµός Σφαλµάτων. Γρηγόρης Τσουµάκας. Τµήµα Πληροφορικής, Αριστοτέλειο Πανεπιστήµιο Θεσσαλονίκης. Έκδοση:

Δημιουργία & Τερματισμός Διεργασιών. Προγραμματισμός II 1

ιαχείριση Τηλεφωνικών Κλήσεων

Διαδικασιακός Προγραμματισμός

Κλάσεις. Κατηγορίες Αντικειµένων. Κλάσεις. Φυσικά Αντικείµενα. Χώρος = Οµάδα Φυσικών Αντικειµένων. Πρόγραµµα = Οµάδα

53 Χρόνια ΦΡΟΝΤΙΣΤΗΡΙΑ ΜΕΣΗΣ ΕΚΠΑΙΔΕΥΣΗΣ Σ Α Β Β Α Ϊ Δ Η Μ Α Ν Ω Λ Α Ρ Α Κ Η

Αυτόματο Κλείσιμο Ισολογισμού

Γενικά. Change Reference

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 11/3/2008

Θέμα Α Α3.1 ΤΕΛΟΣ 1ΗΣ ΑΠΟ 9 ΣΕΛΙΔΕΣ

Συχνές ερωτήσεις - απαντήσεις για τη χρήση του λογισµικού

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

Επίπεδο Δικτύου: Διαδικτύωση

Εργαστήριο 9 Συναρτήσεις στη PASCAL. Η έννοια του κατακερματισμού. Συναρτήσεις. Σκοπός

Πανεπιστήμιο Θεσσαλίας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και Δικτύων

ΘΕΜΑ Α. Α2. Να αναφέρετε από τι εξαρτάται η επιλογή του καλύτερου αλγορίθμου ταξινόμησης. Μονάδες 4. Σελίδα 1 από 8

Σειρά Προβλημάτων 5 Λύσεις

Αριθμητικές Μέθοδοι σε Προγραμματιστικό Περιβάλλον (Εργαστήριο 2)

Κεφάλαιο 10 Υποπρογράμματα. Καραμαούνας Πολύκαρπος

Προγραμματισμός I (Θ)

Εισαγωγή στην Πληροφορική

2 Ορισμός Κλάσεων. Παράδειγμα: Μηχανή για Εισιτήρια. Δομή μιας Κλάσης. Ο Σκελετός της Κλάσης για τη Μηχανή. Ορισμός Πεδίων 4/3/2008

ΕΡΓΑΣΤΗΡΙΟ 9: Συμβολοσειρές και Ορίσματα Γραμμής Εντολής

Διαδικασιακός Προγραμματισμός

Υπολογιστικά Συστήματα

Επικοινωνία:

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

I. ΑΛΓΟΡΙΘΜΟΣ II. ΠΡΑΞΕΙΣ - ΣΥΝΑΡΤΗΣΕΙΣ III. ΕΠΑΝΑΛΗΨΕΙΣ. 1. Τα πιο συνηθισμένα σενάρια παραβίασης αλγοριθμικών κριτηρίων είναι:

Γενική περιγραφή. Περιγραφή σχεδιασμού εφαρμογής

Εισαγωγή στην PHP. ΕΣΔ 516 Τεχνολογίες Διαδικτύου. Περιεχόμενα. Περιεχόμενα. ΕΣ 516: Τεχνολογίες ιαδικτύου. ΕΣ 516: Τεχνολογίες ιαδικτύου

Παράµετροι ιαχείρισης Λογιστικής. Τύποι Λογιστικών Άρθρων. Ηµερολόγια Λογιστικής. Στοιχεία Λογαριασµών Λογιστικού Σχεδίου

ΑΡΧΗ 1ης ΣΕΛΙΔΑΣ. Για i από 1 μέχρι Μ Εμφάνισε A[4,i] Τέλος_επανάληψης. (μονάδες 6) ΤΕΛΟΣ 1ης ΑΠΟ 7 ΣΕΛΙΔΕΣ

ΚΕΦΑΛΑΙΟ 10 ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ

Τι είναι κλάση Κλάση

ΣΥΝΟΛΟ ΣΕΛΙ ΩΝ: ΕΠΤΑ (7)

Κεφάλαιο 5ο: Εντολές Επανάληψης

Εισαγωγή σε αντικειμενοστραφή concepts. Και λίγη C#

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

Δομές Ακολουθίας- Επιλογής - Επανάληψης. Δομημένος Προγραμματισμός

ΚΕΦΑΛΑΙΟ 9 ΒΑΣΙΚΕΣ ΕΝΤΟΛΕΣ

Ορθότητα λειτουργίας τμημάτων λογισμικού & δομών δεδομένων υπό ταυτόχρονη εκτέλεση

Εντολή Δεδομένα Περιεχόμενα μετά την εκτέλεση 1 read(x) 122 x= 2 read(a,b,c) a= b= c= 3 read(d,e)

ΔΟΚΙΜΑΣΤΙΚΟ ΤΕΣΤ Γ' ΤΑΞΗΣ ΗΜΕΡΗΣΙΟΥ ΓΕΝΙΚΟΥ ΛΥΚΕΙΟΥ ΤΕΤΑΡΤΗ 26 ΑΠΡΙΛΙΟΥ 2017 ΑΕΠΠ ΣΥΝΟΛΟ ΣΕΛΙΔΩΝ: ΤΕΣΣΕΡΕΙΣ (4)

Να γράψετε τα αποτελέσματα αυτού του αλγόριθμου για Χ=13, Χ=9 και Χ=22. Και στις 3 περιπτώσεις το αποτέλεσμα του αλγορίθμου είναι 1

Transcript:

ΕΚΤΕΛΕΣΗ ΕΡΓΑΣΙΩΝ ΣΤΟΝ SERVER (EXECUTE COMMAND) Γενικά Για την ανάπτυξη εφαρµογών που απαιτούν την εκτέλεση εργασιών στον Server που ορίζονται δυναµικά από µια επικοινωνία Client-Server ακολουθείται µια προτεινόµενη διαδικασία υλοποίησης η οποία περιγράφεται παρακάτω. Η διαδικασία αυτή υλοποιείται µε την επίτευξη µιας συγκεκριµένου τύπου σύνδεσης µεταξύ Client-Server που καθορίζεται από το class UniConnection, το οποίο ορίζεται αυτόµατα κατά τη δηµιουργία (creation) ενός Server Module. Η διασύνδεση µεταξύ του Client και του Server επιτυγχάνεται δια µέσου του component UniServer, το οποίο καθορίζει µια αµφίδροµη DCOM επικοινωνία µεταξύ ενός Client Module και ενός Server Module όπως περιγράφεται στο σχήµα Ι. Σχήµα Ι: Επικοινωνία Client-Server, ExecuteCommand TuniConnection Για να επιτευχθεί µια επικοινωνία Client-Server χρησιµοποιώντας τα εργαλεία της ALTEC, δηµιουργεί ο χρήστης δυο DataModule ένα για τον Client και ένα για το Server από το Repository του Client και το Repository του Server αντιστοίχως, ούτως ώστε να δηµιουργηθεί αυτόµατα όλη η ιεραρχία που περιγράφεται στο σχήµα Ι και να κληρονοµηθεί και ο τύπος του TUniConnection. Εν συνεχεία αναγράφεται στο visual component UniServer του Client DataModule το όνοµα του Server DataModule, στο πεδίο ObjectName του UniServer. Με αυτό τον τρόπο έχουν δοθεί επαρκείς οδηγίες για µια αµφίδροµη DCOM σύνδεση. 1

Έχοντας εξασφαλίσει µια αµφίδροµη DCOM σύνδεση µπορεί πλέον ο χρήστης να εκτελέσει συγκεκριµένες ρουτίνες και στον Client και στο Server να µεταφέρουµε δεδοµένα µε τρόπο που θα περιγραφεί παρακάτω. Αυτό που πρέπει να τονιστεί εδώ είναι ότι όλη η διαδικασία της σύνδεσης παραµένει στο background της εφαρµογής έτσι ο χρήστης δεν είναι υποχρεωµένος να γνωρίζει τη διαδικασία που εκτελείται στο παρασκήνιο, παρά να δηλώσει µόνο το όνοµα της κλάσης του Server DataModule στο UniServer του Client. Παράδειγµα Ι: Η χρήση του ExecuteCommand και η σύνδεσή του µε τον Server. Η διασύνδεση του UniConnection µε τη ρουτίνα την οποία θέλει ο χρήστης να εκτελεστεί στο Server γίνεται µε το Event του Server DataModule OnCommand. Ενώ η εντολή κλήσης της ρουτίνας του Server από τον Client γίνεται απευθείας µε την εντολή ExecuteCom-mand. H ExecuteCommand καθώς και το event OnCommand του Server DataModule δέχονται δυο παραµέτρους, έναν ακέραιο (CommandId : Integer) και µια Olevariant µετα-βλητή (ParamValues : Olevariant). Στο παράδειγµα Ι υλοποιείται µια κλήση από τον Client µιας ρουτίνας που εκτελεί µια εργασία στον Server. Αµφίδροµη επικοινωνία Χρήση της ExecuteCommand σε διάφορες εργασίες Η επικοινωνία µεταξύ Client και Server είναι αµφίδροµη. Αυτό σηµαίνει ότι ο Server µπορεί πριν, µετά και κατά τη διάρκεια της εκτέλεσης κάποιας ρουτίνας που έχει κληθεί από τον Client να στέλνει διάφορα ερωτήµατα ή να ζητάει περαιτέρω πληροφορίες για την έκβαση της εργασίας. Αυτό µπορεί να επιτευχθεί µε τις τεχνικές που περιγράφονται στις δυο ενότητες που ακολουθούν (Εκτέλεση batch εργασιών και ήλωση πολλών διαφορετικών batch εργασιών στην ίδια ExecuteCommand). Το event oncommand επιστρέφει µια OleVariant αφού εκτελέσει την εντεταλµένη εργασία του. Η δυνατότητα αυτή επιτρέπει να χρησιµοποιήσει ο χρήστης την ιδιότητα result του συγκεκριµένου event (το οποίο δηλώνεται ως function) για να µεταφέρει πληροφορίες από τον Server στον Client. Το αντίστροφο (δηλαδή µεταφορά δεδοµένων από τον Client στον Server) επιτυγχάνεται µε τα argument που ορίζονται στο event oncommand. Η δήλωση του event έχει δυο παραµέτρους όπως έχει προαναφερθεί, τον ακέραιο CommandId και το OleVariant ParamValues. Τα δεδοµένα που θέλουµε να µεταφερθούν περνούν δια µέσου της παραµέτρου ParamValues, η οποία µπορεί να δηλωθεί µε τους τρόπους που προαναφέρθηκαν για τη δήλωση του result του event OnCommand. 2

Είναι σηµαντικό να τονισθεί δε ότι η αλληλουχία µεταφοράς δεδοµένων µεταξύ Client- Server έχει ως εξής: µεταφέρεται αρχικά η πληροφορία από τον Client και στη συνέχεια εκτελείται η ρουτίνα στο Server που καλείται από το event oncommand. Αφού εκτελεστεί όλη η εργασία τότε ο Server επιστρέφει τις πληροφορίες στον Client. Βλέπε παράδειγµα ΙΙ. Παράδειγµα IΙ: Η χρήση του ExecuteCommand και η σύνδεσή του Client µε τον Server. 3

Εκτέλεση Batch Εργασιών Στην προηγούµενη ενότητα περιγράφηκε µια επικοινωνία Client-Server όπου Ο Client µεταφέρει πληροφορίες στον Server και αφού εκτελέσει την εργασία επιστρέφει πληροφορίες στον Client. Η περίπτωση αυτή δεν καλύπτει περιπτώσεις που θέλει ο χρήστης να έχει αµφίδροµη επικοινωνία κατά τη διάρκεια εκτέλεσης της εργασίας ή στην περίπτωση που θέλουµε να εκτελέσουµε την εργασία σε διακριτά στάδια, π.χ. σαν πρώτο στάδιο την αρχικοποίηση, σαν δεύτερο στάδιο την κυρίως εργασία και σαν τελευταίο στάδιο την ολοκλήρωση. Αυτές οι περιπτώσεις µπορούν να καλυφθούν µε διαδοχικές χρήσεις της στοιχειώδους εργασίας που περιγράφηκε στην προηγούµενη ενότητα, όπου ως πληροφορίες θα περνιούνται και επιπλέον διαχειριστικές πληροφορίες. Στο παράδειγµα ΙΙ, που περιγράφηκε προηγουµένως, µπορούµε να προσθέσουµε τις τρεις λειτουργίες που περιγράψαµε παραπάνω και επιπλέον να µας επιστρέφει µια πληροφορία για το σηµείο στο οποίο βρίσκεται η εκτέλεση της εργασίας και να µπορούµε να αλλάξου-µε την έκβαση της εργασίας δυναµικά. Στο παράδειγµα ΙΙΙ, περιγράφεται η υλοποίηση µιας τέτοιας διαδικασίας. Το παράδειγµα ΙΙΙ περιγράφει τα εξής: Στην αρχή αρχικοποιείται η διαδικασία τρέχοντας το Query µε τις παραµέτρους που εισάγονται από τον Client και αφού τρέξει στον Server επιστρέφει το σύνολο των εγγραφών. Αν δεν υπάρχουν εγγραφές τότε ο Server επιστρέφει µια τιµή null, και αντιστοίχως ο Client τερµατίζει τη διαδικασία, αλλιώς εµφανίζει µήνυµα που ζητάει την επιβεβαίωση συνέχισής της. Αν ο χρήστης επιβεβαιώσει, η διαδικασία συνεχίζεται, αλλιώς ολοκληρώνεται. Για να αναγνωρίζει ο Server το στάδιο της αρχικοποίησης, περνάµε µια παράµετρο που παίρνει τιµή 1 ή 0. Αν περάσει η τιµή 0 τότε τρέχει το Query και γίνεται η αρχικοποίηση, αλλιώς (αν έχει τιµή 1) διατρέχουµε τα δεδοµένα που έχει φέρει το Query, και ανά κάθε γραµµή που διαβάζουµε στέλνουµε στον Client τα δεδοµένα της γραµµής τα οποία τοποθετούνται σε ένα Client Table. Η διαδικασία αυτή συνεχίζεται µέχρις ότου τα δεδοµένα να εξαντληθούν, αυτό το επισηµαίνει ο Server στέλνοντας στον Client µια τιµή null και έτσι η διαδικασία ολοκληρώνεται. ήλωση Πολλών ιαφορετικών Batch Εργασιών στην ίδια ExecuteCommand (Συνθήκες) Τέλος µπορεί να χρησιµοποιηθεί η ίδια ExecuteCommand για να εκτελεσθούν δυο ή και περισσότερες διαφορετικές λειτουργίες στον Server. Αυτή η ευκολία δίνεται µε τη χρήση του CommandId. Μια περιγραφή του φαίνεται στο παράδειγµα IV. 4

Παράδειγµα IIΙ: Η χρήση του ExecuteCommand και η σύνδεσή του µε τον Server µε ταυτόχρονη επικοινωνία του Client. 5

Παράδειγµα IV: Η χρήση του ExecuteCommand και η σύνδεσή του µε τον Server µε ταυτόχρονη επικοινωνία του Client για περίπτωση όπου εκτελούνται διαφορετικές λειτουργίες στο ίδιο ExecuteCommand. Σύνοψη: ηµιουργείται µια DataModule στον Server. ηµιουργείται µια DataModule στον Client. Στην ιδιότητα ObjectName του component UniServer γράφεται το όνοµα του DataModule του Server. Στο Event OnCommand γράφεται η ρουτίνα που επιθυµεί ο χρήστης να εκτελεστεί στον Server. Το Event OnCommand δέχεται δυο παραµέτρους, το CommandID και το ParamValues, όπου το CommandID αντιστοιχεί στη ζητούµενη εργασία του Server και το ParamValues είναι δεδοµένα που περνιόνται από τον Client στον Server. Ο Server αφού εκτελέσει την εντεταλµένη του εργασία επιστρέφει µια OleVariant η οποία αποτελεί και την απάντηση του Server. Για να δηµιουργηθεί δυναµική επικοινωνία µεταξύ Client-Server φτιάχνουµε πολλές µικρές διαδοχικές ερωταπαντήσεις µεταξύ Client-Server. 6