VbFcgi
เขียนโค้ดแบ็กเอนด์เว็บแอปพลิเคชันของคุณใน VB6! VbFcgi ทำให้การใช้ประโยชน์จากความรู้ด้านการเขียนโปรแกรมในปัจจุบันของคุณเป็นเรื่องง่าย และยังสามารถรับแอปไคลเอ็นต์/เซิร์ฟเวอร์ VB6 ที่มีอยู่บนเว็บได้อีกด้วย
การแนะนำ
VbFcgi เป็น FCGI Host/Server Framework สำหรับ Visual Basic 6 (VB6) ActiveX/COM DLL Web Applications ได้รับการพัฒนาโดยเทียบกับ Nginx แต่ควรทำงานร่วมกับเว็บเซิร์ฟเวอร์ใดๆ ที่ใช้ข้อมูลจำเพาะ FCGI
แผนภาพกระบวนการ
รวมไบนารี
กรอบงาน VbFcgi มีองค์ประกอบหลัก 3 ส่วน:
- VbFcgiLib.dll - นี่คือไลบรารีเฟรมเวิร์กหลักที่รวมโค้ดทั้งหมดสำหรับการฟังและตอบสนองต่อคำขอ FCGI จากเว็บเซิร์ฟเวอร์ รวมถึงการแยกวิเคราะห์บันทึกสำหรับพารามิเตอร์ FCGI, คุกกี้ HTTP ฯลฯ ... ควรรวมไฟล์นี้ไว้ด้วย กับการแจกจ่ายแอปพลิเคชัน FCGI ของคุณทุกครั้ง
- VbFcgiHost.exe - นี่คือไฟล์ปฏิบัติการหลักที่จะวางไข่ผู้ฟัง FCGI ในฐานะนายหน้าระหว่างเว็บเซิร์ฟเวอร์และแอปพลิเคชัน FCGI ของคุณ ประกอบด้วยการรองรับการรัน Listener หลายตัวบนพอร์ตตามลำดับสำหรับการทำโหลดบาลานซ์ และยังตรวจสอบ Listener ที่ถูกยกเลิกซึ่งจำเป็นต้องเกิดใหม่อีกด้วย สุดท้ายนี้ ยังทำหน้าที่เป็นผู้ประสานงานการปิดระบบสำหรับอินสแตนซ์ Listener ของ FCGI ที่ทำงานอยู่ทั้งหมดอีกด้วย ไฟล์นี้ควรรวมอยู่ในการแจกจ่ายแอปพลิเคชัน FCGI ของคุณทุกครั้ง
- VbFcgiApp.dll - นี่คือรหัสแอปพลิเคชัน FCGI สาธิต เวอร์ชันที่รวมอยู่ที่นี่เป็นการพิสูจน์แนวคิดขั้นพื้นฐานซึ่งจะส่งหน้า HTML อัปสตรีมพร้อมตารางพารามิเตอร์ FCGI ที่ได้รับ และยังสาธิตการใช้งานพื้นฐานของคุกกี้และพารามิเตอร์การสืบค้น HTTP ไฟล์นี้ ไม่ ควรรวมไว้เมื่อแจกจ่าย แอปพลิเคชัน FCGI ของคุณเอง! คุณควรสร้างเวอร์ชันของคุณเองตามที่อธิบายไว้ในส่วน การสร้างแอปพลิเคชัน FCGI ของคุณเอง ด้านล่าง
แม้ว่า DLL ข้างต้นจะเป็นไลบรารี COM ActiveX แต่คุณไม่จำเป็นต้องลงทะเบียนกับ regsvr32 เมื่อปรับใช้กับผู้ใช้ เนื่องจากโค้ดนี้ใช้ไลบรารี DirectCOM แบบไม่ลงทะเบียนของ Olaf Schmidt อย่างไรก็ตาม คุณควรลงทะเบียน DLL ข้างต้นบนเครื่องพัฒนาของคุณ
รวมไปถึงโครงสร้างไบนารีของ Nginx พร้อมการกำหนดค่าพื้นฐานเพื่อรองรับผู้ฟังเซิร์ฟเวอร์โฮสต์ FCGI เดียวบน localhost:9100 รวมไว้เพื่อความสะดวกและเพื่อสาธิตการกำหนดค่าขั้นต่ำ คุณควรมี Nginx (หรือเว็บเซิร์ฟเวอร์อื่น) ที่กำหนดค่าไว้อย่างเหมาะสมซึ่งทำงานในกรณีส่วนใหญ่
สุดท้ายนี้ ฉันยังได้รวมไลบรารี vbRichClient5 ที่ยอดเยี่ยมของ Olaf Schmidt (http://www.vbrichclient.com/) อีกครั้งเพื่อความสะดวก คุณสามารถรับเวอร์ชันล่าสุดได้จากเว็บไซต์ vbRichClient5
การใช้งานสาธิต
- หากคุณยังไม่มีเว็บเซิร์ฟเวอร์ทำงานอยู่ ให้เริ่ม nginx จากบรรทัดคำสั่งโดยไปที่โฟลเดอร์ .VbFcgibinnginx จากนั้นรันคำสั่ง nginx.exe หากคุณมีเว็บเซิร์ฟเวอร์อยู่แล้ว ตรวจสอบให้แน่ใจว่าได้รับการกำหนดค่าให้ส่งคำขอ *.fcgi จากเบราว์เซอร์อัปสตรีมไปยัง 127.0.0.1 พอร์ต 9100
- จากบรรทัดคำสั่ง ให้เริ่ม VbFcgiHost.exe ด้วยคำสั่งต่อไปนี้: vbfcgihost.exe /host 127.0.0.1 /port 9100 /spawn 1
- เปิดเบราว์เซอร์ของคุณและไปที่ http://127.0.0.1/vbfcgiapp.fcgi - คุณควรเห็นการตอบสนอง HTML จากแอปพลิเคชัน FCGI สาธิต
การสร้างแอปพลิเคชัน FCGI ของคุณเอง
คุณสามารถใช้ซอร์สโค้ด VbFcgiApp ที่ให้มาเป็นจุดเริ่มต้นได้ งานทั้งหมดเสร็จสิ้นในเมธอด IFcgiApp_ProcessRequest ดังนั้น ให้ตรวจสอบอย่างละเอียด
ในการเขียนแอปพลิเคชัน FCGI ของคุณเองตั้งแต่เริ่มต้น คุณต้อง:
- เริ่มโครงการ ActiveX DLL ใหม่ใน VB6
- เปลี่ยนชื่อโครงการจาก "Project1" เป็น "MyFcgiApp" (หรือชื่ออะไรก็ได้ที่คุณต้องการให้มี)
- เปลี่ยนชื่อ "Class1" เป็น "CFcgiApp"
- เพิ่มการอ้างอิงถึง VbFcgiLib จากเมนูโปรเจ็กต์ > การอ้างอิง
- ในส่วนทั่วไปของคลาส "CFcgiApp" ให้พิมพ์; ใช้งาน VbFcgiLib.IFcgiApp
- เลือก "IFcgiApp" จากรายการแบบเลื่อนลงในมุมมองโค้ด มันจะสร้างเมธอด IFcgiApp_ProcessRequest ให้กับคุณ
- โค้ดแอปของคุณในเมธอด IFcgiApp_ProcessRequest (ส่วนที่เหลือของ f*cking owl)
- สร้างแอป DLL ของคุณ
- ทำสำเนาของ DLL ที่สร้างขึ้นและเปลี่ยนนามสกุลเป็น .fcgi
- ย้ายไฟล์ .fcgi ไปยังโฟลเดอร์เดียวกันกับไฟล์ VbFcgiHost.exe และ VbFcgiLib.dll
หมายเหตุ: คุณ ไม่ จำเป็นต้องลงทะเบียน DLL แอปพลิเคชัน FCGI ของคุณ หรือ VbFcgiLib.dll เมื่อแจกจ่าย เนื่องจากเฟรมเวิร์กนี้ใช้การสร้างอินสแตนซ์โดยไม่ต้องลงทะเบียน
เมื่อคุณเรียกใช้ VbFcgiHost.exe ในภายหลัง มันจะใช้ .fcgi ของคุณเป็น "ปลั๊กอิน" (ประเภทต่างๆ) เพื่อตอบสนองต่อคำขอ FCGI ที่สอดคล้องกัน ตัวอย่างเช่น การพิมพ์ http://localhost/myapp.fcgi จะทำให้ VbFcgiHost สร้างอินสแตนซ์ของคลาส CFcgiApp จาก myapp.fcgi DLL ที่จัดเก็บไว้ในโฟลเดอร์เดียวกัน และจากนั้นจะเรียก IFcgiApp_ProcessRequest ในคลาสนั้น
สนุก!