Internetteknologi (ITNET2) Præsentation 21: Common Gateway Interface (CGI) illustreret med Perl og C.

Slides:



Advertisements
Lignende præsentationer
Den danske befolknings syn på handicappedes rettigheder
Advertisements

Atomer Et programmeret forløb. En måde at lære på.
SharePoint /36 2 General SettingsPermissions and ManagementCommunications Titel, description and navigation Versioning settings Advanced settings.
Hjemmesidekonstruktion Tjekspørgsmål 1.Hvad er et markup-sprog – hvad bruges det til? 2.Hvad er forskellen mellem et markup-sprog og et scriptsprog? 3.Hvad.
Overskrift her Navn på oplægsholder Navn på KU- enhed For at ændre ”Enhedens navn” og ”Sted og dato”: Klik i menulinjen, vælg ”Indsæt” > ”Sidehoved / Sidefod”.
v/ Professor Lars Ehlers, Aalborg Universitet
Velkommen hos Juvel A/S
Bolig selskabernes Landsforening– Almene lejeboliger - Maj/Juni Almene lejeboliger - Danmarkspanelet - Maj/Juni 2010.
J2EE Java Server Pages (JSP) Introduktion Internetteknologi 2 (ITNET2)
Representations for Path Finding in Planar Environments.
Hvordan man skriver koden.
01 – Java platform for starters. 2 NOEA2009Java-kursus – Java Platform Introduktion til Java Baggrund Hvad er Java? Faciliteter i Java.
Intro Variabler - datatyper. 2. forelæsning Hvad skete sidste gang Hvad er PHP? Kursussammensætning: læse – newsgroup – forelæsning – øvelsestime – aflevering.
Eksekvering/Otto Knudsen 1 Udrulning Publicering af en web-applikation.
Introduktion/Otto Knudsen 1 Overblik WebForms ASP.NET.
Webserveren kan afvikle flere applikationer, der hver har deres eget selvstændige ”liv” og hukommelse. Den enkelte applikation består typisk af flere elementer.
HUSKESPIL – den lille tabel
Titel: Arial, fed, skriftstr. 20, mørkegrå. Tekst: Arial, normal, fed eller kursiv, skriftstr. 10, 12 og 14 til print – 16 og 18 til projektor – mørkegrå.
Relativ vigtighed for elektroniske ressourcer,24,22,20,18,16,14,12,10 Indeks FARM nem at bruge Info om anvendelse af elektroniske.
 2 3  3 =  83  43  53  63  73  93  10 4.
