C ++ 및 MySQL을 사용하여 웹앱을 구축 할 때 개념적 결점이 있습니까?


10

기존 소프트웨어를 가져 와서 SaaS 웹 앱으로 전환 할 수있는 좋은 기회가있는 매우 흥미로운 프로젝트를 물려 받았습니다. 프로젝트가 상속됨에 따라 코드베이스 / 프레임 워크는 이미 C ++ 및 MySQL로 정의되어 있습니다. 응용 프로그램 자체는 Windows Server에서 EXE로 컴파일되어 실행됩니다. UI는 웹 기반이며 앱은 일종의 서버로 작동합니다. 내가 현대 웹 응용 프로그램에 대해 알고있는 것에서 이것은 아마도 특별한 선택 일 것입니다. 요즘 대부분의 사람들은 PHP 프레임 워크 나 Ruby on Rails를 선택하는 것 같습니다. 확실히 그것은 그 주제에 관한 블로그를 읽음으로써 얻는 인상입니다. 따라서 MySQL이 지원하는 C ++ EXE가 웹 앱의 견고한 기초인지 아니면 다른 방식으로 구축해야하는지 알고 싶습니다.


설명하는 내용 은 웹 응용 프로그램이 아니라 서버 프로세스와 비슷합니다 . 그리고 서버 프로세스의 경우 PHP 또는 RoR은 특별한 선택이 아닙니다. 실제로 어떤 종류의 문제가 있습니까?
Benjamin Bannier

exe는 아마도 새로운 Hostable Web Core ( awesomeideas.net/page/IIS7-Hostable-WebCore.aspx )를 사용합니까 아니면 실제로 자체 HTTP 서버를 처음부터 구현합니까? 전자 인 경우 C ++을 사용하고 클라이언트 컴퓨터로의 이식성을 위해 자체 호스팅하여 매우 빠른 앱을 만들려고했을 것입니다.
Jimmy Hoffa

물론 제정신의 누군가는 HTTP 서버를 처음부터 작성하는 대신 POCO의 Net :: HTTPServer와 같은 것을 사용할 것입니다. 그러나 RoR과는 다릅니다. 예를 들어 Python 프레임 워크에는 일부 웹 서버가 없습니다.
Benjamin Bannier

4
웹 애플리케이션의 백엔드로 c ++를 사용하는 것은 그리 드문 일이 아닙니다. Google 검색은 C ++로 작성되었습니다. 야후의 많은 앱은 C ++입니다. 수백만의 사람들이 사용하는 거의 모든 AAA 웹 앱은 c ++로 작성되었습니다.
Tydus 군

예, 앱은 사용자 정의 웹 서버로 설계되었습니다. 따라서 웹 앱 측은 HTML 관리 UI 및 기능 세트에서 제공됩니다.
jnthnclrk

답변:


20

그것은 확인 ++ C를 사용하여 웹 응용 프로그램을 만드는 것입니다 경우 분명히 이득이 비용을 능가. Google, Amazon, Facebook은 모두 속도, 메모리 및 에너지 효율성 (일명 서버 비용)을 위해 C ++로 구축되었습니다.

그러나 짐작했듯이 C ++을 사용하면 단점이 있습니다. 그래도 도구에 따라 다릅니다.

먼저 cppcms 웹 사이트 를 인용 하겠습니다 .

CppCMS를 사용해야하는 경우

C ++ 언어는 적절한 도구 부족, 개발자 기술 등 여러 가지 이유로 웹 개발에 널리 사용되지 않습니다.

그러나 CppCMS를 사용한 C ++ 웹 프로그래밍이 매우 유용하고 효율적으로되는 영역과 시간 낭비 인 영역이 있습니다.

CppCMS는 언제 사용해야합니까?

1. 높은 성능, 효율성 및 확장 성이 요구되는 초당 수백, 수천 건의 웹 사이트 및 애플리케이션로드

확장 가능한 Comet / Server Push 기술이 필요한 응용 프로그램 --- CppCMS는 최소한의 리소스 사용으로 수십만 개의 동시 HTTP 연결을 효율적으로 처리 할 수 ​​있습니다.

3. 적은 비용의 추가 라이브러리를 사용하여 웹 인터페이스를 기존 C ++ 응용 프로그램 / 서비스에 포함시킵니다.

4. 저전력 장치 내장-CppCMS를 사용하면 비교적 저렴한 하드웨어 비용으로 풍부한 성능의 응용 프로그램을 만들 수 있습니다.

언제 사용하지 않습니까?

로드가 많지 않고 출시 기간이 매우 짧은 소규모 웹 응용 프로그램을 만드는 경우 Django 또는 RoR과 같은 도구가 이러한 작업에 더 적합 할 것입니다.

