กลับไปหน้าบทความ

อ่าน 3 นาที

อินเทอร์เฟซเกตเวย์ทั่วไปแบบง่าย

Simple Common Gateway Interface ( SCGI ) เป็นโปรโตคอลสำหรับแอปพลิเคชันในการเชื่อมต่อกับ เซิร์ฟเวอร์ HTTP ซึ่งเป็นทางเลือกแทน โปรโตคอล CGI มันคล้ายกับ FastCGI...

อินเทอร์เฟซเกตเวย์ทั่วไปแบบง่าย

Simple Common Gateway Interface ( SCGI ) เป็นโปรโตคอลสำหรับแอปพลิเคชันในการเชื่อมต่อกับ เซิร์ฟเวอร์ HTTPซึ่งเป็นทางเลือกแทน โปรโตคอล CGIมันคล้ายกับFastCGIแต่ได้รับการออกแบบให้ง่ายต่อการประมวลผลมากกว่า และแตกต่างจาก CGI ตรงที่ SCGI อนุญาตให้กระบวนการบริการที่ทำงานต่อเนื่องสามารถให้บริการคำขอได้ต่อไป จึงหลีกเลี่ยงความล่าช้าในการตอบสนองต่อคำขอเนื่องจากค่าใช้จ่ายในการตั้งค่า (เช่น การเชื่อมต่อกับฐานข้อมูล)

SCGI เป็นโปรโตคอลที่กำหนดวิธีการสื่อสารระหว่างเว็บเซิร์ฟเวอร์และแอปพลิเคชันเซิร์ฟเวอร์ ซึ่งแตกต่างจาก CGI ที่เป็นอินเทอร์เฟซแอปพลิเคชัน (เกตเวย์) รุ่นก่อนหน้า ออกแบบมาเพื่อให้นักเขียนโปรแกรมแอปพลิเคชันหลีกเลี่ยงความซับซ้อนของซ็อกเก็ตและกระบวนการบริการที่ใช้เวลานาน เมื่อความสามารถในการขยายขนาดต่ำและค่าใช้จ่ายสูงเป็นสิ่งที่ยอมรับได้

โปรโตคอล SCGI ใช้ประโยชน์จากข้อเท็จจริงที่ว่าเว็บเซิร์ฟเวอร์ได้ทำการวิเคราะห์และตรวจสอบความถูกต้องของคำขอ HTTP แล้ว และสื่อสารคำขอไปยังเซิร์ฟเวอร์ SCGI อย่างเป็นทางการ ในขณะเดียวกันก็ช่วยให้นักเขียนโปรแกรมแอปพลิเคชันหลีกเลี่ยงความกำกวมในการวิเคราะห์และกรณีพิเศษของโปรโตคอล ซึ่งช่วยหลีกเลี่ยงกฎการวิเคราะห์และการรวมส่วนหัวที่ซับซ้อนจากRFC  2616ช่วยลดความซับซ้อนในกระบวนการของเซิร์ฟเวอร์ SCGI ได้อย่างมาก

ประวัติศาสตร์

Neil Schemenauer ได้เผยแพร่ข้อกำหนดโปรโตคอล SCGI ฉบับดั้งเดิมเมื่อเดือนตุลาคม พ.ศ. 2544 [ 1 ]เขาได้พัฒนาการใช้งาน SCGI ครั้งแรกและเผยแพร่ครั้งแรกในเดือนเมษายน พ.ศ. 2545 [ 2 ]

ข้อกำหนด

ไคลเอนต์เชื่อมต่อกับเซิร์ฟเวอร์ SCGI ผ่านโปรโตคอลสตรีมที่เชื่อถือได้ซึ่งอนุญาตให้ส่งข้อมูลไบต์ 8 บิต ไคลเอนต์เริ่มต้นด้วยการส่งคำขอ เมื่อเซิร์ฟเวอร์ SCGI เห็นว่าคำขอสิ้นสุดลงแล้ว ก็จะส่งการตอบกลับและปิดการเชื่อมต่อ รูปแบบของการตอบสนองไม่ได้ระบุไว้โดยเฉพาะในโปรโตคอลนี้ แม้ว่าโดยทั่วไปจะใช้การตอบสนอง HTTP ที่เทียบเท่ากับ CGI ก็ตาม[หมายเหตุ 1]

