# பொதுவான கேட்வே இடைமுகம்


**பொதுவான கேட்வே இடைமுகம்** **(CGI** ) என்பது ஒரு தகவல் சேவையகம், பொதுவாகவே ஒரு வலைச் சேவையகத்துடன் உள்ள புறப் பயன்பாட்டு மென்பொருளுடன் இடைமுகப்படுத்துவதற்கான ஒரு தரநிலை நெறிமுறையாகும்.  

அப்படியான ஒரு தகவல் சேவையகத்தின் பணி என்பது (வலைச் சேவையகங்களாக இருந்தால், கோரிக்கைகளை பயனகத்தில்(client) இருந்து வலை உலாவிகளுக்கு) வெளியீட்டை வழங்கி கோரிக்கைகளுக்கு பதிலளிப்பதாகும். ஒவ்வொரு முறையும் ஒரு கோரிக்கை வந்தவுடன், அந்த கோரிக்கை எதைக் கேட்கிறது என்பதை சேவையகம் ஆராய்ந்து, அதற்கேற்ற வெளியீட்டை திரும்ப வழங்குகிறது. இதனைச் செய்ய சேவையகத்துக்கு தேவையான இரு அடிப்படை முறைகள்:  

- டிஸ்கில் சேமிக்கப்பட்ட கோப்பு ஒன்றை கோரிக்கை கண்டறிந்தால், அந்த கோப்பில் உள்ள உள்ளடக்கங்களை திரும்பி அளிக்கும்.
- ஒரு செயலாற்றக்கூடிய கட்டளையை, குறிப்பாக விவாதங்களை கோரிக்கையில் கண்டறிந்தால், அக்கட்டளையை இயக்கி அதற்குறிய வெளியீட்டை வெளியிடும்.

அந்த நொடியை செயல்படுத்துவதற்கான தரநிலை முறையை CGI விவரிக்கிறது. சேவையகத்தைப் பற்றிய தகவல் மற்றும் விவாதங்கள் மற்றும் சுற்றுப்புற மாறிகளின் வடிவில் கட்டளைகளுக்கு கோரிக்கை அனுப்பப்படுவது, மற்றும் வெளியீட்டைப் பற்றி கூடுதல் தகவலை, அக்கட்டளை டைப் போன்ற தலைப்புக்கூற்றாக எவ்வாறு அனுப்பும் என்பதையும் விவரிக்கிறது.  

## வரலாறு
1993-இல், வேர்ல்டு வைடு வெப் (WWW) மிகச்சிறியதாக இருந்தாலும் வளர்ந்து கொண்டிருந்தது. WWW மென்பொருள் வடிவமைப்பாளர்கள் மற்றும் வலைத் தள வடிவமைப்பாளர்கள் www-டாக் அஞ்சலிடும் பட்டியல் மீது ஒரு கவனம் வைத்துக் கொண்டே இருந்தார்கள், அதனால் அழைக்கும் கட்டளை வரி செயற்படுத்தல்களுக்கான ஒரு தரநிலை ஏற்றுக் கொள்ளப்பட்டதாகவே இருந்து வந்தது. கீழே குறிப்பபிடப்பட்டவர்கள் CGI குறிப்பீட்டில் குறிப்பிடப்படத்தக்க இடம்பெற்றவர்கள்:  

- ராப் மெக்கூல் (NCSA HTTPd வலைச் சேவையகத்தின் ஆசிரியர்)
- ஜான் பிராங்க்ஸ் (GN வலைச் சேவையகத்தின் ஆசிரியர்)
- அரி லுவோடோனன் (CERN httpd வலைச் சேவையகத்தின் வடிவமைப்பாளர்)
- டோனி சான்டர்ஸ் (பிளக்சஸ் வலைச் சேவையகத்தின் ஆசிரியர்)
- ஜார்ஜ் பிலிப்ஸ் (பிரித்தானிய கொலம்பியா பல்கலைக்கழகத்தின் வலைச் சேவையகப் பராமரிப்பாளர்)
ராப் மொக் கூல் ஆரம்பநிலை குறிப்பீட்டை வடிவமைத்தவர், NCSA அதனை இன்னும் செயல்படுத்துகிறது. அது தொடர்ச்சியாக பல சேவையகங்களில் செயல்படுத்தப்பட்டது.  

