มีข้อเสียเปรียบในการสร้างเว็บแอปด้วย C ++ และ MySQL หรือไม่?


10

ฉันได้สืบทอดโปรเจ็กต์ที่น่าสนใจซึ่งมีโอกาสที่ดีที่จะนำชิ้นส่วนของซอฟต์แวร์ที่มีอยู่และเปลี่ยนเป็นแอปพลิเคชันเว็บ SaaS เมื่อโครงการได้รับการสืบทอดรหัสฐาน / กรอบถูกกำหนดแล้วเป็น C ++ และ MySQL ตัวแอพเองนั้นได้รับการคอมไพล์และรันเป็น EXE บน Windows Server UI นั้นใช้เว็บและแอปทำงานเป็นเซิร์ฟเวอร์ชนิดหนึ่ง จากสิ่งที่ฉันรู้เกี่ยวกับเว็บแอปที่ทันสมัยนี่อาจเป็นตัวเลือกที่ผิดปกติ ทุกวันนี้คนส่วนใหญ่เลือกใช้เฟรมเวิร์ก PHP หรือ Ruby on Rails แน่นอนว่านั่นคือความประทับใจที่ฉันได้รับจากการอ่านบล็อกในหัวเรื่อง ดังนั้นฉันสนใจเป็นอย่างยิ่งที่จะทราบว่า C ++ EXE ที่ได้รับการสนับสนุนโดย MySQL เป็นรากฐานที่มั่นคงสำหรับแอปพลิเคชันเว็บหรือไม่หรือว่าเราควรจะสร้างในอีกทางหนึ่งหรือไม่?


สิ่งที่คุณอธิบายฟังดูคล้ายกับกระบวนการเซิร์ฟเวอร์ไม่ใช่ webapp และสำหรับกระบวนการเซิร์ฟเวอร์ PHP หรือ RoR นั้นเป็นตัวเลือกที่ผิดปกติอย่างแน่นอน คุณมีปัญหาอะไรจริง ๆ ?
Benjamin Bannier

exe อาจใช้ Hostable Web Core ใหม่หรือไม่( Awesomeideas.net/page/IIS7-Hostable-WebCore.aspx ) หรือใช้จริง ๆ เป็นเซิร์ฟเวอร์ HTTP ของตัวเองหรือไม่ หากอดีตแล้วบางทีพวกเขาได้จริงๆพยายามที่จะทำให้แอปอย่างรวดเร็วโดยใช้ C ++ และตนเองโฮสติ้งสำหรับการพกพาไปยังเครื่องไคลเอนต์ ..
จิมมี่ฮอฟฟา

แน่นอนว่าใครก็ตามที่มีสติจะใช้อะไรเช่น Net :: HTTPServer ของ POCO แทนที่จะเขียนเซิร์ฟเวอร์ HTTP ตั้งแต่เริ่มต้น แต่มันไม่เหมือน RoR หรือเฟรมเวิร์กของ Python อย่าแพ็คเว็บเซิร์ฟเวอร์บางตัว
Benjamin Bannier

4
ไม่ใช่เรื่องแปลกที่จะมี c ++ เป็นแบ็กเอนด์ของเว็บแอปพลิเคชัน การค้นหาของ Google เขียนด้วย c ++ แอพของ yahoo จำนวนมากคือ c ++ ทุก ๆ แอปพลิเคชันเว็บ AAA ที่ใช้โดยผู้คนนับล้านเขียนด้วย c ++
ลอร์ด Tydus

ใช่แอพได้รับการออกแบบให้เป็นเว็บเซิร์ฟเวอร์ที่กำหนดเอง ดังนั้นด้านแอปพลิเคชันเว็บนั้นมาจาก HTML admin UI และชุดคุณสมบัติ
jnthnclrk

คำตอบ:


20

มันก็โอเคที่จะสร้างเว็บแอปพลิเคชันโดยใช้ C ++ หากผลประโยชน์มีค่ามากกว่าที่เห็นได้ชัด Google, Amazon, Facebook ทั้งหมดสร้างด้วย C ++ เพื่อประสิทธิภาพในด้านความเร็วหน่วยความจำและต้นทุนด้านพลังงาน

อย่างไรก็ตามตามที่คุณเดามีข้อเสียคือการใช้ C ++ สำหรับสิ่งนี้ ขึ้นอยู่กับเครื่องมือของคุณ

ก่อนอื่นให้ฉันอ้างอิงเว็บไซต์cppcms เกี่ยวกับเรื่องนี้:

เมื่อใดควรใช้ CppCMS

