C ++를 서버 측 웹 개발 언어로 사용할 수 있습니까? [닫은] 할 수 없으며 C ++ /

서버 측에서 “스크립트 언어”로 C ++를 사용하여 웹 개발을 시작하고 싶습니다. 내 서버 인프라는 * nix 기반이므로 Azure에서 C ++로 웹 개발을 수행 할 수 없으며 C ++ / CLI ASP.NET도 적용 할 수 없습니다.

레거시 CGI 응용 프로그램과 별도로 C ++를 사용하여 웹 개발을 수행 할 수 있습니까?



답변

물론.

Wt , cppcms , CSP 등을 포함하여 개발을위한 몇 가지 프레임 워크가 있습니다. FastCGI의 기본 구현은 C로되어 있으며 C ++를 포함한 여러 언어를 직접 지원합니다 .

문자열을 구문 분석 할 수있는 모든 프로그래밍 언어는 CGI 또는 서블릿에서 사용할 수 있습니다. C 라이브러리와의 바인딩을 구현할 수있는 모든 언어를 사용하여 ISAPI 또는 Apache 호환 서버용 모듈을 개발할 수도 있습니다.

C ++에서는 특히 쉽지 않으며 훌륭한 템플릿 엔진은 거의 없으며 그 사이도 가능합니다.

물론 이것이 좋은 아이디어인지의 문제는 전적으로 또 다른 문제입니다. 🙂

참고 : Amazon.com, eBay 및 Google과 같은 주요 웹 사이트는 인프라의 일부로 C ++을 사용합니다. 그러나 Google은 속도가 중요한 시스템에 C ++ 만 사용하고 Amazon.com은 비교적 최근에 Lisp (일부 직원을 화나게 한)와 떨어져 전환했습니다.

Facebook은 이전에 PHP를 C ++로 컴파일했지만 HipHop 컴파일러 (부분적으로 C ++로 작성)는 바이트 코드 가상 머신으로 재구성되었습니다.


답변

왜 안돼?

OkCupid 데이트 사이트는 C ++로 작성됩니다. 다른 예가있을 수 있습니다.

Wt 라는 C ++로 웹 애플리케이션을 개발하기위한 Qt에서 영감을 얻은 툴킷도 있습니다 .


답변

C ++로 웹 응용 프로그램을 작성하려는 경우 웹 응용 프로그램을 CGI로 인터페이스하는 것은 총 낭비입니다.

ASIO (Asynchronous I / O)를 사용하여 비동기식으로 빌드하는 것이 좋습니다. 이를 통해 굉장히 빠른 웹 서비스를 구축 할 수 있습니다 ( 최상의 효과를 위해 리버스 프록시 및 정적 서버 로 nginx와 결합 ). 이를 Wt 와 같은 템플릿 라이브러리와 결합 하면 단일 서버에서 초당 수만 건의 요청을 처리 할 수 ​​있습니다.

이것이 동적 언어 웹 프레임 워크에 대한 실용적인 대안인지 여부는 또 다른 문제입니다.


답변

짧은 대답은 ANYTHING을 사용하여 웹 페이지를 작성하여 입력을 읽고 해석 가능한 출력을 작성할 수 있으며 웹 서버에서 실행할 수 있다는 것입니다.

기술적으로 모든 언어는 CGI 스크립트로 사용할 수 있습니다.

  1. 서버가 제시 한 모든 입력과 환경을 해석
  2. 알려진 마크 업 언어 (일반적으로 html)로 출력
  3. 서버에서 실행할 수 있습니다

다른 방법들도 있습니다. Perl은 c / c ++ 코드를 감싸는 래퍼 (wrapper)로 구축 될 수 있으며, 둘 사이의 해석 계층 역할을합니다 (C로 평평하게 컴파일 된 perl 모듈은 포함되지 않음).


답변

처음에는 매우 흔했습니다. 1990 년대 후반에 제가 처음으로 작업 한 웹 사이트는 C ++로 작성된 ISAPI 확장이었습니다.


