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


10

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


あなたが説明することは、ウェブアプリではなくサーバープロセスのように聞こえます。また、サーバープロセスの場合、PHPまたはRoRは確かに珍しい選択肢です。実際にはどのような問題がありますか?
Benjamin Bannier

exeはおそらく新しいHostable Web Core(awesomeideas.net/page/IIS7-Hostable-WebCore.aspx)を使用していますか、それとも実際に独自のHTTPサーバーを最初から実装していますか?かつての場合は、おそらく彼らは本当にC ++を使用して、クライアント・マシンへの移植のためにそれをセルフホスティングすることにより、非常に高速なアプリを作るしようとしていた...
ジミー・ホッファ

もちろん、誰もがHTTPサーバーを最初から作成する代わりに、POCOのNet :: HTTPServerのようなものを使用するでしょう。しかし、それはRoRとは異なります。たとえば、PythonフレームワークはWebサーバーをパックしません。
Benjamin Bannier

4
Webアプリケーションのバックエンドとしてc ++を持つことはそれほど珍しいことではありません。Google検索はc ++で書かれています。yahooのアプリの多くはc ++です。数百万人が使用するほとんどすべてのAAA Webアプリはc ++で記述されています。
Tydus卿2012

はい、アプリはカスタムWebサーバーとして設計されました。そのため、Webアプリ側はHTML管理UIと機能セットに由来しています。
jnthnclrk

回答:


20

C ++を使用してWebアプリケーションを作るためにOKであるのIFコストを上回るメリットは明らかに、。Google、Amazon、FacebookはすべてC ++で構築されており、速度、メモリ、エネルギーを効率化しています。

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

まず、これについてcppcmsの Webサイトを引用します。

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を使用しますか?

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


3
私の理解では、FacebookはPHPでプログラミングされていますが、彼らはまた、Linux用のC ++でPHP用の独自のネイティブコンパイラを構築しました。Facebookがコンパイラを開発した主な理由は、サーバーを操作するための電気代を削減することでした。実際には高速ではありませんでしたが(高速です)、要求ごとに必要なCPU使用量が少ないという事実です。これは、ここにあるオープンソースプロジェクトです。developers.facebook.com/blog/post/2010/02/02/...
Reactgular

1
はい、理由はさまざまです。そのため、エネルギーとサーバーのコストについて言及しました。そうは言っても、Alexandrescuは最近のインタビューで、Facebookコードの多くがC ++で直接記述されていると思いますが、私の記憶が正しければ、理由は述べていません。また、C ++ユーティリティ/アルゴリズムが満載のオープンソースライブラリも提供しています
。Follyfacebook.com

また、コードを最初にPHPで記述してからC ++に変換した場合でも、指摘した3つの欠点は依然として当てはまります。
Klaim

2
別のC ++ Webフレームワーク:wt(機知に富んだ)。これは、内部でデスクトップアプリのように機能するWebアプリを構築したい人向けです。移植については、これは良い選択です。
K.Steff 2012

これらのサイトにはすべて、複数の言語で書かれたコンポーネントがあると思います。C ++は、微調整されたメモリ管理を必要とするコードのセクションの最適化として最もよく使用されます。
jiggy 2012

3

いくつかのプラグインがインストールされたPHPで実行されているWordpressは、私のWindersサーバーを苦労させます。したがって、C ++でWebアプリケーションを実装するという考えにはまったく問題はありません。スピードはウェブ体験の重要な部分です。

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

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

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

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


1
古典的なストローマンの議論ですが、C ++ではないwordpress / phpのより高速な代替手段がたくさんあります。C ++が適切な選択肢ではないと言っているのではありません。あなたの主張が本当にうまく枠組まれていないだけです。
Jimmy Hoffa

仰るとおりです。ワードプレスを別の方法にしようとしているとは思いません。最近の私の経験は、人気のあるフレームワークから良好なパフォーマンスを得るのが難しいことを示しているだけです。
Reactgular 2012

1
StackExchangeはASP.NET MVCフレームワークで実行されます。Node.Jsは軽量で高パフォーマンスであり、本当に途方もなく高性能なものが必要な場合は、SnapまたはYesod Haskellフレームワークyesodweb.com/blog/2011/03/…、Haskell、JavaScript、およびC#がすべて高レベルのガベージコレクション言語です。
Jimmy Hoffa

1
多くの場合、サーバーでのコード実行速度はWebアプリの制限要因ではないことに注意してください。時間の大部分は、何か(データベース)またはフロントエンド(CSS、画像の取得、JavaScriptの処理、HTMLレンダリング)の
待機に費やされ

1

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

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

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

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


1

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

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

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

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

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.