C ++의 단점은 다음과 같습니다.

  • 다른 언어에 비해 컴파일 시간이 매우 느릴 수 있습니다. 이는 반복, 릴리스 간격 및 개발자의 도덕에 영향을 줄 수 있습니다. 그만한 가치가 있는지 확인하십시오.
  • 대부분의 경우 변경 사항을 컴파일해야합니다. 피할 수는 있지만 일반적입니다.
  • 최신 C ++를 작성하면 배우기, 읽기, 쓰기, 디버깅 등이 쉬워 지지만 많은 C ++ 개발자는 Modern C ++가 무엇인지 모릅니다. 따라서 팀에서 일하는 경우 전체 팀의 Modern C ++에 대한 지식이 필요합니다. 그렇지 않으면 매우 복잡한 버그에 쉽게 빠질 수 있습니다. 그것은 언어 문제보다 더 많은 사람들의 문제입니다. 단지 C ++ 히스토리가 이해하기 쉽지 않은 것입니다. 좋은 교수법은 더 현대적인 (역사적으로) 언어만큼 일반적이지 않습니다.
  • 핵심 C ++ 언어는 여전히 유니 코드를 제대로 지원하지 않아 잠재적 인 어려움을 겪을 수 있습니다. UTF-8을 어디서나 사용하고 일부 라이브러리 (부스트를 살펴보십시오)를 관리하십시오.
  • C ++ 표준은 라이브러리가 무엇인지 모릅니다. 따라서 일반적인 컴파일러를 사용하여 다른 컴파일러 / 링커 / OS에서이를 관리합니다. 일부 모듈을 "즉석에서"로드 / 언로드해야하는 크로스 플랫폼 코드에 들어가기 시작하면 문제가 될 수 있습니다.

CPPCMS를 보시겠습니까? 또는 GUI 스타일 웹 사이트를 만들고 싶다면 wt?

다음 질문도 확인하십시오.


3
내 이해는 Facebook이 PHP로 프로그래밍되어 있지만 Linux 용 C ++에서 PHP 용 자체 고유 컴파일러를 빌드했다는 것입니다. Facebook이 컴파일러를 개발 한 주된 이유는 서버 운영에 대한 전기 비용을 낮추는 것이 었습니다. 실제로 속도가 빠르지는 않았지만 요청 당 CPU 사용량이 적습니다. 여기에서 찾을 수있는 오픈 소스 프로젝트입니다. developers.facebook.com/blog/post/2010/02/02/…
Reactgular

1
예, 이유가 다양하므로 에너지 및 서버 비용을 언급했습니다. Alexandrescu는 최근 인터뷰에서 C ++로 더 많은 Facebook 코드가 직접 작성되었지만 내 기억이 올바른지 이유를 언급하지 않았다고 말했다. 또한 C ++ 유틸리티 / 알고리즘으로 가득 찬 오픈 소스 라이브러리를 제공합니다. Folly facebook.com/notes/facebook-engineering/…
Klaim

또한 코드가 먼저 PHP로 작성된 다음 C ++로 변환 되더라도 내가 지적한 단점 중 3 개는 여전히 사실입니다.
클라 임

2
또 다른 C ++ 웹 프레임 워크 : wt (witty). 데스크톱 앱처럼 작동하는 웹 앱을 제작하려는 사람들을위한 것입니다. 포팅의 경우 좋은 선택입니다.
K.Steff

모든 사이트에는 여러 언어로 작성된 구성 요소가 있다고 생각합니다. C ++은 미세 조정 된 메모리 관리가 필요한 코드 섹션의 최적화로 가장 많이 사용됩니다.
jiggy

3

몇 가지 플러그인이 설치된 PHP에서 Wordpress를 실행하면 Winders 서버가 무릎을 꿇습니다. 따라서 C ++에서 웹 응용 프로그램을 구현한다는 아이디어에는 전혀 문제가 없습니다. 웹 경험에서 속도는 중요한 부분입니다.

대부분의 웹 프로젝트를 주도하는 그래픽 디자인 텐트. PHP는 HTML 내에서 실행되는 모호한 스크립팅 언어입니다. PHP 작성자가 HTML을 빠져 나가는 것을 허용합니다. 결과적으로 HTML로 작업하면 많은 이점이 있습니다.

여전히 C ++에서 HTML 템플릿 솔루션을 얼마든지 구현할 수 있습니다.

빠른 개발을위한 긴 Python 및 PHP 프레임 워크 목록을 제공 할 수 있지만 시간이 많이 있으면 C ++도 가능합니다.

내가 이해하지 못하는 것은 Windows에서 C ++을하기로 결정한 것입니다. lol