답변

마이크로 소프트도 가능하다고 생각하는 것 같습니다. C ++를 사용하여 Azure에 대한 새로운 도구 집합 인 Casablanca 를 확인하십시오 .

카사 블랑카 (Casablanca)는 클라우드 컴퓨팅이 대표하는 소프트웨어 아키텍처의 급격한 변화를 활용하려는 C ++ 개발자를 지원하는 방법을 모색하기위한 프로젝트입니다.

Casablanca를 통해 얻을 수있는 혜택은 다음과 같습니다.

  • HTTP, JSON 및 URI에 대한 비동기 C ++ 바인딩을 제공하여 Windows Vista, Windows 7 및 Windows 8 Consumer Preview의 기본 코드에서 REST 서비스 액세스 지원
  • Windows 8 Metro 스타일 앱에서 C ++ HTTP 클라이언트 측 코드를 작성하는 데 도움이되는 Visual Studio 확장 SDK
  • Visual Studio 통합을 포함하여 Azure 용 네이티브 코드 REST 작성 지원
  • 퍼스트 클래스 PaaS (Platform-as-a-Service) 기능으로 네이티브 클라이언트에서 Azure Blob 및 큐 스토리지에 액세스하기위한 편리한 라이브러리
  • C ++ 11 기능을 기반으로 비동기 작업을 구성하기위한 일관되고 강력한 모델
  • Erlang 액터 기반 프로그래밍 모델의 C ++ 구현
  • 샘플 및 문서 세트

답변

PHP 의 경우 고유 한 C / C ++ 확장을 작성하여 좋은 성능 이점을 얻을 수 있습니다. 내 웹 응용 프로그램에서 CPU를 많이 사용하는 부분이 있다면 그 처리를 확장으로 오프로드 한 다음 C로 결과를 PHP로 반환 한 다음 PHP에서 브라우저로 출력하는 작은 C ++ 라이브러리를 만들 것입니다.

사람들이 종종 고려하지 않는 다른 것은 JavaScript / jQuery와 같은 특정 CPU 처리를 클라이언트 측으로 오프로드하는 것입니다. 웹 서버가 있다면 특정 기능 (일부 데이터 처리)에 대해 CPU 집약적 처리를 수행하려면 3Ghz CPU가 필요할 수 있습니다. 우리 회사는 서버를 계속 운영하기 위해 매달 해당 서버에 대한 비용을 지불하고 있습니다. CPU 집약적 작업을 동시에 실행하는 100 명의 동시 사용자에 대한 작업을 동시에 확장하려면 여러 개의 CPU와 서버가 필요할 수 있으므로 비즈니스 비용이 증가합니다. CPU 집약적 작업을 클라이언트 측에 오프로드하면 웹 사이트를 방문하는 각 사용자가 데이터를 직접 처리 할 수 ​​있으며 서버 기능을 늘릴 필요가 없으므로 비용이 절약됩니다.

결국 100 개 이상의 데스크톱 / 태블릿 / 모바일의 강력한 처리 능력을 통해 처리를 수행하면 매월 비즈니스 비용이 발생하는 데이터 센터에 서버가 앉아있는 것보다 훨씬 많은 성능을 발휘합니다. 잠재적으로 모든 서버가 데이터베이스에서 데이터를 검색하여 데이터베이스에 다시 저장하기 전에 콘텐츠와 데이터의 사전 / 사후 처리 및 유효성 검사를 제공합니다. 분명히 클라이언트 측 코드를 너무 CPU 집약적으로 사용하여 웹 브라우저 UI를 차단 / 고정시킬 수는 없습니다. 서버에 대한 AJAX 요청을 발생시키고 데이터를 검색 한 다음 비동기 적으로 클라이언트 측에서 데이터를 처리하여 웹을 남겨 둘 수 있습니다 -브라우저 UI를 완전히 사용할 수 있습니다.