私はインターネットサーバー(いくつかのクロスプラットフォームプログラムで使用されるバックエンドコンポーネント)で実行する必要があるプログラムを開発しています。私は、バッファオーバーフローやSQLインジェクション攻撃を防ぐためのセキュリティ上の予防措置に精通していますが、以前にサーバープログラムやこのスケールで使用されるプログラムを作成したことはありませんでした。経験豊富なアドバイスを要求してサーバー上で実行するプログラムを書く
プログラムは、数百または数千のクライアントに同時にサービスを提供できる必要があります。プロトコルは処理速度と交換する必要のあるデータ量を最小限に抑えるように設計されており、サーバー側はCで記述されます。同じコードのWindowsとLinuxの両方のバージョンがあります。
質問:
- どのようにすべきプログラムハンドル通信 - 複数のスレッド、順番にすべてのソケットを扱う単一のスレッド、またはすべての非常に多くの着信接続のための新しいプロセスを生成(または各1について) ?
- このプログラムは一度に何ヵ月も実行する必要があるため、メモリの断片化などのことを心配する必要はありますか?
- この種のプログラミングに特有の他の設計上の問題は、デスクトップとモバイルシステムのクロスプラットフォームプログラムの経験豊富な開発者が気付かないかもしれませんか?
別の言語を使用することをおすすめしません。その決定は、私が自由に行こうとしない理由で既に行われています。
"このプログラムは一度に何ヵ月も実行する必要があるでしょう"プログラムがクラッシュしたり、何かが間違っていたりすると、プログラムを再起動するための監視プロセスを別途*持つことをお勧めします。 – Dukeling
"建設的ではない"?それは、私が直面している実際の問題に基づいて、実践的で、答えることができる3つの質問から成り立っています。よくある質問の定義です。 –
あなたの質問も[合理的スコープにする]必要があります(http://stackoverflow.com/faq#dontask)。 – RandomSeed