axaros wrote: |
To (remote) Event handling γενικότερα ... |
|
Όπως πολύ σωστά έγραφε και το βιβλίο, μπορείς να χρησιμοποιήσεις Socket (TCP/IP) ή την Microsoft προσέγγιση MSMQ για να ειδοποιηθεί η εφαρμογή σου για ένα Remote Event.
Όμως και οι δύο αυτές προσεγγίσεις, προυποθέτουν ότι κάτι άλλο θα κάνει Capture το Event, και έπειτα μέσω αυτών (ή καλύτερα της συνεχής παρακολούθησης αυτών) θα λειτουργήσει ο event handler σου. Δυστυχώς, το μόνο που αυτά εξασφαλίζουν, είναι η συνεχής επικοινωνία μεταξύ δύο εφαρμογών.
Και εξηγώ με ένα παράδειγμα.
Έστω ότι έχουμε installed ένα service στον client, το οποίο βλέπει το Entry_Written Event του Log που παρακολουθούμε.
Τότε θα θέλαμε το το service αυτό να στείλει ένα μήνυμα, σε έναν κοινό χώρο με την Master εφαρμογή μας, ώστε η τελευταία να αντιληφθεί το γεγονός της προσθήκης και παράλληλα να αντλήσει την όποια πληροφορία την αφορά για αυτό.
Στην συγκεκριμένη περίπτωση, θέλουμε το message body του Entry.
Πάει το service μας και στέλνει το επιθυμητό string(ή ότι άλλο θέλουμε) σε ένα επιλεγμένο Socket, στο οποίο η Master εφαρμογή έχει στημένο ένα TCP Listener που περιμένει να λάβει το επόμενο μήνυμα.
Το ίδιο περίπου κάνει και το MSMQ. Δίνεις στις δύο εφαρμογές μία κοινή ουρά μηνυμάτων, όπου η μία γράφει και η άλλη διαβάζει.
Και στις δύο περιπτώσεις, μεταφράζεις την ύπαρξη του νέου μηνύματος με την εγγραφή ενός νέου Entry, χωρίς όμως η Master εφαρμογή σου να βλέπει άμεσα κάποιο Event Log.
Αυτό, είναι υπερβολικά βολικό όταν για παράδειγμα, θές να παρακολουθείς real time οποιοδήποτε Security Event σε όλα τα client του δικτύου σου.
Ωστόσο σε καμιά περίπτωση δεν σου εξασφαλίζουν την απουσία αυτού που θέλουμε να αποφύγουμε. Το installed service στον client.
Ελπίζω να μην σε κούρασα, και σε παρακαλώ άν κάνω λάθος να με διορθώσεις, γιατί το συγκεκριμένο βιβλίο δεν το έχω διαβάσει αλλά ούτε και έχω βρεί κάπου κάτι διαφορετικό.