కామన్ గేట్వే ఇంటర్ఫేస్
కామన్ గేట్వే ఇంటర్ఫేస్ (CGI ) అనేది వెబ్ సర్వర్ సాఫ్ట్వేర్ ఏ విధంగా వెబ్ పేజీలని ఒక కన్సోల్ వినియోగానికి కేటాయించాలో నిర్వచించే ఒక ప్రమాణ నియమావళి.
ఇటువంటి ప్రయోగాలు CGI స్క్రిప్ట్ అని పిలవబడుతున్నాయి - ఇవి సాధారణంగా ఒక స్క్రిప్టింగ్ భాషలో రాయబడుతాయి.
వెబ్ సర్వర్ యొక్క పని ఏమనగా సేవాగ్రాహితలు (సాధారణంగా వెబ్ బ్రౌజర్ లు) వెబ్ పేజీల కొరకు చేసే అభ్యర్ధనలకి స్పందించి, ఆ అభ్యర్ధనల సారాన్ని (ఎక్కువగా దానియొక్క URLలో ఉంటున్న) పరిశీలించి, పంపించడానికి ఏది సరైన పత్రమని నిర్దేశించి మరియు ఆ పత్రాన్ని సేవగ్రహితలకి పంపించడం.
అ అభ్యర్ధన డిస్క్ లో ఉన్న ఒక ఫైల్ ని సూచిస్తే, సెర్వర్ అ ఫైల్ యొక్క విషయాన్ని వెంటనే తిరిగి పంపివేయగలదు. మరొక పద్ధతి ఏమంటే, అ పత్రమొక్క విషయాన్ని అప్పడికప్పుడే రూపొందించవచ్చు. ఇలాగ చేయడానికి ఒక పద్ధతి ఏమంటే, కన్సోల్ ప్రయోగమే పత్రమొక్క విషయాన్ని నిర్ణయించి, అ కన్సోల్ ప్రయోగాన్ని వాడమని వెబ్ సెర్వర్ కు చెప్పడం. వెబ్ సెర్వర్, కన్సోల్ ప్రయోగాల మధ్య ఏ సమాచారము పరివర్తన చేయాలని మరియు ఏ విధంగా చేయాలని CGI నిర్దేశిస్తుంది.
వెబ్ సెర్వెర్ సాఫ్ట్ వేర్ కన్సోల్ ప్రయోగాన్ని ఒక ఆదేశం మేరకు వాడుతుంది. అభ్యర్ధన గురించిన సమాచారాన్ని (URL వంటి) ఏ విధముగా, ఆర్గ్యుమెంట్ లు మరియు ఎన్విరాన్మెంట్ చలరాశీలు రూపములో ఆదేశానికి పంపించాలని నిర్దేశిస్తుంది. బహిర్గత పత్రాన్ని ప్రమాణ బహిర్గతానికి ప్రయోగము రాయవలసి ఉంటుంది; బహిర్గతం గురించిన అదనపు సమాచారాన్ని (తిరిగి పంపించే పత్రమొక్క రకాన్ని తెలిపే MIME రకం వంటి), హెడర్కు ముందు జత చేశి తిరిగి పంపించే విషయాన్ని CGI నిర్దేశిస్తుంది.
1993లో వరల్డ్ వైడ్ వెబ్ (WWW) చిన్నదే కాని వేగంగా పెరుగుతూ ఉంది. WWW సాఫ్ట్ వేర్ రూపొందిచేవారు మరియు వెబ్ సైట్ రూపొందించేవారు www-టాక్ మెయిలింగ్ లిస్టు ద్వారా సంబంధాలు కొనసాగించారు. అప్పుడే కమాండ్ లైన్ ఎక్సేక్యుటబెల్ లని పిలవడానికి ఒక ప్రమాణాన్ని ఆమోదించారు. ఏ క్రింద చెప్పబడినవారి పేర్లని [1]లో విశిష్టంగా పేర్కొన్నారు.
రాబ్ మక్కూల్ (NCSA httpd వెబ్ సర్వర్ రచయిత) జాన్ ఫ్రాన్క్స్ (GN వెబ్ సర్వర్ రచయిత) అరి లువోటొనేన్ (CERN httpd వెబ్ సర్వర్ రూపకర్త) టోనీ సాండెర్స్ (ప్లేక్సాస్ వెబ్ సర్వర్ రచయిత) జార్జ్ ఫిలిప్స్ (బ్రిటిష్ కొలంబియా విశ్వవిద్యాలయంలో ఉన్న వెబ్ సర్వర్ ని నడిపించేవారు)
NCSA బృందం నియమాని రాశారు[2]. NCSA ఇప్పటికి దాన్ని మాతృ స్థానములో నడిపిస్తూ ఉంది.[3][4] ఇతర వెబ్ సర్వర్ ల రూపకర్తలు కూడా దాన్ని అమలు చేశారు. అప్పటినుండి ఇది వెబ్ సర్వర్ లకు ప్రమాణముగా ఉంటూ ఉంది.
ఒక వికీని అమలు పరచడం CGI ప్రోగ్రాంకు ఒక ఉదాహరణ. ప్రయోక్త యొక్క ప్రతినిధి ఒక అంశాన్ని కోరుకుంటుంది; సర్వర్ ఆ అంశము యొక్క పేజి మూలాన్ని (అది ఉంటె) బైటికి తీసి, దాన్ని HTMLగా మార్చి, ఫలితాన్ని పంపిస్తుంది.
వెబ్ సర్వర్ యొక్క దృష్టిలో, http://www.example.com/wiki.cgi వంటి కొన్ని లోకేటర్ లు CGI ద్వారా నిర్వహించవలసిన ఒక ప్రోగ్రాంని సూచిస్తుయి. అ URL కొరకు ఒక అభ్యర్ధన వచ్చినప్పుడు, దానికి సంబంధించిన ప్రోగ్రాం నిర్వహించబడుతుంది.
ప్రోగ్రాంకు ఎన్విరాన్మెంట్ చలరాశీలు ద్వారా సమాచారం పంపించబడుతుంది. ఇది కమాండ్-లైన్ ఆర్గ్యుమెంట్ లని వాడే సాధరాణ నిర్వాహణలకి బిన్నంగా ఉంది. HTTP PUT or POST ల విషయములో ప్రయోక్త సమర్పించిన సమాచారం ప్రమాణ ప్రవేశాంశం ద్వారా ప్రోగ్రాంకు అందించబడుతుంది.
వెబ్ సర్వర్ లు తరచుగా డైరక్టరి ట్రీ మూలములో ఒక cgi-bin డైరక్టరిని కలిగి ఉంటాయి.
ఫలితాన్ని ప్రమాణ బహిర్గతము రూపములో, ఒక హెడర్ మరియి ఖాళి పంక్తిని కలిపి వెబ్ సర్వర్ కు ప్రోగ్రాం తిరిగి పంపిస్తుంది.
ఒక HTTP హెడర్ మాదిరిగానే హెడర్ కోడింగ్ చేయబడుతుంది. తిరిగి పంపించబడుతున్న పత్రమొక్క MIME రకాన్ని కూడా విధిగా కలిపి ఉండాలి.[5] హెడర్ లు ప్రయోక్తకు తిరిగి పంపించే ప్రతిస్పందనతో పాటు వెబ్ సర్వర్ సహాయముతో పంపించబడుతుంది.
ఒక వేళ CGI పిలుపు csh లేదా perl వంటి స్క్రిప్టింగ్ భాషని వాడి ఉంటె, కోడింగ్ తప్పిదాల వల్ల కోడ్ ఇంజెక్షన్ వల్నరబిలిటి ఏర్పడటానికి ఎక్కువ అవకాశం ఉంటుంది.
ఒక కమాండ్ ని పిలవడము సాధారణంగా ఒక కొత్తగా సృష్టించబడిన ప్రక్రియని ప్రారంబిస్తుంది. బహిర్గతాన్ని సృష్టించడం కంటే కూడా చాల ఎక్కువ సమయము మరియు మెమరి ప్రక్రియని ప్రారంబించడానికి అవసరము ఉంటుంది. ముఖ్యంగా ప్రోగ్రాం ఇంకా అనువదించవలసి లేదా కంపైల్ చేయవలసి ఉన్నప్పుడు ఈ పరిస్థ్తితి ఏర్పడుతుంది.
తరచు కమాండ్ పిలవబడుతూ ఉంటె, దానివల్ల ఏర్పడే పనిభారము వెబ్ సర్వర్ కు తొరలోనే ఆటంకం కలిగిస్తుంది.
అనువాదం వల్ల పెరిగే సమయం మరియు మెమరీ లని, Perl లేదా ఇతర స్క్రిప్టింగ్ భాషలు కాకుండ C/C++ లలో లాగ కంపైల్ చేయబడిన CGI ప్రోగ్రాంలని వాడటం వలన తగ్గించవచ్చు. ప్రక్రియ సృష్టి జరిగేటప్పుడు పెరిగే సమయం మరియు మెమరీ లని, FastCGI వంటి పరిష్కారాలని వాడటం ద్వారా కాని ప్రత్యేకమైన పొడిగింపు మాడ్యులలని వాడి వెబ్ సెర్వర్ లోపలే పూర్తిగా ప్రయోగం యొక్క కోడ్ ని నడపడం వల్ల కాని తగ్గించవచ్చు.
ఈ సమస్యల పరిష్కారాల కొరకు అనేక మార్గాలని పాటించవచ్చు:
ప్రసిద్ధ వెబ్ సెర్వర్ లు వాళ్ళ సొంత పొడిగింపు ప్రక్రియలని రూపొందించుకున్నాయి. ఇవి అపాచి మాడ్యుల్ లు, నెట్స్కేప్ NSAPI ప్లగ్-ఇన్లు, IIS ISAPI ప్లగ్-ఇన్ లు వంటి మూడో-పక్ష సాఫ్ట్ వేర్ వెబ్ సెర్వర్ లోపలే నడపడానికి అనుమతిస్తాయి. CGI సాధించిన ప్రణామాల స్థాయిని ఈ ఇంటర్ఫేస్ లు సాధించక పోయినా, అవి కనీసం విడుదల చేయబడి, అనేక వెబ్ సెర్వర్ లలో పాక్షికంగానైనా అమలు చేయబడ్డాయి. సింపుల్ కామన్ గెట్వే ఇంటర్ఫేస్ లేక SCGI FastCGI అనేది CGI ప్రోగ్రామింగ్ కు అతి దగ్గెరగా ఉంటూ, ఒక ఎక్కువ సమయము నడిచే ప్రక్రియ ఒకటికంటే ఎక్కువ ప్రయోక్త అభ్యర్ధనలని చేపట్టడానికి వీలు కలిపిస్తుంది. ప్రతి అభ్యర్ధనకు ఒక కొత్త ప్రక్రియని శ్రుష్టించడం వల్ల CGIకు ఏర్పడే అనవసర వృధాని నివారించి, సరళంగా ఉంచుతుంది. ప్రయోగాన్ని వెబ్ సెర్వెర్ ప్లగ్-ఇన్ కు మార్చకుండా, FastCGI ప్రయోగాలు వెబ్ సెర్వెర్ లకి అతీతంగా ఉంటాయి.
ఏ వెబ్ ప్రయోగము యొక్క సరైన అమరిక, ప్రయోగాల ప్రత్యేక వివరాలు, సంచారం మరియు వ్యవహారం యొక్క క్లిష్టత వంటి అంశాల మీద ఆధారపడి ఉంటుంది; ఈ లాభ నష్టాలని దృష్టిలో పెట్టుకుని, చేయవలసిన పని మరియు ఆ పని ఎంత సమయములో చేయాలో అనే విషయాలని బట్టి అ పని అమలు చేయడానికి ఒక ఉత్తమమైన పద్ధతిని నిర్ణయించాలి.
FastCGI SCGI WSGI ప్రయోగం యొక్క సెర్వెర్ కంప్యూటర్ ప్రమాణాల యొక్క జాబితా
, CGI అభ్యర్ధనని పార్సింగ్ చేసి HTML ప్రతిస్పందనని సృష్టించడం కొరకు FSF C++ లైబ్రరి , CGI అభ్యర్ధనని పార్సింగ్ చేసి HTML ప్రతిస్పందనని సృష్టించడం కొరకు ఒక perl మాడ్యుల్ నియమం C/C++ వెబ్ ప్రయోగం ఇంటర్ఫేస్