ภาษา C ++ นั้นยังห่างไกลจากความนิยมในการพัฒนาเว็บด้วยเหตุผลหลายประการ: ขาดเครื่องมือที่เหมาะสมทักษะของนักพัฒนาและอีกมากมาย

อย่างไรก็ตามมีบางพื้นที่ที่การเขียนโปรแกรมเว็บ C ++ ด้วย CppCMS มีประโยชน์และมีประสิทธิภาพมากและบางครั้งก็เสียเวลา

CppCMS ควรหรือควรใช้เมื่อใด

1. เว็บไซต์และแอปพลิเคชั่นโหลดสูงที่มีการเข้าชมนับแสนครั้งต่อวินาทีที่ต้องการประสิทธิภาพประสิทธิภาพและความสามารถในการปรับขยาย

2. แอปพลิเคชันที่ต้องใช้เทคโนโลยี Comet / Server Push ที่ปรับขนาดได้ --- CppCMS สามารถจัดการการเชื่อมต่อ HTTP พร้อมกันหลายร้อยและพันพร้อมกันอย่างมีประสิทธิภาพด้วยการใช้ทรัพยากรน้อยที่สุด

3. การเชื่อมต่อเว็บอินเทอร์เฟซเข้ากับแอพพลิเคชั่น / บริการ C ++ เดิมที่มีค่าใช้จ่ายเพิ่ม

4. อุปกรณ์ที่อยู่ภายใต้การฝังตัว - CppCMS ช่วยให้สามารถสร้างแอปพลิเคชั่นที่หลากหลายด้วยต้นทุนฮาร์ดแวร์ที่ค่อนข้างต่ำซึ่งจะทำงานได้อย่างรวดเร็วพอสมควร

เมื่อไม่ใช้

หากคุณสร้างเว็บแอปพลิเคชั่นขนาดเล็กที่ไม่ต้องการโหลดสูงและต้องใช้ระยะเวลาการตลาดสั้นมาก - เครื่องมือที่น่าจะเป็น Django หรือ RoR น่าจะเหมาะสมกว่าสำหรับงานดังกล่าว

ข้อเสียเฉพาะสำหรับ C ++ คือ:

  • เวลาในการรวบรวมอาจช้ามากอย่างมากเมื่อเทียบกับภาษาอื่น สิ่งนี้อาจส่งผลกระทบต่อการทำซ้ำปล่อยช่วงเวลา แต่ยังมีคุณธรรมของนักพัฒนา ตรวจสอบให้แน่ใจว่าคุ้มค่า
  • ส่วนใหญ่คุณต้องรวบรวมการเปลี่ยนแปลง สามารถหลีกเลี่ยงได้ แต่เป็นเรื่องปกติ
  • การเขียน C ++ ที่ทันสมัยทำให้เป็นเรื่องง่าย (สำหรับการเรียนรู้อ่านเขียนแก้จุดบกพร่อง ฯลฯ ) แต่นักพัฒนา C ++ จำนวนมากไม่รู้ว่า Modern C ++ คืออะไร ดังนั้นหากคุณทำงานเป็นทีมคุณต้องมีความรู้เกี่ยวกับ Modern C ++ จากทั้งทีม ถ้าไม่คุณจะได้รับข้อบกพร่องที่ซับซ้อนมากได้อย่างง่ายดาย ที่กล่าวมามันเป็นปัญหาของคนมากกว่าปัญหาด้านภาษา เป็นเพียงประวัติ C ++ ที่ไม่ได้ช่วยให้เข้าใจง่าย การสอนที่ดีนั้นไม่ธรรมดาเหมือนในภาษาที่ทันสมัยกว่า (ในอดีต)
  • Unicode ยังคงได้รับการสนับสนุนไม่เพียงพอโดยภาษา C ++ หลักทำให้เป็นแหล่งที่มาของความเจ็บปวดที่ยิ่งใหญ่ เพียงใช้ UTF-8 ทุกหนทุกแห่งและห้องสมุดบางแห่ง (ดูที่การเพิ่มประสิทธิภาพ) เพื่อจัดการ
  • มาตรฐาน C ++ ไม่รู้ว่าไลบรารีคืออะไร ดังนั้นเราจึงใช้วิธีการทั่วไปในการจัดการกับคอมไพเลอร์ / ลิงเกอร์ / ระบบปฏิบัติการที่แตกต่างกัน นี่อาจเป็นปัญหาหากคุณเริ่มรับโค้ดข้ามแพลตฟอร์มที่ต้องการโหลด / ยกเลิกการโหลด "แบบทันที" บางโมดูล

