Διαφορά μεταξύ CGI και Servlet Η διαφορά μεταξύ του

Anonim

CGI vs Servlet

CGI (Common Gateway Interface) είναι η πρώτη προσπάθεια παροχής στους χρήστες δυναμικού περιεχομένου. Επιτρέπει στους χρήστες να εκτελούν ένα πρόγραμμα που βρίσκεται στο διακομιστή για να επεξεργάζεται δεδομένα και ακόμη και να έχει πρόσβαση σε βάσεις δεδομένων για να παράγει το σχετικό περιεχόμενο. Δεδομένου ότι πρόκειται για προγράμματα, αυτά γράφονται στο εγγενές λειτουργικό σύστημα και στη συνέχεια αποθηκεύονται σε έναν συγκεκριμένο κατάλογο. Ένα servlet είναι μια εφαρμογή της Java που στοχεύει στην παροχή της ίδιας υπηρεσίας με την CGI, αλλά αντί των προγραμμάτων που συντάσσονται στο εγγενές λειτουργικό σύστημα, μεταγλωττίζεται στον Java bytecode ο οποίος στη συνέχεια εκτελείται στην εικονική μηχανή Java. Παρόλο που τα προγράμματα Java μπορούν να μεταγλωττιστούν στον εγγενή κώδικα, εξακολουθούν να προτιμούν να μεταγλωττίζονται στον Java bytecode.

Το πρώτο πλεονέκτημα των servlets μέσω CGI είναι στην ανεξαρτησία της πλατφόρμας. Τα Servlets μπορούν να λειτουργούν σε οποιοδήποτε λειτουργικό σύστημα μόνο όσο είναι εγκατεστημένο ένα JVM, πράγμα που σημαίνει ότι δεν θα αντιμετωπίζετε κανένα πρόβλημα ακόμη και αν επιλέξετε να αλλάξετε λειτουργικά συστήματα. Με το CGI, η εναλλαγή του λειτουργικού συστήματος είναι μια δύσκολη και επίπονη διαδικασία καθώς θα χρειαστεί να ανασυγκροτήσετε τα προγράμματα στο νέο λειτουργικό σύστημα.

Δεδομένου ότι εκτελείτε ανεξάρτητα προγράμματα στο CGI, δημιουργούν τη δική τους διαδικασία όταν εκτελούνται, κάτι που δεν συμβαίνει με τους εξυπηρετητές όπως ακριβώς μοιράζονται στον χώρο μνήμης του JVM. Αυτό μπορεί να οδηγήσει σε προβλήματα σχετικά με τα γενικά έξοδα, ειδικά όταν αυξάνετε τον αριθμό των χρηστών εκθετικά. Δημιουργεί επίσης ζητήματα ευπάθειας καθώς το πρόγραμμα δεν ελέγχεται με κανέναν τρόπο όταν εκτελείται στον διακομιστή.

Αργότερα, η συνηθέστερη μέθοδος κατά τη χρήση του CGI είναι μέσω σεναρίων. Αυτό μειώνει τον απαιτούμενο χρόνο για τη δημιουργία προγραμμάτων και είναι γενικά πιο ασφαλής. Με το CGI, μπορείτε να εκτελέσετε άμεσα χειρόγραφα, ενώ servlets, θα πρέπει να μεταφράσετε το σενάριο σε Java και να το μεταγλωττίσετε σε ένα servlet που προσθέτει λίγο στο χρόνο φόρτωσης.

Περίληψη:

1. Οι CGI είναι συνήθως εκτελέσιμα που είναι εγγενή στο λειτουργικό σύστημα του διακομιστή, αν και τα servlets μπορούν επίσης να μεταγλωττιστούν στο εγγενές λειτουργικό σύστημα, το οποίο μπορεί να μεταγλωττιστεί σε Java bytecode και στη συνέχεια να εκτελεστεί σε JVM

2. Τα προγράμματα CGI εξαρτώνται από την πλατφόρμα ενώ τα εξυπηρετητές είναι ανεξάρτητα από την πλατφόρμα

3. Τα προγράμματα CGI εκτελούνται ως χωριστές διαδικασίες στον υπολογιστή, ενώ οι εξυπηρετητές εκτελούνται με το JVM

4. Το CGI μπορεί να είναι πιο ευάλωτο στις επιθέσεις από τους σέρκελ

5. Το CGI μπορεί να επεξεργαστεί άμεσα σενάρια ενώ πρέπει να μεταφραστεί και να μεταγλωττιστεί πριν να μπορεί να τρέξει ως servlet