XML1 4.7 XML and Its Data Model. XML2 Introduktion til XML, 178 XML = eXtensible Markup Language Markup language –sprog, hvor data "pakkes ind" i tags.
Region Midtjyllands tilbud 2013
Agenda 1.Informationer 1.Excel i fb.m. projekt 2 2.Reserver tid til projekt 2 3.Øvelse: a / b = c 2.Opsamling fra sidst 3.Estimation (konfidensintervaller)
18 – Java Server Faces. 2 NOEA2009Java-kursus – JSF 2 Web-applikationer - 1 Brugere interagerer med en Web-browser Browseren sender forespørgsler til.
ETU 2008 | Elevtilfredshedsundersøgelse Erhvervsskolen Nordsjælland HTX (Teknisk Gymnasium) - Hillerød Baseret på 313 besvarelser.
1 HMAK XMLRelationel model og XMLNOEA / PQC 2005 SQLServer og XML Hent data via URL Generering af xml –Raw –Auto –Explicit Hent data via template Evt.
Internetteknologi 2 (ITNET2) Java teknologi på Internettet J2EE Servlets.
Matematik B 1.
Claus Brabrand, ITU, Denmark Mar 10, 2009EFFECTIVE JAVA Effective Java Presentation Workshop Claus Brabrand [ ] ( “FÅP”: First-year Project.
AJAX/Otto Knudsen 1 AJAX Motivation Definition. AJAX/Otto Knudsen 2 Motivation En typisk web-applikation er synkron klienten sender en forespørgsel og.
MSBuild & Team Build i C#/C++ solutions VSTS ERFA d. 25 November.
1 Tråde 2 Plan Trådbegrebet Synkronisering Koordinering Eksempel: et flertrådet spil.
Grunde til at jeg elsker dig
Program Design – 4 Introduktion til PHP. Dagens lektion Hvad er PHP?  - og lidt historie Hvordan virker PHP? Grundlæggende PHP  Variable  Typer  Løkker.
Fundamentale datastrukturer
Intro Evaluering De sidste to gange?. HTTP, cookies og sessions Forelæsning nr 10 Tilbage til trafikken mellem server – client Sende HTTP-request og respons.
Webserveren kan afvikle flere applikationer, der hver har deres eget selvstændige ”liv” og hukommelse. Den enkelte applikation består typisk af flere elementer.
Usability 24. marts Tilgængelighed 2. Dagens øvelse 3. Spørgsmål.
DATATYPER. For at tilpasse hvert felt i databasen til dets formål og dermed øge funktionalitet 1 bit er tilstrækkelig til at angive køn (0/1) men for.
Opsamling og repetition. Forelæsning 12 1) Opsamling og repetion - arrays - PHPs mysql-funktioner - SQL: SELECT, UPDATE, INSERT, DELETE - sikkerhed og.
1 Fundamentale datastrukturer. 2 Definitioner: abstrakt datatype, datastruktur Elementære datastrukturer og abstrakte datatyper : arrays, stakke, køer,
Procestræ under afvikling af cp init login shell cp cp src dest.
Intro Siden sidst: evaluering på opgaver og virtuel kursus.
1 Kap. 4, Jordens Tyngdefelt = Torge, 2001, Kap. 3. Tyngdekraftens retning og størrelse g (m/s 2 ) Acceleration Tyngdepotentialet (W): evene til at udføre.
8 RÅD VEDRØRENDE GOD PROGRAMMERING Effective (brown) Java.
11 - Exceptions. 2 NOEA2009Java-kursus – Exceptions Hvad er en exception? En undtagelse. Typisk en fejl der opstår runtime Afbryder det normale programflow.
Internetteknologi (ITNET2) Præsentation 20: ASP.NET Introduktion ”Med Active Server Pages (ASP)”
Fremstilling af Simple WEB steder [ITPL] Foråret 2004
KF04 GRAY Item 2, 12, 22, 32, 42, 52. Consider a builder when faced with many constructor parameters Item 2.
Webserveren kan afvikle flere applikationer, der hver har deres eget selvstændige ”liv” og hukommelse. Den enkelte applikation består typisk af flere elementer.
C#: Udtryk og metoder Kilde: Joe Hummel. 2 Nordjyllands Erhvervakademi – 2008 Indhold “With regards to programming statements and methods, C# offers what.
03 – Udtryk og metoder. 2 NOEA2009Java-kursus – Udtryk og metoder Udtryk i Java Java har standard udtrykene… Værditildeling Subrutiner og funktionskald.
Hvad består en distribueret applikation af ? Processer der kører på hver deres maskine Tråde - 1 eller flere "letvægtsprocesser" per proces Objekter i.
XML 2. Formatering af XML data med CSS Når man arbejder med XML og CSS er fremgangsmåden den samme som i forbindelse med HTML og CSS.
PD – kursusgang 3 Introduktion til Java Script. Mål Viden om hvordan JavaScripts indlejres i HTML dokumenter Viden om programmering i JavaScript  Erklæring.
OPERATIONEL ANALYSE AF WEBADFÆRD OAW – LEKTIONSGANG 11.
Intro Evaluering De sidste to gange?. HTTP, cookies og sessions Forelæsning nr 10 Tilbage til trafikken mellem server – client Sende HTTP-request og respons.
9. Interfaces. 2 Nordjyllands Erhvervakademi Objectives “Good class design starts with good application design — how many classes, do they relate.
OPERATIONEL ANALYSE AF WEBADFÆRD OAW – LEKTIONSGANG 4.
Intro Siden sidst: evaluering på opgaver og virtuel kursus.
Opsamling og repetition. Forelæsning 12 Hvad I ikke lærte Repetition? - date() - arrays - echo og return I funktioner - strukturering af script - navngivning.
ANALYSE AF WEBADFÆRD - OAW OAW – LEKTIONSGANG 4. ANALYSE AF WEBADFÆRD - OAW SUMMARY, LECTURE 3 (Extended) Common Log File Format Host, Ident, Authuser,
RMS - Record Management System Record Store En Record er et bytearray af vilkårlig størrelse En RecordStore er et antal Records nummerede.
Mikkel deMib Svendsen Duplicate Content & Multiple Site Issue Mikkel deMib Svendsen
PHP Intro Webintegrator PHP. PHP Baggrund PHP er et server-side programmeringssprog anvendt til udvikling af dynamiske webapplikationer og websteder.
WebApi service part 2 Routning og Action Simpel test-client (javascript) Session og Application data.
Software Testing Software testing.
Simpel test-client (javascript) Session og Application data
Smart Data Tool (SDT) In Sales
WiseFlow En introduktion i anvendelsen af Wiseflow
Præsentationens transcript:

