Чи є якісь концептуальні недоліки для створення веб-програми з C ++ та MySQL?


10

Я успадкував досить цікавий проект, де є хороша можливість взяти наявне програмне забезпечення та перетворити його на веб-додаток SaaS. Оскільки проект успадковується, база / рам коду вже визначені як C ++ та MySQL. Сам додаток компілюється та запускається як EXE на Windows Server. Користувальницький інтерфейс базується на веб-сторінках, і програма працює як своєрідний сервер. З того, що я знаю про сучасні веб-програми, це, мабуть, незвичний вибір. У наші дні більшість людей, здається, вибирають рамки PHP або Ruby on Rails. Безумовно, таке враження я отримую від читання блогів на цю тему. Отже, мені дуже цікаво знати, чи підтримується MySQL C ++ EXE є міцною основою для веб-додатків, чи варто шукати, щоб створити іншим способом?


Те, що ви описуєте, більше нагадує серверний процес, а не вебапп. А для серверних процесів PHP або RoR - це звичайно незвичний вибір. З якою проблемою насправді у вас є?
Бенджамін Баньє

Чи може exe використовувати новий Hostable Web Core ( awesomeideas.net/page/IIS7-Hostable-WebCore.aspx ) чи реально реалізує власний сервер HTTP з нуля? Якщо колишні, то, можливо, вони справді намагалися зробити дуже швидкий додаток, використовуючи C ++ та самостійно розмістивши його для перенесення на клієнтські машини ..
Джиммі Хоффа

Звичайно, хтось розумний використовував би щось на зразок Net :: HTTPServer POCO замість того, щоб писати сервер HTTP з нуля. Але це не так, як RoR або, наприклад, рамки Python не пакують якогось веб-сервера.
Бенджамін Баньє

4
Це не так незвично, щоб мати c ++ як бекенд веб-програми. Пошук у Google написаний c ++. Багато додатків Yahoo є c ++. Практично кожен веб-додаток AAA, який використовують мільйони людей, написаний на c ++.
Лорд Тидус

Так, додаток було розроблено як власний веб-сервер. Тож його веб-додаток походить від інтерфейсу HTML і адміністратора HTML.
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 ++ не знає, що таке бібліотека. Тому ми використовуємо звичайні способи управління ними в різних компіляторах / linker / OS. Це може бути проблемою, якщо ви почнете вводити міжплатформенний код, який потребує завантаження / вивантаження "на льоту" деяких модулів.

Може, погляньте на CPPCMS? А може бути, якщо ви хочете створити веб-сайт у стилі GUI?

Також перевірте ці питання:


3
Я розумію, що Facebook запрограмований на PHP, але вони також створили власний власний компілятор для PHP в C ++ для Linux. Основними причинами, якими розробив компілятор Facebook, було зменшення їх електричних витрат на операційні сервери. Це насправді не швидкість (це швидше), але факт, що вона вимагає менше використання процесора за запит. Це проект з відкритим кодом, який можна знайти тут. developers.facebook.com/blog/post/2010/02/02/…
Реакційний

1
Так, причини різняться, тому я згадав енергію та вартість серверів. Незважаючи на це, Олександреску нещодавно сказав в інтерв'ю, я вважаю, що все більше коду Facebook пишеться безпосередньо на C ++, але він не згадав, чому, якщо моя пам'ять правильна. Вони також надають бібліотеку з відкритим кодом, повною утилітою / алгоритмами C ++: Folly facebook.com/notes/facebook-engineering/…
Klaim

Також зауважте, що навіть якщо код спочатку записаний у PHP, а потім перетворений на C ++, 3 недоліки, на які я вказав, все-таки вірні.
Клайм

2
Ще одна веб-рамка C ++: wt (дотепність). Це для людей, які хочуть створювати веб-додатки, які працюють як настільні додатки під кришкою. Для перенесення - це вдалий вибір.
K.Steff

Я думаю, що всі ці сайти мають компоненти, написані на декількох мовах. C ++, швидше за все, використовується як оптимізація для розділів коду, які потребують тонкої настройки пам’яті.
джиггі

3

Wordpress, що працює в PHP з кількома встановленими плагінами, приводить мій сервер Winders на коліна. Тож у мене взагалі не виникає проблем із ідеєю впровадження веб-додатку в C ++. Швидкість є важливою частиною досвіду в Інтернеті.

