web-dev-qa-db-ja.com

Cおよび/またはC ++は、Web開発のための実行可能/実用的なオプションですか?

私はCに習熟しており、現在C++を学んでいます。私はいつもWebサイト(HTML/CSS)で遊んでおり、CやC++を使用して簡単なWebアプリを作成するのが現実的/実用的かどうか疑問に思っていました。

Cの場合、このチュートリアルの例で説明されているように、CGIスクリプトを使用します-> http://www.cs.tut.fi/~jkorpela/forms/cgic.html

C++の場合は、Wt-> http://www.webtoolkit.eu/wt のようなWebツールキットを使用することができます。

私はそれが可能であることを知っていることに注意してください(この前の質問で説明したように-> C++をサーバー側のWeb開発言語として使用できますか? )。

私が求めているのは、それが実行可能/実用的である(つまり、悪夢ではない)かどうかです。私はC++を始めたばかりなので、まだ他の言語を習得することには熱心ではありませんが、それがWeb開発を非常に簡単にする場合は、それを検討します(または、新しい言語を選択する準備ができるまでWeb開発プロジェクトを延期します) )。

また、実行可能/実用的であると思われる場合は、たどるルートに関する推奨事項を高く評価してください(つまり、Cを忘れてC++を使用する、使用するフレームワークなど)。

30
Daniel Scocco

Webサーバー言語としてのC++は良い考えですいくつかの制約の下でのみCPPCMS Webサイトから

CppCMSを使用する必要がある場合

C++言語は、適切なツールの欠如、開発者のスキルなど、さまざまな理由でWeb開発で広く使用されているわけではありません。

ただし、CppCMSを使用したC++ Webプログラミングが非常に便利で効率的になる領域もあれば、時間の浪費になる領域もあります。

CppCMSをいつ使用する必要があるか?

  1. 高いパフォーマンス、効率、およびスケーラビリティが必要な、毎秒数百および数千のヒットを持つ高負荷のWebサイトおよびアプリケーション。
  2. スケーラブルなComet/Server Push1テクノロジーを必要とするアプリケーション--- CppCMSは、最小限のリソース使用で数百および数千の同時HTTP接続を効率的に処理できます。
  3. 追加のライブラリをわずかなコストで既存のC++アプリケーション/サービスにWebインターフェイス2を埋め込みます。
  4. 組み込みの能力不足のデバイス-CppCMSを使用すると、比較的低コストのハードウェアで、適度に高速に動作するリッチアプリケーションを作成できます。

使用しない場合

高負荷を必要とせず、非常に短い市場投入期間を必要とする小さなWebアプリケーションを作成する場合、おそらくDjangoまたはRoRのようなツールがそのようなタスクに適しています。

また、 CPPCMSの必要性の合理的根拠 も参照してください。

個人のブログを作成する場合は、小規模または中規模のコミュニティを作成するか、小規模企業向けのWebサイトを作成します--- CppCMSはあなたには適していません。 Drupalなどの既存の優れたCMSを使用するか、優れたDjangoフレームワークを使用して開発すれば、大丈夫です。]

ただし、負荷が平均以上になると、既存のWebフレームワークを使用したスケールアップのプロセスが困難になる場合があります。

動的言語またはJIT言語のパフォーマンスが低いため、負荷が非常に小さい場合でもサーバーを追加する必要があります。システムが分散され、線形にスケールアップしないため、キャッシングはより複雑になり、効率が低下します。このようなシステムの作成には、熟練したスタッフとコストがさらに必要です。 CppCMSを使用すると、一般的なシステムのパフォーマンスを1桁上げることができます。

少数のサーバーまたは単一のサーバーでも負荷の問題を解決できる大きなサーバーファームを維持する必要がなくなります。メンテナンスコストと電力消費を削減します。

さて、あなたがこの種のウェブサイトを作ると思うなら、それは興味深いかもしれません。

ほとんどの開発者はそのような力を必要としないことに注意してください。実際に電力を消費する可能性のある何かを、明らかな方法で実行したい場合は、悲観的な理由からではなく、C++を使用してください。

28
Klaim