รูปแบบคำขอ

คำขอ SCGI คือการรวมกันของ ส่วนหัวที่เข้ารหัสแบบ netstringและส่วนเนื้อหา ส่วนการตอบสนอง SCGI คือการตอบสนอง HTTP ปกติ

ส่วนหัวแต่ละส่วนประกอบด้วยคู่ชื่อ-ค่าโดยทั้งชื่อและค่าเป็นสตริงที่ลงท้ายด้วยค่าว่าง ( สตริงในภาษา C ) ค่าอาจเป็นสตริงว่างซึ่งในกรณีนี้ค่าว่างจะยังคงอยู่ ทั้งชื่อและค่าต้องไม่มีไบต์ว่าง แทรกอยู่ ภายใน ข้อพิจารณาเหล่านี้เป็นมาตรฐานสำหรับสตริงในภาษา C แต่ก็มักสร้างความสับสนให้กับโปรแกรมเมอร์ที่คุ้นเคยกับมาตรฐานการจัดการสตริงอื่นๆ

ส่วนหัวทั้งหมดที่ให้มาจะถูกรวมเข้าด้วยกันเพื่อสร้างลำดับไบต์เดียว จากนั้นจึง เข้ารหัสด้วย netstringส่วนเนื้อหาดิบ (ถ้ามี) จะถูกเพิ่มเข้าไปในภายหลัง

ไม่อนุญาตให้มีชื่อซ้ำกันในส่วนหัวของคำขอ การรวมส่วนหัวที่สอดคล้องกับ RFC 2616 [หมายเหตุ 2]จะต้องเกิดขึ้นแล้ว ส่วนหัวคำขอแรกต้องมีชื่อว่า "CONTENT_LENGTH" และมีค่าเป็นความยาวของเนื้อหาในรูปแบบทศนิยม ส่วนหัวคำขอ "CONTENT_LENGTH" ต้องมีอยู่เสมอ แม้ว่าค่าจะเป็น "0" ก็ตาม นอกจากนี้ ต้องมีส่วนหัวคำขอที่มีชื่อว่า "SCGI" และมีค่าเป็น "1" เสมอ ควรระบุ ตัวแปรสภาพแวดล้อม CGI มาตรฐาน ในส่วนหัว SCGI เพื่อความเข้ากันได้เมื่อแปลงโปรแกรม CGI เก่าเป็น SCGI เนื้อหา (ถ้ามี) ที่ให้ไว้ในคำขอจะอยู่ถัดจากส่วนหัว ความยาวของเนื้อหาจะระบุโดยส่วนหัวคำขอ "CONTENT_LENGTH"

แม้ว่าโปรโตคอล SCGI จะช่วยปกป้องโปรแกรมเมอร์ของบริการจากข้อควรพิจารณาบางประการของ HTTP แต่รายละเอียดต่างๆ (เช่น การตีความไบต์ของเนื้อหาข้อความตามส่วนหัว Transfer-Encoding, CONTENT_LENGTH ซึ่งเป็นจำนวนไบต์หลังจากที่เนื้อหาได้รับการเข้ารหัสสำหรับการส่ง เป็นต้น) ยังคงต้องการความรู้เกี่ยวกับข้อกำหนดของโปรโตคอล HTTP

ตัวอย่าง

เว็บเซิร์ฟเวอร์ (ไคลเอ็นต์ SCGI) เปิดการเชื่อมต่อและส่งสตริงที่ต่อกันต่อไปนี้ไปยังกระบวนการบริการ (เซิร์ฟเวอร์ SCGI):

 "70:" "ความยาวเนื้อหา" <00> "27" <00> "SCGI" <00> "1" <00> "REQUEST_METHOD" <00> "POST" <00> "REQUEST_URI" <00> "/deepthought" <00> "," "คำตอบของชีวิตคืออะไร?" 

เซิร์ฟเวอร์ SCGI จะส่งการตอบกลับต่อไปนี้ไปยังเว็บเซิร์ฟเวอร์:

 "สถานะ: 200 ตกลง" <0d 0a> "Content-Type: text/plain" <0d 0a> "" <0d 0a> "42" 

