web-dev-qa-db-ja.com

C ++とMySQLを使用してWebアプリを構築することには、概念的な欠点はありますか?

私は、既存のソフトウェアを利用してSaaS Webアプリに変換する良い機会がある、かなり興味深いプロジェクトを継承しました。プロジェクトが継承されると、コードベース/フレームワークは既にC++およびMySQLとして定義されています。アプリ自体はコンパイルされ、Windowsサーバー上でEXEとして実行されます。UIはWebベースであり、アプリは一種のサーバーとして機能します。私が最近のWebアプリについて知っていることから、これはおそらく珍しい選択です。最近、ほとんどの人はPHPフレームワークまたはRuby on Railsを選択します。確かに、私がブログを読んで得た印象ですそれで、MySQLに裏打ちされたC++ EXEがWebアプリの強固な基盤であるかどうか、または別の方法でビルドする必要があるかどうかを知りたいと思います。

10
jnthnclrk

C++を使用してWebアプリケーションを作成することは問題ありません[〜#〜] if [〜#〜]利点は明らかにコストを上回ります。 Google、Amazon、Facebookはすべて、速度、メモリ、エネルギーの効率を上げるためにC++で構築されています。

ただし、ご想像のとおり、これにC++を使用することには欠点があります。ただし、ツールによって異なります。

まず、これについて cppcmswebsite を引用します:

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

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

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

CppCMSをいつ使用するか、または使用できるか?

1.高いパフォーマンス、効率、スケーラビリティが要求される、毎秒数百、数千のヒットを持つ高負荷のWebサイトとアプリケーション。

2.スケーラブルなコメット/サーバープッシュテクノロジーを必要とするアプリケーション--- CppCMSは、最小限のリソース使用で数百および数千の同時HTTP接続を効率的に処理できます。

3.追加のライブラリをわずかなコストで既存のC++アプリケーション/サービスにWebインターフェイスを埋め込む。

4.組み込みのパワー不足のデバイス-CppCMSを使用すると、比較的低コストのハードウェアで、適度に高速に動作するリッチアプリケーションを作成できます。

いつ使用しないのですか?

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

C++固有の欠点は次のとおりです。

  • コンパイル時間は、他の言語に比べて非常に非常に遅くなることがあります。これは、反復、リリース間隔だけでなく、開発者のモラルにも影響を与える可能性があります。それが価値があることを確認してください。
  • ほとんどの場合、変更をコンパイルする必要があります。それは回避できますが、それは通常のことです。
  • 最新のC++を書くことで(学習、読み取り、書き込み、デバッグなど)は簡単になりますが、多くのC++開発者は最新のC++が何であるかを知りません。したがって、チームで作業する場合は、チーム全体からModern C++についての十分な知識が必要です。そうでないと、非常に複雑なバグに簡単に陥ってしまいます。とはいえ、それは言語の問題よりも人の問題の方が多いです。それは、C++の履歴が理解を容易にするのに役立たなかったことだけです。優れた教育は、より現代的な(歴史的な)言語ほど一般的ではありません。
  • Unicodeは、コアC++言語ではまだ十分にサポートされていないため、大きな問題の潜在的な原因となっています。どこでもUTF-8を使用し、いくつかのライブラリー(boostを調べてください)を使用して管理します。
  • C++標準では、ライブラリとは何ですか。したがって、従来の方法を使用して、異なるコンパイラ/リンカー/ OSでそれらを管理します。一部のモジュールを「オンザフライ」でロード/アンロードする必要があるクロスプラットフォームコードを開始する場合、これは問題になる可能性があります。

たぶんCPPCMSを見てみませんか?または、GUIスタイルのWebサイトを作成する場合は、wtを使用しますか?

次の質問も確認してください。

20
Klaim

PHPで実行されているWordpressは、私のWindersサーバーをひざまずきます。そのため、C++でWebアプリケーションを実装するという考えにまったく問題はありません。速度は、ウェブ体験。

ほとんどのWebプロジェクトを推進するグラフィックデザインテント。 PHPは、HTML内で実行されるあいまいなスクリプト言語です。PHP作成者がHTMLに脱出できるようにします。HTMLを次のように操作すると、多くの利点があります結果。

それでも、C++で任意の数のHTMLテンプレートソリューションを実装できます。

PythonおよびPHPフレームワークの迅速な開発を可能にするフレームワークの長いリストを提供することもできますが、時間があれば、C++は間違いなく可能です。

私が理解していないのは、WindowsでC++を実行するというあなたの決断です。笑

3
Reactgular

他の人が言ったように、概念的には、C++はWebサーバー開発に適した環境です。ただし、その決定を行うときにいくつかの考慮事項があります。

Webサーバー設計用のスクリプト言語の人気は時代遅れです。簡単な変更は、結果を即座にデモンストレーションすることで簡単に行うことができます。優れたWebサーバー設計であれば、同様の機能が提供されることがわかります。実際、C++はその目標を達成するための優れた環境です。

優れたWebサーバーアプリケーションシステムを構築するための鍵は、UIをコードから分離することです。 Webアプリケーション環境の構築の目標は、「あなたのUIは私のコードにあり、あなたのコードは私のUIにある」ことを避けることです。

Cppcmsのようなシステムで注意深くお願いします。私はそれが似たようなものを提供すると期待しています。

柔軟性とパフォーマンスを提供するためにスクリプト言語は必要ありません。

1
Bill Door

それは確かに珍しい選択です。 C++はWebアプリケーションを考慮して設計されていません。たとえば、C++でFastCGIアプリケーションを作成するためのライブラリは存在しますが、基本的なアプリケーションを立ち上げるには、さらに多くの作業を行う必要があります。 「Web言語」は通常、HTTPプロトコルの実装、HTMLの生成など、C++の他の場所から取得しなければならない多くのことを行います。

また、Webアプリケーションのほとんどは文字列に関するものであり、これはC++の最も強力な側面ではありません。文字列型が言語自体に組み込まれているわけではないため、いくつかの癖が生じ、文字列処理がより高い場合よりも扱いにくくなります。レベル言語。黒魔術のC++ボーダーで文字エンコーディングを正しく処理する。そして、C++は、かなり無害に見えるコードで非常に激しくクラッシュする可能性があります。これは、高水準言語でははるかに可能性が低くなります(それらもクラッシュする可能性がありますが、ほとんどの場合、Webサーバーは、特にperを使用するプラットフォームで正常に回復できます。 -PHPのようなライフサイクルモデルをリクエストします)。

とは言っても、コードベースのほとんどがすでに記述されている場合でも、C++は実行可能な選択肢である可能性があります。あらゆる種類のWebをカバーするいくつかのライブラリを見つける必要があります(特に、スタンドアロンHTTP Webサーバーをプログラムに統合するか、FastCGIを介して、またはコンパイルすることにより、Apacheにフックできるようにする必要があります。モジュール。HTMLドキュメントのレンダリングを簡単にするためのテンプレートライブラリも必要です)。

最後に、開発者市場の問題があります。利用可能なC++開発者はたくさんいますが、Web開発者はさらに多くいますが、重複はそれほど大きくないので、この作業に従事するために人を雇う必要がある場合は、次のような場合よりも少し苦労します。 PHP。

1
tdammers