Internetteknologi (ITNET2) Præsentation 21: Common Gateway Interface (CGI) illustreret med Perl og C

Ingeniørhøjskolen i Århus Slide 2 Mission Efter denne 2x35 lektion vil I: –Have opnået et basalt kendskab til Common Gateway Inteface (CGI) teknologien, med udgangspunkt i Perl, og forstå dens ligheder og forskelle med andre server side teknologier, såsom JSP/Servlets og ASP.NET –Dette er ikke et Perl kursus – så I vil ikke have lært Perl –Have set hvordan alternativt C kan anvendes m.f.

Ingeniørhøjskolen i Århus Slide 3 Indhold i denne præsentation Kort introduktion til CGI Hvordan virker det? Eksempler på CGI og Perl Om fremtiden for CGI og Perl CGI og C

Ingeniørhøjskolen i Århus Slide 4 Hvad er “CGI”? Common Gateway Interface Standard til at afvikle et eksekverbart program (eller et script i Perls tilfælde) via Web servere –Web serveren skal blot vide hvem der har ansvaret for at afvikle koden, hvorefter den redelegere requestet (Næsten) alle sprog kan bruges til at lave CGI programmer med (standard in/out + environment) –Herunder C/C++, og de mest anvendte Perl og Python CGI/Perl/C var i mange år det foretrukne værktøj til dynamisk server-side programmering, indtil ASP/ASP.NET, JSP/Servlets, PHP kom frem

Ingeniørhøjskolen i Århus Slide 5 CGI Historie Opfundet af NCSA Software Development Group –1993? Svært at finde en præcis reference –Samme som opfandt Mosaic browseren (forløberen til Netscape) –Og NCSA httpd (én af de første web servere) –Find specificationen på: – –Er i dag reelt en defacto standard for program kald

Ingeniørhøjskolen i Århus Slide 6 Server side scripting - CGI 1 HTTP Request (over TCP/IP) GET /feedback.pl Bruger indtaster data i form feltet i browser og taster submit: 2 Webserveren modtager requestet: Finder det rette program via CGI interfacet, feks. (feedback.pl) En ny proces spawnes og programmet afvikles med de givne parametre, og resultatet afleveres på output stream 3 En typisk Header kunne se ud som følger: HTTP/ OK Server: Netscape-Communications/1.1 Date: Tuesday, 25-Nov-97 01:22:04 GMT Last-modified: Thursday, 20-Nov-97 10:44:53 GMT Content-length: 6372 Content-type: text/html... her følger resten af dokumentet Browseren modtager response: Renderer HTML dokumentet til brugervenlig form Webserver findes via IP adresse & DNS Lytter på port f.eks. 80 LIGHEDER MED ASP/JSP?