## உதாரணம்:
ஒரு CGI நிரலுக்கான எடுத்துக்காட்டாகச் சொன்னால் ஒருவர் ஒரு விக்கியை செயல்படுத்துவதைச் சொல்லலாம். பயனர் முகவர் ஒரு உள்ளீட்டின் பெயரைக் கோரிக்கையாக வைக்கும்; அந்த உள்ளீட்டின் பக்கத்தின் ஆதாரத்தை சேவையகம் மீட்டு (ஒன்று இருந்தால்), அதனை அது ஒரு HTML ஆக மாற்றி, தீர்வை அனுப்பி வைக்கும்.  

## செயல்படுத்தல்
வலைச் சேவையகத்தின் பார்வையில், எ.கா. , போன்ற சில இடப்பொருத்திகள் CGI வழியாக ஒரு நிரலை செயல்படுத்துவதற்காக பொறுப்பேற்றிருப்பனவாகும். URLக்குறிய கோரிக்கை வந்து சேர்ந்தவுடன், அதற்குறிய பொறுப்பு நிரல் செயல்படத் தொடங்கும்.  

சுற்றுப்புற மாறிகளைப் பயன்படுத்தி தரவு நிரலுக்குள் கடத்தப்படும். இது வழக்கமான செயல்படுத்தலுக்கு மாறானது, அதாவது இங்கே கட்டளை-வரி விவாதங்கள் பயன்படுத்தப்படும். HTTP PUT அல்லது POSTகளில், பயனர்-சமர்ப்பித்த தரவு நிலையான உள்ளீட்டின் வழியாக நிரலுக்குள் வழங்கப்படும்.  

வலைச் சேவையகங்கள் CGI உடன் அழைக்கப்படும் செயல்படுத்தப்படக்கூடிய கோப்புகளை வைத்துக் கொள்ள தேவைப்படும் கோப்பக மரத்தின் அடிப்பகுதியில் ஒரு **cgi-bin** கோப்பகத்தை எப்போதும் வைத்திருக்கும்.  

நிரலானது வலைச் சேவையகத்துக்கு நிலையான வெளியீட்டின் வடிவத்தில் தீர்வை அனுப்பும், அதில் ஒரு தலைப்புக்கூற்றும் ஒரு வெற்று வரியும் முன்னிருத்தப்படும்.  

### தலைப்புக்கூற்று வடிவாக்கம்
தலைப்புக்கூற்று ஒரு HTTP தலைப்புக்கூற்றைப் போலவே குறியாக்கப்பட்டு, திருப்பி அனுப்பப்படும் ஆவணத்தில் MIME வகையையும் கொண்டிருக்க வேண்டும் தலைப்புக்கூற்றுகள் பொதுவாகவே பயனருக்குத் தேவையான பதிலுடன் பரப்பிவிடப்படும், அதற்கு வலைச் சேவையகமும் துணைபுரியும்.  

## குறைபாடுகள்
ஒரு CGI அழைப்பில் csh அல்லது perl போன்ற ஸ்கிரிப்ட் மொழி பயன்படுத்தப்படுகையில், குறியிடல் பிழைகளில் ஒரு குறி உள்செலுத்தல் தொற்றிக் கொள்ளல் ஏற்படும் வாய்ப்பு அதிகமாக உள்ளது.  

