Vergelijkingstabel
Basis voor vergelijking | CGI | servlet |
---|---|---|
basis- | Programma's worden geschreven in het native OS. | Programma's die met behulp van Java worden gebruikt. |
Platformafhankelijkheid | Platform afhankelijk | Vertrouwt niet op het platform |
Creatie van proces | Elke clientaanvraag creëert zijn eigen proces. | Processen worden gemaakt afhankelijk van het type aanvraag van de klant. |
Conversie van het script | Presenteren in de vorm van uitvoerbare bestanden (afkomstig van het besturingssysteem van de server). | Gecompileerd met Java Bytecode. |
Draait op | Afzonderlijk proces | JVM |
Veiligheid | Meer kwetsbaar voor aanvallen. | Kan aanvallen weerstaan. |
Snelheid | langzamer | sneller |
Verwerking van script | direct | Voordat de scripts worden uitgevoerd, wordt deze vertaald en gecompileerd. |
Draagbaarheid | Kan niet worden geporteerd | draagbaar |
Definitie van CGI
De CGI (Common Gateway Interface) is een interface die externe programma's (CGI-scripts) op een webserver verwerkt om de uitvoering van de interactieve webpagina's mogelijk te maken. CGI is ontwikkeld door NCSA (National Center for Supercomputing Applications) in 1993. Het bevindt zich aan de serverkant en stelt webbrowsers in staat om te communiceren met programma's op de webserver. Als een webpagina bijvoorbeeld een database opvraagt of een gebruiker de formulierinformatie verzendt naar de server, worden CGI-scripts opgeroepen. De server geeft die informatie door aan een applicatie op twee manieren GET of POST, waarna de applicatie op de server terugkeert naar de browser. Op deze manier krijgen browsers enkele resultaten voor de gebruiker.
CGI is een voorwaarde voor het beschrijven van een methode voor het uitvoeren van CGI-scripts en het leveren van de resultaten aan de server voor die specifieke programma's. De functie van een CGI is om de informatie die wordt ontvangen van de browser te scannen en een goed antwoord te produceren, na voltooiing van de taak wordt het CGI-script beëindigd. In Common Gateway Interface betekent de common dat deze prima werkt in elk besturingssysteem of elke programmeertaal.
Vroeger werden UNIX-shellscripts en PERL gebruikt om de CGI-programma's te schrijven, dat is de reden dat het als CGI- scripts wordt genoemd . Maar nu kan elk van de talen zoals C, C ++, Perl, Visual Basic of Python worden gebruikt. Hoewel CGI de potentiële beveiligingsproblemen kan veroorzaken, kan de webserver ook uitvoerbare bestanden als CGI-programma's behandelen in sommige specifieke mappen. CGI verwerkt elk clientverzoek door een afzonderlijk proces dat de serverbelasting verhoogt waardoor het langzamer wordt.
Definitie van Servlet
Een servlet is een op Java gebaseerde webcomponentact als een tussenliggend programma dat de interactie tussen de webbrowser of HTTP-client en HTTP-server mogelijk maakt. Net als bij CGI kunnen servlets ook worden gebruikt om de informatie te verzamelen via de webpaginaformulieren, de records uit de database te tonen en dynamische webpagina's te genereren met behulp van een container. Servlet is een Java-klasse die niet afhankelijk is van het platform en verder is gecompileerd naar de bytecode die platformonafhankelijk is. De platformneutrale bytecode kan dynamisch worden opgeslagen en uitgevoerd door de Java-webserver. Servlet gebruikt socket- en RMI- mechanisme om de verbinding tot stand te brengen tussen applets, databases of andere databaseprogramma's.
Servlet-container is een onderdeel van een webserver die HTTP- en HTTPS-protocollen ondersteunt . Het maakt gebruik van de verzoek / responsmethode door gebruik te maken van het HTTP- en HTTPS-protocol om interactie met webclients mogelijk te maken. In tegenstelling tot CGI wordt servlet binnen de adresruimte van de webserver uitgevoerd, waarbij elke client niet noodzakelijk afzonderlijk wordt behandeld. In de servlet wordt een verzameling beperkingen afgedwongen op de server om de bronnen op de server te beschermen.
Belangrijkste verschillen tussen CGI en Servlet
- CGI-scripts worden geschreven in native OS en opgeslagen in de bepaalde directory. Aan de andere kant worden servlet-programma's meestal geschreven in Java, die is gecompileerd tot Java-bytecode en wordt uitgevoerd in JVM.
- CGI is platformspecifiek waardoor het moeilijk is om tussen besturingssystemen te schakelen. Servlets kunnen daarentegen worden uitgevoerd in elk besturingssysteem dat JVM heeft geïnstalleerd, en daarom is het platformonafhankelijk.
- In CGI kan elk binnenkomend klantverzoek een afzonderlijk proces genereren terwijl servlet, processen niet nodeloos worden gecreëerd en de geheugenruimte van de JVM delen.
- CGI-scripts zijn uitvoerbare programma's die zijn geschreven in het native besturingssysteem van de server. Servlets daarentegen worden gecompileerd naar Java bytecode die op JVM draait.
- Servlet is veiliger dan CGI omdat het Java gebruikt.
- De snelheid, prestaties en efficiëntie van de servlet is beter dan CGI.
- CGI-scripts kunnen direct worden verwerkt. Integendeel, de servlet vertaalt en compileert eerst het programma en verwerkt het vervolgens.
- Als het gaat om draagbaarheid is servlet draagbaar terwijl CGI dat niet is.
Conclusie
De CGI en Servlet werken op dezelfde manier, maar het gebruik van servlet is voordelig ten opzichte van CGI omdat de servlet snel, veilig, platformonafhankelijk, eenvoudig te ontwikkelen, toegankelijk is via verschillende API's en wordt ondersteund door verschillende webservers.