高度にスケーラブルなサーバー/クライアント アプリケーションの開発を開始する方法を学びたいと考えています。具体的には、非 Web ベース/非ブラウザー デスクトップ クライアント向けです。非常に最小限のチャット アプリケーション (AIM/Skype にほぼ匹敵する) を開発することは、サーバー/クライアントとスケーラビリティについて学習するこのような道を歩み始めるための合理的な方法だと思います。
スケーラビリティを重視しているため、どのプログラミング言語がこのタスクに適しているかわかりません。個人的には、Java、C#、および C/C++ だけに関心があります。サーバー OS に関する限り、Linux を扱うので、私の場合、C# は Mono を意味します。
高度にスケーラブルでなければならないアプリケーションをサポートするインフラストラクチャであるため、私の特定の関心は、サーバーで使用する言語に要約されると思います。Java と C# のサーバーのスケーラビリティについて、さまざまなレビューを聞いたことがあります。私の直感では、どちらも完全に合理的な選択であることが示唆されますが、アプリケーション/ユーザー トラフィックが特定のしきい値に達すると、問題が発生するという話を耳にします。伝聞をどう判断するかは難しいですが、これらの言語のベアメタル サポートの欠如は、特定のしきい値でスケーラビリティを妨げる可能性があると思います。C/C++ について聞くと、優れた Boost ライブラリ (例:Boost.Asio
) 究極のスケーラビリティを提供します。しかし、特にソケットは、Java/C# などの他の言語よりも C/C++ で処理する方がはるかに複雑であると聞くと、私は怖くなります。
チャット クライアントなどの高度にスケーラブルなサーバー クライアント アプリケーションの作成を開始する効果的な方法は何ですか? 私が言及したもののうち、どのプログラミング言語がそのようなアプリケーションの開発に適しているでしょうか? このようなアプリケーションでは、他にどの言語を検討する必要がありますか?
編集:「スケール」という用語は、多数のユーザー(おそらく数万または数十万、おそらく数百万)にサービスを提供するためのスケーリングに最も直接的に関連しています。