Ағылшыншамен салыстырыңыз: абзацты басыңыз — түпнұсқа терезеде ашылады. Абзац астындағы EN түймесі оны мәтін ішінде көрсетеді.
Мазмұны
Кіріспе
Жай ортақ шлюз интерфейсі (SCGI) – HTTP серверлерімен интерфейс орнату үшін, CGI протоколына балама ретінде қолданылатын протокол. Ол FastCGI-ге ұқсас, бірақ оны талдауды жеңілдету үшін жасалған. CGI-ден айырмашылығы, ол ұзаққа созылатын қызмет процесіне сұранымдарды орындауды жалғастыруға мүмкіндік береді, осылайша орнатуға байланысты кешігулерді (мысалы, дерекқорға қосылу сияқты) болдырмай, сұранымдарға жауап беру жылдамдығын арттырады. SCGI – веб-сервер мен қолданба сервері арасындағы байланысты анықтайтын протокол. Бұл, керісінше, CGI – бұрынғы қолданба (шлюз) интерфейсі болып табылады, ол қолданба бағдарламалаушысына сокеттердің күрделілігінен және ұзаққа созылатын қызмет процестерінен аулақ болуға мүмкіндік береді, бірақ бұл жағдайда нашар кеңейтімділік пен жоғары қосымша шығындар қабылданады. SCGI протоколы веб-сервердің HTTP сұранысын талдап, тексергенін пайдаланып, SCGI серверіне сұранысты стандартталған түрде жібереді, сонымен қатар бағдарламалаушыға түсініксіздіктерді және протоколдың шектен шығу жағдайларын талдау қажеттігін жояды. Бұл RFC 2616-дан күрделі тақырыптарды талдау және біріктіру ережелерінен құтылуға мүмкіндік береді, соның арқасында SCGI сервер процесінде маңызды күрделіліктерден қысылған болады.
The Simple Common Gateway Interface (SCGI) is a protocol for applications to interface with HTTP servers, as an alternative to the CGI protocol. It is similar to FastCGI but is designed to be easier to parse. Unlike CGI, it permits a long running service process to continue serving requests, thus avoiding delays in responding to requests due to setup overhead (such as connecting to a database). SCGI is a protocol which defines communication between a web server and an application server. This is in contrast to CGI, which is an earlier application (gateway) interface designed to let the application programmer avoid the complexity of sockets and long running service processes when poor scalability and high overhead are acceptable. The SCGI protocol leverages the fact that the web server has already parsed and validated the HTTP request, and canonically communicates the request to the SCGI server while letting the application programmer avoid parsing ambiguities and protocol edge cases. This avoids the complicated header parsing and header combining rules from RFC 2616, saving significant complexity in the SCGI server process.
Тарих
Нил Шменауэр 2001 жылдың қазан айында түпнұсқа SCGI протоколының сипаттамасын жариялады. Ол SCGI-дің алғашқы іске асыруларын жасады және оларды 2002 жылдың сәуірінде алғаш рет жариялады.
Neil Schemenauer published the original SCGI protocol specification dated October 2001. He developed the first implementations of SCGI and initially published them in April 2002.
Ерекшеліктер
Клиент 8 биттік байттарды тасымалдауға мүмкіндік беретін сенімді ағын протоколы арқылы SCGI серверіне қосылады. Клиент сұрау жіберуден бастайды. SCGI сервері сұраудың соңына жеткенде, жауап жіберіп, қосылысты жабады. Бұл протокол жауап форматын нақты анықтамайды, бірақ көбінесе CGI-мен үйлесімді HTTP жауаптары қолданылады.
The client connects to a SCGI server over a reliable stream protocol allowing transmission of 8 bit bytes. The client begins by sending a request. When the SCGI server sees the end of the request it sends back a response and closes the connection. The format of the response is not specifically specified by this protocol, although CGI equivalent HTTP responses are generally used.
Сұрау салу форматы
SCGI сұранысы – желілік кодталған тақырыптар мен деректердің біріктірілуі. SCGI жауабы – стандартты HTTP жауабы. Әр тақырып атау-мәнді жұптан тұрады, онда атау да, мән де нөлдік символмен аяқталатын тізбектер (C тізбектері) болады. Мән бос тізбек болуы мүмкін, мұндай жағдайда аяқтаушы нөл сол күйінде қалады. Атау да, мән де ішкі нөлдік байттарды қамтуы мүмкін емес. Бұл талаптар C тізбектері үшін стандартты, бірақ басқа тізбектерді өңдеу стандарттарына үйренген бағдарламашылар үшін шатастыру тудыруы мүмкін. Барлық берілген тақырыптар біртұтас байттық тізбек құру үшін біріктіріледі, содан кейін желілік кодталады. Егер болса, шикі деректер қоса беріледі. Сұраныс тақырыптарында атаулардың қайталануына жол жоқ; RFC 2616 талаптарына сәйкес тақырыптарды біріктіру алдын ала жасалуы тиіс. Бірінші сұраныс тақырыбының атауы "CONTENT LENGTH" болуы керек, ал мәні деректердің ұзындығын ондық санмен көрсетуі керек. "CONTENT LENGTH" сұраныс тақырыбының мәні "0" болған жағдайда да әрқашан болуы керек. Сондай-ақ, "SCGI" атауымен және "1" мәнімен сұраныс тақырыбы да міндетті түрде болуы керек. Ескі CGI бағдарламаларын SCGI-ға түрлендіру кезінде үйлесімділікті қамтамасыз ету үшін стандартты CGI ортасының айнымалылары SCGI тақырыптарында берілуі керек. Сұраныстағы деректер (болған жағдайда) тақырыптардан кейін келеді; оның ұзындығы "CONTENT LENGTH" сұраныс тақырыбында көрсетілген. SCGI протоколы қызмет бағдарламашысын кейбір HTTP ескертулерінен қорғаса да, түрлі ерекшеліктер (мысалы, хабарлама деректерінің октеттерін Трансферлік кодтау тақырыбына сәйкес түсіндіру, CONTENT LENGTH деректерді тарату үшін кодталғаннан кейінгі октеттер санын білдіреді және т.б.) HTTP протоколының спецификациясын білуді талап етеді.
A SCGI request is the concatenation of netstring encoded headers and a body. A SCGI response is a normal HTTP response. Each header consists of a name–value pair, where both the name and the value are null terminated strings (C strings). The value can be an empty string, in which case the terminating null still remains. Neither name nor value can contain any embedded null bytes. These considerations are standard for C strings, but are often confusing for programmers used to other standards for string handling. All provided headers are concatenated to form a single byte sequence, then netstring encoded. The raw body, if any, is then appended. Duplicate names are not allowed in the request headers; RFC 2616 compliant header combining must already have taken place. The first request header must have the name "CONTENT LENGTH" and a value that is the length of the body in decimal. The "CONTENT LENGTH" request header must always be present, even if its value is "0". There must also always be a request header with the name "SCGI" and a value of "1". Standard CGI environment variables should be provided in SCGI headers for compatibility when converting older CGI programs to SCGI. The body (if any) provided in the request follows the headers; its length is specified by the "CONTENT LENGTH" request header. While the SCGI protocol insulates the service programmer from some HTTP considerations, various details (such as interpreting the octets of the message body as per the Transfer Encoding header, the CONTENT LENGTH being the number of octets after the body has been encoded for transmission, etc.) still require knowledge of the HTTP protocol specification.