เซิร์ฟเวอร์ SCGI ปิดการเชื่อมต่อ

เว็บเซิร์ฟเวอร์ที่ใช้ SCGI

(รายชื่อนี้ยังไม่ครบถ้วน)

การเชื่อมต่อภาษาสำหรับ API ของ SCGI

SCGI สามารถนำไปใช้งานได้ในภาษาโปรแกรมใดก็ได้ที่รองรับซ็อกเก็ตเครือข่ายและสตริงเครือข่ายต่อไปนี้เป็นรายชื่อภาษาบางส่วนที่มีการเชื่อมต่อกับ SCGI ที่รู้จัก:

ดูเพิ่มเติม

โปรโตคอลแอปพลิเคชัน/เกตเวย์:

  • Common Gateway Interface (CGI) - เริ่มกระบวนการย่อยหนึ่งกระบวนการต่อคำขอแต่ละครั้ง
  • FastCGI - พยายามเพิ่มความสามารถในการขยายขนาดโดยการสนับสนุนกระบวนการที่คล้ายกับ CGI ที่ใช้เวลานาน
  • โปรโตคอล Apache JServ - โปรโตคอลแบบไบนารีที่ออกแบบมาเพื่อทำหน้าที่เป็นตัวกลางในการส่งผ่านคำขอระหว่างเว็บเซิร์ฟเวอร์และแอปพลิเคชันเซิร์ฟเวอร์

โฮสต์แอปพลิเคชัน (เฉพาะภาษา):

  • Rack - อินเทอร์เฟซเว็บเซิร์ฟเวอร์Ruby
  • PSGI - Perl Web Server Gateway Interface
  • WSGI - Python Web Server Gateway Interface
  • JSGIJavaScript web server gateway interface

หมายเหตุ

1. ^เอกสารข้อกำหนดดังกล่าวถูกเผยแพร่สู่สาธารณะโดย Neil Schemenauer เมื่อวันที่ 12 มกราคม 2549
2. ^สำหรับการรวมส่วนหัว HTTP โปรดดูRFC2616 ส่วนที่ 4.2
  • เว็บไซต์อย่างเป็นทางการแก้ไขข้อมูลนี้ได้ที่วิกิดาต้า
  • ข้อกำหนดโปรโตคอล SCGI
ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=Simple_Common_Gateway_Interface&oldid=1333192449 "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ อินเทอร์เฟซเกตเวย์ทั่วไปแบบง่าย

Simple Common Gateway Interface ( SCGI ) เป็นโปรโตคอลสำหรับแอปพลิเคชันในการเชื่อมต่อกับ เซิร์ฟเวอร์ HTTP ซึ่งเป็นทางเลือกแทน โปรโตคอล CGI มันคล้ายกับ FastCGI...

ประวัติศาสตร์

Neil Schemenauer ได้เผยแพร่ข้อกำหนดโปรโตคอล SCGI ฉบับดั้งเดิมเมื่อเดือนตุลาคม พ.ศ. 2544 [ 1 ] เขาได้พัฒนาการใช้งาน SCGI ครั้งแรกและเผยแพร่ครั้งแรกในเดือนเมษายน พ.ศ. 2545 [ 2 ]

ข้อกำหนด

ไคลเอนต์เชื่อมต่อกับเซิร์ฟเวอร์ SCGI ผ่านโปรโตคอลสตรีมที่เชื่อถือได้ซึ่งอนุญาตให้ส่งข้อมูลไบต์ 8 บิต ไคลเอนต์เริ่มต้นด้วยการส่งคำขอ เมื่อเซิร์ฟเวอร์ SCGI เห็นว่าคำขอสิ้นสุดลงแล้ว ก็จะส่งการตอบกลับและปิดการเชื่อมต่อ...

รูปแบบคำขอ

คำขอ SCGI คือ การรวมกัน ของ ส่วนหัวที่เข้ารหัสแบบ netstring และส่วนเนื้อหา ส่วนการตอบสนอง SCGI คือการตอบสนอง HTTP ปกติ