Намети з графічним дизайном, що сприяють більшості веб-проектів. PHP - це незрозуміла мова сценаріїв, яка працює всередині HTML. Дозволити авторам PHP вийти з HTML і вийти з нього. У результаті роботи з HTML є багато переваг.

Тим не менш, ви можете реалізувати будь-яку кількість рішень шаблонів HTML в C ++.

Можна надати довгий список фреймворків Python та PHP, які сприяють швидкому розвитку, але якщо у вас є багато часу, то C ++, безумовно, можливий.

Що я не розумію, це ваше рішення зробити C ++ у Windows. Лол


1
Класичний аргумент "солом'яної людини", існує багато кращих швидких альтернатив wordpress / php, які не є C ++. Я не кажу, що C ++ не є релевантним вибором, просто ваш аргумент насправді не дуже добре оформлений.
Джиммі Хоффа

Я погоджуюсь з тобою. Я не думаю, що я намагався зробити wordpress альтернативою. Просто мій досвід був останнім часом, як показано, що складно отримати хороші показники з популярних рамок.
Реаг.

1
StackExchange працює на базі ASP.NET MVC. Node.Js - це невисока ефективність, і якщо ви хочете чогось смішного виконавця, існують рамки Snap або Yesod Haskell yesodweb.com/blog/2011/03/… , Haskell, JavaScript та C # - все це сміття зібрані на високому рівні.
Джиммі Хоффа

1
Зверніть увагу, що швидкість виконання коду на сервері у багатьох випадках не є обмежуючим фактором для веб-програми. Велика частина часу витрачається на те, щоб чекати чогось (база даних) або навіть на передньому кінці (отримання CSS, зображень, роботи з JavaScript, HTML-рендерінг)
johannes

1

Це, звичайно, незвичний вибір. C ++ не розроблявся з урахуванням веб-додатків, і хоча бібліотеки існують для запису, скажімо, програм FastCGI з C ++, вам потрібно зробити набагато більше роботи, щоб підняти основну програму. "Веб-мови" зазвичай роблять для вас багато чого, що вам доведеться отримати з інших місць C ++, наприклад, впровадження протоколу HTTP, генерування HTML тощо.

Крім того, веб-додатки в основному стосуються рядків, що не є найбільш сильною стороною C ++ - у самій мові немає строкового типу, а це призводить до декількох химерностей і робить обробку рядків більш незграбною, ніж це було б у більш високих, мови рівня. Правильне поводження з кодуваннями символів на C ++ межує з чорною магією. І C ++ може вийти з ладу дуже важко, на досить невинному вигляді коду, що набагато рідше з мовою вищого рівня (вони теж можуть вийти з ладу, але в більшості випадків веб-сервер може вигально відновитися, особливо на платформах, які використовують -запросити модель життєвого циклу, як PHP).

Це означає, що якщо у вас вже написана більшість кодових баз, C ++ все одно може бути життєздатним вибором. Вам потрібно буде знайти кілька бібліотек для висвітлення всіляких веб-речей (особливо, ви хочете мати можливість інтегрувати окремий веб-сервер HTTP у свою програму, або підключити, скажімо, Apache, або через FastCGI, або шляхом компіляції в модуль; вам також потрібна якась бібліотека шаблонів, щоб зробити HTML-документи безболісними).

Нарешті, існує проблема ринку розробників. Доступно багато розробників C ++ і навіть більше веб-розробників, але перекриття, ймовірно, не таке вже й велике, тому якщо вам коли-небудь потрібно найняти людей для роботи над цією справою, вам доведеться дещо складніше, ніж, скажімо, PHP


1

Як говорили інші, концептуально C ++ - це прекрасне середовище для розробки веб-серверів. Однак ви приймаєте таке рішення з кількох міркувань.

Популярність мов сценаріїв для дизайну веб-серверів обертається з часом. Прості зміни можна зробити легко, демонструючи результати майже негайно. Ви побачите, що будь-який хороший дизайн веб-сервера пропонує подібні можливості. Дійсно, C ++ є прекрасним середовищем для досягнення цієї мети.

Запорукою створення хорошої системи додатків веб-сервера є відокремлення інтерфейсу користувача від коду. Метою створення середовища веб-додатків є уникнути "Ваш інтерфейс користувача в моєму коді, а ваш код - у моєму інтерфейсі".

Мені б хотілося уважно в таких системах, як cppcms. Я би сподівався, що він пропонує щось подібне.

Вам не потрібна мова сценаріїв, щоб запропонувати гнучкість та ефективність.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.