อินเทอร์เฟซ C ++ อย่างใดอย่างหนึ่งกับเว็บ (ที่ Google เป็นต้น)


12

Google เป็นที่รู้จักกันดีในเรื่องของ C ++ ที่พวกเขาเขียนขึ้นมาหลายปี ถูกต้องฉันถ้าฉันผิด แต่ส่วนใหญ่ของเครื่องมือค้นหาหลักของ Google เขียนใน C ++ ใช่มั้ย เราใช้โปรแกรมที่เขียนใน C ++ และเชื่อมต่อกับเว็บไซต์ได้อย่างไร?

หมายเหตุ: ฉันไม่ได้มองหาว่า Google ทำสิ่งนี้โดยเฉพาะอย่างไรโดยทั่วไปอาจทำได้


Google ได้สร้างแอพพลิเคชั่นส่วนใหญ่ในไพ ธ อนและตอนนี้ Java ก็เห็นการใช้งานมากเช่นกัน Google จะไม่ จำกัด การใช้ภาษา สำหรับการเชื่อมต่อเว็บจะใช้ซ็อกเก็ต ไม่มี C ++ แต่เป็น C apis C ++ ไม่มีของตัวเอง !!
user1708086

คำตอบ:


16

ซอฟต์แวร์เว็บใด ๆ จะส่งและรับข้อความผ่านซ็อกเก็ตเท่านั้น คุณสามารถใช้ภาษาใดก็ได้เพื่อทำสิ่งนี้ไม่ใช่เฉพาะภาษา

อย่างไรก็ตามคุณไม่ควรรวมนวัตกรรมใหม่สำหรับงานประเภทนี้ดังนั้นภาษาส่วนใหญ่ที่ใช้ในการทำเว็บแอพพลิเคชั่นจะมีชุดเฟรมเวิร์กที่ใช้ในการสื่อสารขั้นพื้นฐานสำหรับคุณเพื่อให้คุณสามารถมุ่งเน้นเฉพาะโครงการของคุณ Ruby มี ROR, Python มี Django และอื่น ๆ , Java เป็น ... ฯลฯ

ประวัติศาสตร์ C ++ ไม่มีกรอบคล้ายกันจนกระทั่งเมื่อเร็ว ๆ นี้:

  • ที่ทันสมัย-C ++ วิธีการทำก็คือการใช้สิ่งที่ต้องการCPPCMS ;
  • นอกจากนี้ยังมีความพยายามในการตั้งค่าไลบรารีมาตรฐานสำหรับผู้พัฒนาเว็บ ใน C ++ หนึ่งในนั้นคือcpp-netlib ;
  • เมื่อเร็ว ๆ นี้มีการเปิดตัวห้องสมุด REST API ข้ามแพลตฟอร์มสำหรับ C ++ 11 จาก Microsoft ที่เรียกว่าCasablancaซึ่งช่วยด้วยเช่นกัน

ตอนนี้ "ปริมาณ C ++ ที่ไร้สาระ" ที่ Google สร้างขึ้นนั้นเป็นสิ่งจำเป็นเพราะคุณจำเป็นต้องมีโมดูลประสิทธิภาพสูงเพื่อแก้ปัญหาที่ Google แก้ไข ขอให้โชคดีที่พยายามทำเช่นเดียวกันโดยไม่ต้องมีโมดูลใด ๆ ที่เขียนด้วยภาษาที่เน้นไปที่ประสิทธิภาพ ฉันแนะนำให้อ่านวิกิ CPPCMS เกี่ยวกับเรื่องนี้เพื่อทำความเข้าใจให้ดีขึ้น สำหรับข้อเท็จจริงในอดีต Amazon, Google, Facebook (ดูฮิปฮอปและสัมภาษณ์ Alexandrescu ล่าสุด) และบริการเว็บขนาดใหญ่อื่น ๆ มีแกนใน C ++ ด้วยเหตุผลเชิงคำนวณที่ชัดเจนซึ่งสำคัญกว่าเวลาที่เสียไปในการผลิตโปรแกรมเมอร์

CPPCMS และ cpp-netlib เป็นโอเพ่นซอร์สคุณสามารถศึกษาได้หากคุณต้องการทราบวิธีการทำให้แอปพลิเคชันทำงานเป็นเว็บเซอร์วิสโดยใช้ C ++ ที่กล่าวว่าแอปพลิเคชันใด ๆ ที่สามารถฟังพอร์ตและส่งข้อมูลไปยังพอร์ตสามารถทำสิ่งนี้ได้นั่นคือทั้งหมดที่เกี่ยวกับโพรโทคอล (TCP / IP, HTTP และอื่น ๆ )ไม่ใช่รหัส


ยังไม่สามารถลงคะแนนเงียบ แต่ฉันยอมรับคำตอบของคุณ ฉันไม่ทราบว่ามี CPPCMS อยู่เหมือนกัน แต่เป็นการดีที่จะรู้ ขอบคุณ!
วิทยาศาสตร์คลั่งไคล้

1
ฉันเข้าใจว่ามันค่อนข้างใหม่เมื่อเทียบกับคนอื่น ๆ มีคำตอบที่ไม่ดีอื่น ๆ (ตามคำแนะนำของฉัน) แต่ฉันคิดว่าอันนี้เหมาะกับภาษาและปัญหามากกว่า
Klaim