อาจจะดูที่ CPPCMS? หรือบางทีถ้าคุณต้องการสร้างเว็บไซต์สไตล์ GUI

ตรวจสอบคำถามเหล่านี้ด้วย:


3
ความเข้าใจของฉันคือ Facebook ตั้งโปรแกรมใน PHP แต่พวกเขาก็สร้างคอมไพเลอร์ดั้งเดิมของตนเองสำหรับ PHP ใน C ++ สำหรับ Linux เหตุผลหลักที่ Facebook พัฒนาคอมไพเลอร์คือการลดค่าไฟฟ้าสำหรับเซิร์ฟเวอร์ปฏิบัติการ มันไม่ได้ความเร็วจริง ๆ (เร็วกว่า) แต่ความจริงแล้วมันต้องการการใช้งาน CPU น้อยลงต่อคำขอ มันเป็นโครงการโอเพ่นซอร์สที่สามารถพบได้ที่นี่ developers.facebook.com/blog/post/2010/02/02/…
ซ้ำ

1
ใช่เหตุผลแตกต่างกันนั่นคือเหตุผลที่ฉันพูดถึงพลังงานและเซิร์ฟเวอร์ค่าใช้จ่าย ที่ถูกกล่าวว่า Alexandrescu กล่าวเมื่อเร็ว ๆ นี้ในการสัมภาษณ์ฉันเชื่อว่ารหัส Facebook มากขึ้นและถูกเขียนโดยตรงใน C ++ แต่เขาไม่ได้พูดถึงเหตุผลถ้าหน่วยความจำของฉันถูกต้อง พวกเขายังมีไลบรารีโอเพนซอร์ซที่เต็มไปด้วยยูทิลิตี้ / อัลกอริธึมของ C ++: Folly facebook.com/notes/facebook-engineering/ …
Klaim

โปรดทราบว่าแม้ว่ารหัสจะถูกเขียนครั้งแรกใน PHP ก่อนจากนั้นก็แปลงเป็น C ++ แต่ข้อเสียประการที่สามที่ฉันชี้ยังคงเป็นจริง
Klaim

2
กรอบเว็บ C ++ อื่น: wt (witty) เหมาะสำหรับผู้ที่ต้องการสร้างแอปพลิเคชันเว็บที่ใช้งานได้เหมือนแอพบนเดสก์ท็อป สำหรับการย้ายเป็นทางเลือกที่ดี
K.Steff

ฉันคิดว่าเว็บไซต์เหล่านั้นทั้งหมดมีส่วนประกอบที่เขียนในหลายภาษา C ++ นั้นมักถูกใช้เป็นการเพิ่มประสิทธิภาพสำหรับส่วนของรหัสที่ต้องการการจัดการหน่วยความจำแบบละเอียด
jiggy

3

Wordpress ทำงานใน PHP พร้อมกับปลั๊กอินที่ติดตั้งอยู่ทำให้เซิร์ฟเวอร์ Winders ของฉันคุกเข่า ดังนั้นฉันไม่มีปัญหาเลยกับแนวคิดของการใช้เว็บแอปพลิเคชันใน C ++ ความเร็วเป็นส่วนสำคัญของการใช้งานเว็บ

เต็นท์ออกแบบกราฟิกเพื่อขับเคลื่อนโครงการเว็บส่วนใหญ่ PHP เป็นภาษาสคริปต์ที่คลุมเครือซึ่งทำงานภายใน HTML การอนุญาตให้ผู้เขียน PHP หนีเข้าและออกจาก HTML การทำงานกับ HTML นั้นมีประโยชน์มากมาย

ถึงกระนั้นคุณสามารถใช้เทมเพลต HTML จำนวนใดก็ได้ใน C ++

หนึ่งสามารถให้คุณมีรายการยาวของกรอบ Python และ PHP ที่ทำให้การพัฒนาอย่างรวดเร็ว แต่ถ้าคุณมีเวลามากแล้ว C ++ เป็นไปได้แน่นอน

สิ่งที่ฉันไม่เข้าใจคือการตัดสินใจที่จะทำ C ++ บน Windows ฮ่า ๆ


1
การถกเถียงเรื่องฟางมนุษย์แบบคลาสสิกมีทางเลือกที่รวดเร็วกว่าสำหรับ wordpress / php ที่ไม่ใช่ C ++ ฉันไม่ได้บอกว่า C ++ ไม่ใช่ตัวเลือกที่เกี่ยวข้องเพียงแค่ข้อโต้แย้งของคุณไม่ได้ถูกวางกรอบอย่างดี
Jimmy Hoffa