ஒரு கட்டளையை பொதுவாக அழைப்பது என்பது ஒரு புதிதாக உருவாக்கப்பட்ட செயல்நிலையின் நேர்வு ஏற்படுவதாகும். இந்த செயல்நிலையைத் தொடங்கிவிடுவதால் வெளியீட்டை ஏற்படுத்துவதற்கு தேவையான இயல்பான பணிநிலையை விட அதிகமான நேரமும் நினைவகமும் தேவைப்படலாம், குறிப்பாக அந்த நிரல் இன்னும் அதிகமாக மொழிபெயர்க்க அல்லது தொகுக்கப்பட வேண்டிய நிலையில் ஏற்படும். இந்த நிரல் எப்போதும் அழைக்கப்பட்டால், இந்த பணிப்பளு சீக்கிரமாக வலைச் சேவையகங்களை மிஞ்சிவிட முடியும். இந்த பணிப்பளு தொகுக்கப்பட்ட CGI நிரல்களின் பயன்பாட்டால் குறைக்கப்படாலும், அதாவது Perl அல்லது வேறு ஸ்கிரிப்ட் மொழியை CGI உடன் பயன்படுத்துவதை விட C/C++ போன்றவற்றால் குறைக்கப்படலாம். இது போன்ற செயல்திறன் பிரச்சனைகள் அதிகப் பளுவை அனுபவிக்கும் கணினிகளில் மட்டுமே அதிகமாக ஏற்படும்.  

### மாற்று வழிகள்
இதனை மீட்க பலவித அணுகுமுறைகள் கையாளப்படலாம்:  

- பிரபலமான வலைச் சேவையகங்கள் மூன்றாம் தரப்பு மென்பொருள்களை தங்கள் வலைச் சேவையகங்களுக்குள் இயங்குவதற்கு அனுமதிக்கும் விரிவாக்க இயக்கமுறைகளை தாங்களே வடிவமைத்தனர், எ.டு. Apache குறுநிரல்கள், Netscape NSAPI கூடுதல் இணைப்புகள், IIS ISAPI கூடுதல் இணைப்புகள்.இந்த இடைமுகங்கள் CGIக்குறிய அதே தரநிலையாக்கத்தை அடையாவிட்டால், அவை குறைந்தபட்சம் பதிப்பிக்கப்பட்டு பலவகையான வலைச் சேவையகங்களில் குறைந்தபட்சம் பகுதியாக செயல்படுத்தப்படும்.
- சாதாரண பொது கேட்வே இடைமுகம் அல்லது SCGI
- FastCGI CGI நிரலாக்க மாடலுக்கு மிக அருகில் இருந்து கொண்டே, ஒன்று அல்லது அதற்கு மேற்பட்ட பயனர் கோரிக்கையை கையாளக்கூடிய ஒற்றையான, நீண்ட செயல்பாட்டை அனுமதிக்கும், அது அதிகப்படியான CGI அழுத்தங்களில் அதிகமானதை நிராகரித்து சாதாரண நிலையை தக்கவைத்துக் கொண்டு, ஒவ்வொரு கோரிக்கைக்கும் ஒரு புதிய செயல்பாட்டை உருவாக்கும். ஒரு பயன்பாட்டை வலைச் சேவையக கூடுதல் இணைப்பாக மாற்றுவது போல் இல்லாமல், FastCGI பயன்பாடுகள் வலைச் சேவையகத்தில் சுதந்திரமாகவே நிலைத்திருக்கும்.

எந்தவொரு வலைப் பயன்பாட்டுக்கும் உரிய மிகச்சிறந்த உள்ளமைவு பயன்பாடு-சார்ந்த விவரங்கள், போக்குவரத்து அளவு மற்றும் பரிமாற்றத்தின் தீவிரத்தன்மை ஆகியவற்றைச் சார்ந்தே இருக்கும்; இந்த கொடுக்கல் வாங்கல்கள் ஒரு கொடுக்கப்பட்ட பணி மற்றும் நேர பட்ஜட்டின் சிறந்த செயல்படுத்தலை விவரிக்கத்தக்கதாக ஆராயப்பட வேண்டும்.  

## இதையும் பாருங்கள்

- FastCGI
- SCGI
- WSGI
- பயன்பாட்டுச் சேவையகம்
- கணினித் தரநிலைகளின் பட்டியல்