Ingeniørhøjskolen i Århus Slide 7 Eksempler I har prøvet at bruge både Servlets/JSP, PHP og ASP.NET – nu skal vi se hvordan CGI fungerer i relation til først et C eksempel og herefter et Perl eksempel Her følger et par slides der kort illustrere dette

Ingeniørhøjskolen i Århus Slide 8 Server side: Servlet eksempel import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class HelloWorld extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println(" "); out.println(" Hello World! "); out.println(" "); out.println(" Hello World! "); out.println(" "); } Vi ser at HTML er indlejret. Hello World! Hello World! Resultatet

Ingeniørhøjskolen i Århus Slide 9 #include main(int argc, char *argv[]) { char *cl; printf("Content-type: text/html%c%c",10,10); if(strcmp(getenv("REQUEST_METHOD"),"GET")) { printf("This script should be referenced with a METHOD of POST.\n"); exit(1); } else { printf(" You have contacted me using the POST method "); } cl = getenv("QUERY_STRING"); printf(" "); printf("The Content of Query_String was: "); printf(cl); printf(" "); return 0; } Server side CGI/C Page Vi anvender getenv til at kommunikere med serveren (environment variable) HTTP Get parametre strengen Kommer i env-var QUERY_STRING Alt vi skal bruge er standard IO

Ingeniørhøjskolen i Århus Slide 10 1 #!/usr/bin/perl 2 # Fig : fig27_11.pl 3 # Program to display CGI environment variables. 4 5 use CGI qw( :standard ); 6 7 $dtd = 8 "-//W3C//DTD XHTML 1.0 Transitional//EN\" 9 \" print( header() ); print( start_html( { dtd => $dtd, 14 title => "Environment Variables..." } ) ); print( "<table style = \"border: 0; padding: 2; 17 font-weight: bold\">" ); print( Tr( th( "Variable Name" ), 20 th( "Value" ) ) ); print( Tr( td( hr() ), td( hr() ) ) ); foreach $variable ( sort( keys( %ENV ) ) ) { print( Tr( td( { style => "background-color: #11bbff" }, 27 $variable ), 28 td( { style => "font-size: 12pt" }, 29 $ENV{ $variable } ) ) ); print( Tr( td( hr() ), td( hr() ) ) ); 32 } print( " " ); 35 print( end_html() ); Server side CGI/Perl Page Metoderne kommer fra CGI bibliotektet CGI bibliotektet wrapper kommunikation med web serveren

Ingeniørhøjskolen i Århus Slide 11 Hvad skal der til for at køre CGI JSP og Servlets bruger en ”Servlet Container” m. egen VM –Apache Tomcat, BEA Weblogic, Oracle AS, IBM WebSphere – alle standardiseret ASP & ASP:NET bruger Windows og IIS Web server /.NET CLR CGI/Perl er understøttet af stort set alle Web servere og operativsystemer, men der skal evt. downloades en operativsystem specifik perl fortolker. –Brug f.eks. Apache Web serveren, med mod_cgi/mod_perl modulet tilføjet CGI/C – CGI/C++ såfremt det kan kompileres på platformen kan det som regel også afvikles af Web serveren hvis den understøtter CGI (som f.eks. Apache)

