C で Web サイトをコーディングしますか?

meebo がどのようにそれを行っているかはわかりませんが、これがチャット ソフトウェアであることを考えると、実際のメッセージ トラフィックを処理するために C で記述されたカスタム サーバーを使用している可能性があります。

ただし、Apache やその他のほとんどの HTTP サーバーは、特定の要求に対して PHP、CGI、およびその他の言語を呼び出すことができるのと同じように、常に C プログラムを呼び出すことができました。一部の Web サイトは Lisp で書かれています。

インタープリター言語とは異なり、バックエンドは毎回コンパイルする必要がありますが、これはロールアウト時に行われ、ビルド/プロダクション スクリプトの一部です。

C プログラムが実行されるアクセス許可とユーザー アカウントは慎重に選択する必要があります。もちろん、C Web サイトは、バッファー オーバーラン、セグメンテーション違反、スタック オーバーフローなど、他の C プログラムが陥る可能性のある同じ問題に悩まされます。権限を減らして実行すると、保護が強化され、他の言語/プラットフォーム/アーキテクチャよりも悪くありません.

ただし、サーバーの場合は、依然として広く使用されています。ゴールド スタンダードだと思います。 Java、C++、およびその他すべての言語で書かれたサーバーはたくさんありますが、C だけが残っているようです。

-アダム


Meebo は mod_meebo と呼ばれるカスタム Lighttpd モジュールを使用します。あなたの質問に対する完全な回答ではありませんが、興味があるかもしれません。


私はノンブロッキング HTTP 1.1 サーバーをわずか 50 行 (スパース) または数百行 (より良い)、最大約 5k (安全) のコードで展開しました。サーバーは動的共有オブジェクトをモジュールとしてロードして、特定の種類のリクエストを処理します。

親コードは、接続追跡、キープ アライブ、GET/POST/HEAD 要求を処理し、起動時に読み込まれたハンドラーにそれらをフィードします。私がこれを行ったのは、ある種の Web ベースのコントロール パネルが必要な組み込みデバイス、特に電源コンセントを制御するデバイスで非常に小さなエルボー ルームで作業していたときでした。

各 DSO へのエントリ ポイントは、使用される URL とメソッドによって定義されました (つまり、/foo は、それが提供する要求のタイプに応じて異なる動作をしました)。

私の小さなサーバーは非常にうまく機能し、フォークやスレッドなしで約 150 のクライアントを処理でき、小さなテンプレート システムさえ備えていたので、UI 担当者は手を握る必要なくページを変更できました。

絶対にしない この種のセットアップは、ゲストブックを含む基本的な Hello World ホームページでさえも、あらゆる種類の本番サイトで使用できます。

ここで、ポート 80/443 でリッスンし、小さな POST ペイロードでリクエストを受け入れ、サニタイズして他のクライアントに転送するだけでよい場合は、少し異なります。しかし、それはふりをするタスク固有のサーバーです。動的ページを生成するために C を使用していません。