1
고전적인 밀짚 남자 논쟁, C ++이 아닌 wordpress / php에 대한 더 빠른 대안이 많이 있습니다. C ++이 적절한 선택이 아니라고 말하는 것은 아닙니다. 단지 당신의 주장은 실제로 잘 구성되어 있지 않습니다.
Jimmy Hoffa

동의합니다. 나는 워드 프레스를 대안으로 만들려고 생각하지 않았다. 내 경험이 최근에 대중적인 프레임 워크에서 좋은 성능을 얻는 것이 어렵다는 것을 보여 주었을뿐입니다.
Reactgular

1
StackExchange는 ASP.NET MVC 프레임 워크에서 실행됩니다. Node.Js는 저중량 고성능이며 엄청나게 뛰어난 성능을 원한다면 Snap 또는 Yesod Haskell 프레임 워크 yesodweb.com/blog/2011/03/… , Haskell, JavaScript 및 C #이 모두 높은 수준의 가비지 수집 언어입니다.
Jimmy Hoffa

1
많은 경우 서버에서 코드 실행 속도가 웹 앱의 제한 요소가 아니라는 점을 명심하십시오. 시간의 대부분은 무언가 (데이터베이스) 또는 프론트 엔드 (CSS, 이미지 가져 오기, JavaScript 작업 수행, HTML 렌더링)를 기다리는 데 사용됩니다.
johannes

1

확실히 특이한 선택입니다. C ++는 웹 응용 프로그램을 염두에두고 설계되지 않았으며 C ++를 사용하는 FastCGI 응용 프로그램을 작성하기위한 라이브러리가 존재하지만 기본 응용 프로그램을 구축하려면 더 많은 작업을 수행해야합니다. "웹 언어"는 일반적으로 HTTP 프로토콜 구현, HTML 생성 등과 같이 C ++의 다른 곳에서 가져와야하는 많은 작업을 수행합니다.

또한 웹 응용 프로그램은 주로 문자열에 관한 것입니다 .C ++의 가장 강점은 아닙니다. 언어 자체에 문자열 유형이 내장되어 있지 않기 때문에 몇 가지 단점이 생겨 문자열 처리가 더 어려워집니다. 레벨 언어. 흑 마법의 C ++ 테두리에서 문자 인코딩을 올바르게 처리합니다. 그리고 C + +는 상당히 순진한 코드에서 매우 열심히 충돌 할 수 있습니다. 고급 언어에서는 가능성이 훨씬 적습니다 (충돌이 발생할 수는 있지만 대부분의 경우 웹 서버는 웹 사이트를 사용하는 플랫폼에서 정상적으로 복구 할 수 있습니다) PHP와 같은 요청 수명주기 모델).

즉, 이미 작성된 대부분의 코드베이스를 가지고 있다면 C ++은 여전히 ​​실용적인 선택 일 수 있습니다. 모든 종류의 웹을 다루는 라이브러리를 찾아야합니다. (특히, 독립형 HTTP 웹 서버를 프로그램에 통합하거나, FastCGI를 통해 또는 Apache로 컴파일하여 Apache에 연결할 수 있기를 원합니다. HTML 문서를 쉽게 렌더링 할 수있는 일종의 템플릿 라이브러리가 필요합니다.

마지막으로 개발자 시장 문제가 있습니다. 사용할 수있는 C ++ 개발자는 많지만 웹 개발자는 더 많지만 그 정도는 크지 않을 것이므로이 작업을 수행 할 사람을 고용해야하는 경우에는 시간이 다소 더 소요됩니다. PHP.


1

다른 사람들이 말했듯이 개념적으로 C ++은 웹 서버 개발을위한 훌륭한 환경입니다. 그러나 결정을 내릴 때 고려해야 할 사항이 몇 가지 있습니다.

웹 서버 디자인을위한 스크립팅 언어의 인기는 시간이 흐르고 있습니다. 거의 즉시 결과를 보여줌으로써 간단한 변경을 쉽게 할 수 있습니다. 훌륭한 웹 서버 디자인은 비슷한 기능을 제공 할 것입니다. 실제로 C ++는 그 목표를 달성하기위한 훌륭한 환경입니다.

좋은 웹 서버 응용 프로그램 시스템을 구축하는 핵심은 UI와 코드를 분리하는 것입니다. 웹 응용 프로그램 환경을 구축하는 목표는 "UI가 코드에 있고 코드가 UI에 있습니다"를 피하는 것입니다.

cppcms와 같은 시스템을 신중하게 원합니다. 나는 그것이 비슷한 것을 제공 할 것으로 기대합니다.

유연성과 성능을 제공하기 위해 스크립팅 언어가 필요하지 않습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.