ฉันเห็นด้วยกับคุณ. ฉันไม่คิดว่าฉันกำลังพยายามทำให้เวิร์ดเพรสเป็นทางเลือก เป็นเพียงประสบการณ์ของฉันเมื่อเร็ว ๆ นี้ตามที่แสดงว่าเป็นการยากที่จะได้รับประสิทธิภาพที่ดีจากกรอบงานยอดนิยม
Reactgular

1
StackExchange ทำงานบนกรอบ ASP.NET MVC Node.Js มีประสิทธิภาพสูงที่มีน้ำหนักเบาและหากคุณต้องการอะไรที่น่าขันนักแสดงก็มีกรอบ Snap หรือ Yesod Haskell yesodweb.com/blog/2011/03/ … , Haskell, JavaScript, และ C # เป็นภาษาที่รวบรวมขยะระดับสูง
จิมมี่ฮอฟฟา

1
โปรดทราบว่าความเร็วในการเรียกใช้โค้ดบนเซิร์ฟเวอร์ในหลาย ๆ กรณีไม่ได้เป็นปัจจัย จำกัด ในแอปพลิเคชันบนเว็บ ส่วนใหญ่ของเวลาที่จะใช้เวลารออะไรบางอย่าง (ฐานข้อมูล) หรือแม้กระทั่งในส่วนหน้า (เรียก CSS, ภาพ, การทำสิ่ง JavaScript, HTML การแสดงผล)
โยฮันเน

1

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

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

ที่กล่าวว่าหากคุณมี codebase ส่วนใหญ่เขียนไปแล้ว C ++ อาจยังคงเป็นตัวเลือกที่เหมาะสม คุณจะต้องค้นหาห้องสมุดบางแห่งเพื่อให้ครอบคลุมสิ่งต่าง ๆ บนเว็บทุกประเภท (โดยเฉพาะอย่างยิ่งคุณต้องการรวมเว็บเซิร์ฟเวอร์ HTTP แบบสแตนด์อโลนเข้ากับโปรแกรมของคุณหรือขอพูด Apache ผ่านทาง FastCGI หรือโดยการรวบรวม โมดูลคุณจะต้องการไลบรารีการสร้างเทมเพลตบางประเภทเพื่อทำให้การแสดงผลเอกสาร HTML ไม่เจ็บปวด)

ในที่สุดก็มีปัญหาตลาดนักพัฒนา มีนักพัฒนา C ++ มากมายและยังมีนักพัฒนาเว็บอีกมาก แต่การทับซ้อนอาจไม่ใหญ่นักดังนั้นหากคุณต้องการจ้างคนทำงานในเรื่องนี้คุณจะมีเวลาค่อนข้างยากกว่าพูด PHP


1

ดังที่คนอื่น ๆ ได้กล่าวเอาไว้ว่า C ++ เป็นสภาพแวดล้อมที่ดีสำหรับการพัฒนาเว็บเซิร์ฟเวอร์ อย่างไรก็ตามมีข้อควรพิจารณาหลายประการเมื่อคุณตัดสินใจ

ความนิยมของภาษาสคริปต์สำหรับการออกแบบเว็บเซิร์ฟเวอร์นั้นเปลี่ยนไปตามกาลเวลา การเปลี่ยนแปลงที่ง่ายสามารถทำได้อย่างง่ายดายด้วยการสาธิตผลลัพธ์เกือบจะทันที คุณจะพบว่าการออกแบบเว็บเซิร์ฟเวอร์ที่ดีจะมีความสามารถที่คล้ายกัน แท้จริงแล้ว C ++ เป็นสภาพแวดล้อมที่ยอดเยี่ยมสำหรับการบรรลุเป้าหมายนั้น

กุญแจสำคัญในการสร้างระบบแอปพลิเคชันเว็บเซิร์ฟเวอร์ที่ดีคือการแยก UI จากโค้ด เป้าหมายในการสร้างสภาพแวดล้อมของเว็บแอปพลิเคชันคือหลีกเลี่ยง "UI ของคุณอยู่ในรหัสของฉันและรหัสของคุณอยู่ใน UI ของฉัน"

ฉันต้องการอย่างระมัดระวังในระบบเช่น cppcms ฉันคาดหวังว่ามันจะมีสิ่งที่คล้ายกัน

คุณไม่จำเป็นต้องใช้ภาษาสคริปต์ในการเสนอความยืดหยุ่นและประสิทธิภาพ

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