Ingeniørhøjskolen i Århus Slide 12 PERL PERL: Practical Extraction and Report Language –Høj-niveau programmeringssprog –Fortolket programmeringssprog (perl.exe) –Løst typet –Bruges som konsol sprog af administratorer til overvågning og rapporteringsopgaver –Virkeligt stærkt til streng behandling –Vandt derfor tidligt indpas på WWW i forb. Med CGI –(

Ingeniørhøjskolen i Århus Slide 13 PERL History Opfundet af Larry Wall i 1987 Perl 2: 1988 Perl 3: 1989 Perl 4: 1992 –Standard in UNIX – small programs only Perl 5: 1994 –Full programming language – total rewrite –Subversions of Perl 5 Rasmus Lehrdorf uses Perl to create PHP: 1995 PerlNET:.NET Wrapper for Perl (runs unmanged) Perl 6: currently under development (open source) –New: VM instead of interpreter

Ingeniørhøjskolen i Århus Slide 14 Fig27_11.pl 1 #!/usr/bin/perl 2 # Fig : fig27_11.pl 3 # Program to display CGI environment variables. 4 5 use CGI qw( :standard ); 6 7 $dtd = 8 "-//W3C//DTD XHTML 1.0 Transitional//EN\" 9 \" print( header() ); print( start_html( { dtd => $dtd, 14 title => "Environment Variables..." } ) ); print( "<table style = \"border: 0; padding: 2; 17 font-weight: bold\">" ); print( Tr( th( "Variable Name" ), 20 th( "Value" ) ) ); print( Tr( td( hr() ), td( hr() ) ) ); foreach $variable ( sort( keys( %ENV ) ) ) { print( Tr( td( { style => "background-color: #11bbff" }, 27 $variable ), 28 td( { style => "font-size: 12pt" }, 29 $ENV{ $variable } ) ) ); print( Tr( td( hr() ), td( hr() ) ) ); 32 } print( " " ); 35 print( end_html() ); The import tag :standard imports a predefined set of standard functions. The use statement instructs Perl programs to include the contents (e.g., functions) of predefined packages called modules. Instruct the Perl script to print a valid HTTP header, using function header from the CGI library. The start_html function prints the document type definition for this document, as well as several opening XHTML tags (,,, etc., up to the opening tag). The %ENV hash is a built-in table in Perl that contains the names and values of all the environment variables. Function keys returns an unordered array containing all the keys in the %ENV hash. Specifies the value for the attribute style.

Ingeniørhøjskolen i Århus Slide 15 Program Output

Ingeniørhøjskolen i Århus Slide 16 Eksempel på brug af parametre Vi husker fra JSP/Servlets og ASP, at alt kommunikation primært foregik via FORM elementer Dette er også tilfældet i CGI/Perl I det følgende gives et eksempel på dette –Først en simpel registreringsform –Og herefter en CGI/Perl side der henter data fra HTTP requestet

Ingeniørhøjskolen i Århus Slide 17 Fig27_12.html 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 2 " Sample form to take user input in XHTML This is a sample registration form Please fill in all fields and click Register Please fill out the fields below Form element which indicates that, when the user clicks Register, the form information is post ed to the server. The statement action = "cgi- bin/ fig27_13.pl" directs the server to execute the fig27_13.pl Perl script (located in the cgi-bin directory) to process the posted form data. Exactly like JSP/PHP/ASP.NET

Ingeniørhøjskolen i Århus Slide 18 Fig27_12.html Must be in the form (555) Which book would you like information about? Internet and WWW How to Program 2e 48 C++ How to Program 3e 49 Java How to Program 4e 50 XML How to Program 1e Which operating system are you currently using? <input type = "radio" name = "os" 59 value = "Windows NT" checked /> 60 Windows NT<input type = "radio" 61 name = "os" value = "Windows 2000" /> 62 Windows 2000<input type = "radio" 63 name = "os" value = "Windows 98/me" /> 64 Windows 98/me <input type = "radio" 65 name = "os" value = "Linux" /> 66 Linux<input type = "radio" name = "os" 67 value = "Other" /> 68 Other <input type = "submit" 69 value = "Register" /> 70

Ingeniørhøjskolen i Århus Slide 19 Fig27_12.html Program Output 71 72

Ingeniørhøjskolen i Århus Slide 20 Fig27_13.pl 1 #!/usr/bin/perl 2 # Fig : fig27_13.pl 3 # Program to read information sent to the server 4 # from the form in the fig27_12.html document. 5 6 use CGI qw( :standard ); 7 8 $os = param( "os" ); 9 $firstName = param( "fname" ); 10 $lastName = param( "lname" ); 11 $ = param( " " ); 12 $phone = param( "phone" ); 13 $book = param( "book" ); $dtd = 16 "-//W3C//DTD XHTML 1.0 Transitional//EN\" 17 \" print( header() ); print( start_html( { dtd => $dtd, 22 title => "Form Results" } ) ); if ( $phone =~ / ^ \( \d{3} \) \d{3} - \d{4} $ /x ) { 25 print( "Hi " ); 26 print( span( { style => "color: blue; font-weight: bold" }, 27 $firstName ) ); 28 print( "!" ); print( "\nThank you for completing the survey." ); 31 print( br(), "You have been added to the " ); print( span( { style => "color: blue; font-weight: bold" }, 34 $book ) ); 35 print( " mailing list.", br(), br() ); Function param is part of the Perl CGI module and retrieves values from a form field’s value. Same as ASP’s Request(”param”) & JSP’s request.getParameter(”param”) The if condition uses a regular expression to validate the phone number. The expression “ \( ” matches the opening parenthesis of the phone number. This sequence must be followed by three digits ( \d{3} ), a closing parenthesis, three digits, a hyphen and finally, four more digits. Dette kan også gøres i både JSP og ASP, men også i JavaScript – Client side

Ingeniørhøjskolen i Århus Slide 21 Fig27_13.pl print( span( { style => "font-weight: bold" }, 38 "The following information has 39 been saved in our database: " ), br() ); print( table( 42 Tr( th( { style => "background-color: #ee82ee" }, 43 "Name" ), 44 th( { style => "background-color: #9370db" }, 45 " " ), 46 th( { style => "background-color: #4169e1" }, 47 "Phone" ), 48 th( { style => "background-color: #40e0d0" }, 49 "OS" ) ), Tr( { style => "background-color: #c0c0c0" }, 52 td( "$firstName $lastName" ), 53 td( $ ), 54 td( $phone ), 55 td( $os ) ) ) ); print( br() ); print( div( { style => "font-size: x-small" }, 60 "This is only a sample form. You have not been 61 added to a mailing list." ) ); 62 } 63 else { 64 print( div( { style => "color: red; font-size: x-large" }, 65 "INVALID PHONE NUMBER" ), br() ); print( "A valid phone number must be in the form " ); 68 print( span( { style => "font-weight: bold" }, 69 "(555) " ) ); 70 If the phone number is not valid an error message is printed to the client Methods span and div add and tags to the page, respectively.

Ingeniørhøjskolen i Århus Slide 22 Fig27_13.pl Program Output 71 print( div( { style => "color: blue" }, 72 "Click the Back button, and enter a 73 valid phone number and resubmit." ) ); 74 print( br(), br() ); 75 print( "Thank you." ); 76 } print( end_html() );