今日のC++ Web開発は、この分野で伝統的な他の言語(Java、C#、Rails、PHP、Python)を使用したWeb開発と同じくらい簡単です。

CppCMS は、C++でWeb開発を行うために必要なすべてを提供します。

したがって、C++が選択した言語の場合... C++を使用しない理由はありません。

ただし、HTML、Ajax、フォーム、MVC、SQL、セッション管理など、多くのWeb開発の概念を学ぶ必要があります。

開示:私はCppCMSの作成者です。

26
Artyom

私はC++でWeb開発を行いましたが、それはジョブの間違ったツールであると確信しています。ほとんどの場合、「バッテリーは含まれていません」という言語であり、「バッテリー」は次のようなものです。

  • Unicodeサポート
  • 一般的なデータ形式のパーサー/ビルダー:
    • XML
    • JSON
    • MIMEメッセージ
  • sQLデータベースクライアント

the Python standard library または 。NET Framework に存在します。

この機能はC++で [〜#〜] poco [〜#〜] のようなサードパーティのライブラリを使用して取得できますが、標準よりも便利ではありません。

17
dan04

サーバー側アプリケーションの場合、答えは完全に「はい」です。多くの大規模なサイトでは、スクリプト言語では提供されないパフォーマンスとリソース使用量を提供するためだけにC++を使用しています。何年も前に、多くのWebサーバーコードがとにかくC++(MicrosoftのISAPIまたはATLServerフレームワークなどを参照)またはCGIアプリケーションとして記述されていました。これは、Webの人気が高まり、より速い開発のターンアラウンドが必要になったときに変わりました。スクリプト言語は、特に「何かをつなぎ合わせる」だけの場合は、常に開発が速くなり、プログラミングに慣れているジュニア開発者の間で常に非常に人気がありました。

その証拠として、Web開発で最も一般的な言語であるPHPを見てください。働くのに最適な環境ですが、誰もが世界で最高の言語とは言えません。

今日、私はサーバーサイドのバックエンドが他のアプリケーションと同じくらい専門的な注意を払って書かれるべきところまで物事が成熟したことを願っています。つまり、C++はWeb開発で復活する可能性があります(そして、MSはそのように進んでいると思います Herb Sutterが報告したように C++は、今日の巨大なデータセンターで、データセンターのエネルギー要件を削減します大幅なコスト削減を意味します。したがって、MSでのC++の復活は、それがシステムソフトウェア以外のものになるとは確信していませんが)

ただし、Webサーバー上の単純なスクリプトから呼び出されるサービスとして存在するC++バックエンドソフトウェアを作成するのは簡単です。私は以前の職場でこれを行いました。Webサーバーは、アプリケーションサービスへのパススルーを提供するためだけにありました。これにより、はるかに優れたセキュリティ(公開されたWebサーバーをハッキングする人はほとんど作業できなくなりました)、はるかに優れたパフォーマンス(ビジネスロジックがWebサービスを提供していないサーバーに分散されたため)、およびテストが非常に簡単になりました-バックエンドサービスはスタンドアロンであり、明示的かつ明確に定義されたインターフェイスを提供していたため、インフラストラクチャ全体のWebパーツなしでテストできました。

C++には、Webサーバークライアントコードとして興味深い開発もいくつかあります。最近 Wt を見ました。これにより、Qtコードを記述できますが、ブラウザにGUIが表示されます。ブラウザに表示されるガジェットは、サーバー上で実行されているQt/C++コードを透過的に呼び出す薄いjavascript/html/etcです。 Hangman の例を試してみてください(グラフィックス、通常の開発者は0/10になりますが:))

これはRPCメカニズムの自然な進化だと思います。オブジェクトがどこにあるかを気にすることなく(開発者として)ローカルまたはリモートでオブジェクトを実行できたら、デスクトップアプリではなくWebブラウザーでオブジェクトからGUIを切断できます。 。

11
gbjbaanb

はいC++を使用できます。物事を簡単にするために、 Lacewing のようなフレームワークを使用することをお勧めします。

Web開発にC++を使用する理由は2つあります

  • 組み込みデバイスにHTTPサーバーが必要です
  • スピード、本当のスピードが必要です。数百万にスケーリングするか、CPUにバインドされた計算を行っています(動的画像処理または重いAIを考えてください)。
11
Raynos

CベースのプログラムのWebインターフェースとして mongoose ライブラリーをお勧めします。これを複数回使用しており、非常に使いやすいです。

多分[〜#〜] php [〜#〜]は、CまたはC++よりもWeb開発のためのより良いオプションです。 CとC++を知っていれば、簡単に習得できます(構文は非常に似ています)。 PHPを学習することで、Web開発のためにCおよびC++で苦労するよりも多くの労力を節約できます。

1
gregn3

IIRC eBayは、Microsoft Active Template Libraryサーバーモジュールを使用してC++で記述された [〜#〜] isapi [〜#〜] に基づいて構築されています。

彼らが早期に賭けをした可能性はありますが、今やそれをやめさせる説得力のあるビジネス上の理由はありません。実際、Facebookは単一の大きなC++バイナリにコンパイルされますが、PHPで開発され、HipHopコンパイラを使用して文字変換します。

HipHopクロスコンパイラー: https://developers.facebook.com/blog/post/2010/02/02/hiphop-for-php--move-fast/

単一バイナリ: http://en.wikipedia.org/wiki/HipHop_for_PHP#HPHPc

1
JBRWilkinson