1
C ++ มีเฟรมเวิร์กดังกล่าว - เว็บที่เคยทำงานด้วย cgi apps หรือ ISAPI dll ของ MS หรือ ATLServer ของ Microsoft ทุกวันนี้เรามี c ++ เว็บเฟรมเวิร์กมากมายและ Microsoft กำลังทำงานบน Casablanca ซึ่งให้ c ++ เป็นบริการคลาวด์
gbjbaanb

ควรกล่าวถึงว่าเว็บแอปพลิเคชั่นส่วนใหญ่อาศัยอยู่หลังเซิร์ฟเวอร์หน้าและพูดคุยกับมันทั้ง CGI ซึ่งส่งผ่านข้อมูลในสภาพแวดล้อม stdin และ stdout หรือ FCGI ซึ่งใช้ซ็อกเก็ตและโปรโตคอลค่อนข้างง่ายกว่า HTTP
Jan Hudec

3

เหมือนกับภาษาอื่น ๆ ....

เปิดซ็อกเก็ต TCP ส่งและรับข้อความ http แยกวิเคราะห์และทำสิ่งต่าง ๆ ตามเนื้อหา

ดู Qt สำหรับตัวอย่างใน c ++ framework ที่รองรับการทำงานของ http พื้นฐานบางอย่าง

นอกจากนี้ยังมีเฟรมเวิร์กเว็บเฉพาะสำหรับ C ++ ไม่มากหรือใช้กันอย่างแพร่หลาย AFAIK อาจเป็นเพราะถ้าคุณทำเว็บด้วย C ++ คุณกำลังทำสิ่งที่พิเศษมากอยู่แล้วและต้องการควบคุมทุกอย่างอย่างเต็มที่


ฉันน่าจะสามารถคิดออกเองได้ การเขียนโปรแกรมผ่านเว็บเพียงอย่างเดียวที่ฉันทำผ่าน Django ดังนั้นมันจึงหมดไป
วิทยาศาสตร์คลั่งไคล้

ฉันคิดว่า Django ดี แต่ถ้าคุณขุดลงไปคุณจะเห็นว่าส่วนแกนกลางนั้นไม่ยุ่งยากมาก ตอนนี้เขียนเทียบเท่า Django ใน C ++ มีความท้าทายที่สนุก ;)
Macke

@Macke ฉันคิดว่า CPPCMS เป็นความท้าทายที่สนุก แต่ก็ไม่แน่ใจ การขาดระบบเครือข่ายมาตรฐานใน C ++ ไม่ได้ช่วยอะไรมากมาย แต่มีวิธีแก้ปัญหามากมายสำหรับการใช้งาน ปัญหาหลักของ C ++ ฉันเดาว่ามันยากกว่าที่จะทำการอัพเดทโดยไม่ต้องเริ่มต้นปฏิบัติการใหม่และมันก็นานที่จะคอมไพล์ในบางครั้ง CPPCMS ช่วยด้วยแม้ว่า
Klaim

Btw สำหรับไลบรารี c ++ เครือข่าย async ที่ทันสมัยและดีฉันแนะนำไลบรารี ASIO ซึ่งเป็นส่วนหนึ่งของแพ็คเกจ Boost ที่ยอดเยี่ยม ฉันได้เขียนแอพไคลเอ็นต์ / เซิร์ฟเวอร์ TCP / UDP ธรรมดา ๆ ไว้ในนั้นแล้วมันค่อนข้างสวยงาม
Macke

2

จากมุมมองของลูกค้าถ้าคุณมีโปรแกรม C / C ++ และคุณต้องการใช้มันเพื่อพูดคุยกับอินเทอร์เน็ตคุณจะต้องใช้ libcurl มันเป็นห้องสมุดมาตรฐาน (และครอบคลุม) ที่ใช้เชื่อมต่อกับ http URL เพื่อส่งและรับข้อมูล มีห้องสมุดอื่นอีกหลายแห่ง - Microsoft มีอยู่ไม่กี่แห่งมีห้องสมุดโอเพ่นซอร์สหลายแห่ง

ตอนนี้มีไว้สำหรับ URL เก่าธรรมดาผ่าน http (หรือ SMTP หรือ FTP หรือ Gopher หรือ .. libcurl นั้นครอบคลุมมาก!) หากคุณกำลังพยายามใช้บริการเว็บผ่าน SOAP คุณสามารถใช้หนึ่งในห้องสมุดอื่น ๆ เช่น gsoap

สำหรับฝั่งเซิร์ฟเวอร์คุณต้องใช้เว็บเซิร์ฟเวอร์หรือเฟรมเวิร์กที่แสดงรหัส C ++ ของคุณ มีอีกหลายวิธีในการทำเช่นนี้ - โปรแกรมเว็บแรกสุดคือ C / C ++ ทั้งหมดซึ่งเขียนเป็นโปรแกรม CGI ซึ่งเว็บเซิร์ฟเวอร์เรียกแอปของคุณโดยใช้รูปแบบของ IPC ตั้งแต่นั้นมาเรามี Wt, Qt, cppCMS, ffead และทุกอย่างจาก Microsoft (ISAPI, ATLServer และ Casablanca ตอนนี้)

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


-4

สถาปัตยกรรมไคลเอนต์ - เซิร์ฟเวอร์ช่วยให้สิ่งนี้เกิดขึ้น

อาจใช้ C ++ เพื่อพัฒนาเซิร์ฟเวอร์

ในด้านไคลเอนต์เทคโนโลยีเว็บอาจถูกใช้เพื่อสื่อสารกับเซิร์ฟเวอร์

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.