Ingeniørhøjskolen i Århus Slide 23 Using Extra Libraries for C Standard Libraries available Wraps the reading of env and stdin Special HTML functions Sessions etc Simplified query-results.cgi using cgihtml. #include "cgi-lib.h" #include "html-lib.h" int main() { llist entries read_cgi_input(&entries); html_header(); html_begin("Query Results"); print_entries(entries); html_end(); list_clear(&entries); }

Ingeniørhøjskolen i Århus Slide 24 Eksempel på brug af Server-Side Includes (SSI eller.shtml) Det er også muligt at opnå JSP/ASP lignende funktionalitet, dvs. med indlejrede ”tags” Fra SHTML kan kommandoen ”EXEC” kaldes, der kalder et andet CGI script, og inkluder dets output – svarende til Server.Execute(”side.asp”) i ASP, og i JSP. I det følgende gives et eksempel på dette

Ingeniørhøjskolen i Århus Slide 25 Fig27_14.shtml 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 2 " Using Server Side Includes Using Server Side Includes The Greenwich Mean Time is The name of this document is The local date is The command EXEC can be used to run CGI scripts and embed their output directly into a Web page. The ECHO command displays variable information. The ECHO command is followed by the keyword VAR and the name of the variable. For example, variable DATE_GMT contains the current date and time in Greenwich Mean Time (GMT).

Ingeniørhøjskolen i Århus Slide 26 Fig27_14.shtml 33 This document was last modified on Your current IP Address is My server name is And I am using the Web Server You are using This server is using <div style = "text-align: center; 66 font-size: xx-small"> 67

Ingeniørhøjskolen i Århus Slide 27 Fig27_14.shtml Program Output 68 This document was last modified on

Ingeniørhøjskolen i Århus Slide 28 Fig27_15.pl 1 #!/usr/bin/perl 2 # Fig : fig27_15.pl 3 # Program to track the number of times 4 # a Web page has been accessed. 5 6 use CGI qw( :standard ); 7 8 open( COUNTREAD, "counter.dat" ); 9 $data = ; 10 $data++; 11 close( COUNTREAD ); open( COUNTWRITE, ">counter.dat" ); 14 print( COUNTWRITE $data ); 15 close( COUNTWRITE ); print( header(), "<div style = \"text-align: center; 18 font-weight: bold\">" ); 19 print( "You are visitor number", br() ); for ( $count = 0; $count < length( $data ); $count++ ) { 22 $number = substr( $data, $count, 1 ); 23 print( img( { src => "images/$number.gif" } ), "\n" ); 24 } print( " " ); The file counter.dat, which contains the number of hits to date for the fig27_14.shtml Web page, is opened for input. Function open is called to create a filehandle to refer to the file during the execution of the script.

Ingeniørhøjskolen i Århus Slide 29 POOP: OO Perl OO understøttelse i Perl: POOP Minder lidt om PHP 4 modellen

Ingeniørhøjskolen i Århus Slide 30 Perl og Databaser Også mulighed for DB adgang i PERL: DBI F.eks. MySQL drivere tilgængelige Se Deitel & Deitel eller

Ingeniørhøjskolen i Århus Slide 31 CGI vs øvrige server-side sprog Performance –CGI programmer spawnes og afsluttes for hver client request performer dårligt ved mange samtidige request Udover ny proces skal der også spawnes perl.exe (ved perl) –JSP/Servlets, ASP.NET og PHP håndterer flere samtidige requests mere intelligent performer bedre ved mange samtidige request Struktueringsmekanismer –Afhængigt af underliggende sprog –Ringe kontakt mellem CGI scripts og Web server –Mangler grundliggende objekter (f.eks. Session objektet) hvilket dog kan findes via eksterne libs

Ingeniørhøjskolen i Århus Slide 32 Performance Comparison of Alternative Solutions For Web-To-Database Applications, by AMANDA W. WU, HAIBO WANG AND DAWN WILKINS, October

Ingeniørhøjskolen i Århus Slide 33 Om fremtiden for CGI I Generelt kan man lave de fleste ting du kan lave i JSP/Servlets og/eller ASP/ASP.NET- i CGI/Perl, (eller CGI med et andet sprog) –Databaser, filadgang, regulære udtryk, algebra, logik … Samtidigt findes der ufatteligt mange eksisterende scripts der kan køres, og mange sites bruger stadigvæk CGI til f.eks. Counter, FormMails, gæstebøger osv.

Ingeniørhøjskolen i Århus Slide 34 Om fremtiden for CGI II MEN: –CGI ikke velegnet til at udvikle større systemer –CGI har ikke IDE og debugging faciliteter –Svært at strukturere –Stærkt begrænset popularitet DOG: –Vigtigt at kende teknologien – både historisk set – men også fordi der stadigvæk kører masser af CGI programmer hos kunder –Anvendeligt til indlejrede enheder –Godt til afvikling af ekstremt krævende databehandlingsalgoritmer