web-dev-qa-db-ja.com

Webアプリケーションをクライアント側のみにしない理由はありますか?

私は最近、パスファインディングアルゴリズムシミュレーションアプリケーションをPythonで書き始めました。

ユーザー入力を受け取り、ランダムに2Dグラフを生成し、GUIを介してシミュレーションを表示します。

さて、私が見つけたのは、Pythonやスタンドアロンアプリケーションは、この種のアプリケーションの共有にはあまり適切ではないということです。これは、人々に自分のコンピューターなどで実行させる必要があるためです。それらをウェブサイトに。

明らかに、表示と制御要素はクライアント側で書く必要があります。

しかし、実際の経路探索アルゴリズムは、クライアント側またはサーバー側のいずれかで作成できます。

これで、サーバー側のバックエンドが必要ない(つまりデータベースがない)場合、Webアプリケーション全体をクライアント側のHTML/JavaScriptで実行することが可能になります。

問題は、これを行う正当な理由notがあるかどうかです。

クライアントとサーバー間のやり取りを処理する必要がないため、クライアント側でのみそれを実行すると、複雑さが大幅に軽減されます。サーバーの唯一の目的は、最初にJavascriptをクライアントに提供することです。

一方、私はすべてをJavaScriptで記述する必要があります...

また、再利用可能なモデルモジュールを使用するという考えは、私にとって魅力的です。例えば。後でスタンドアロンアプリケーションが必要な場合は、View/Controlモジュールを記述するだけで済みます。

ここで一般的に受け入れられている慣習は何でしょうか。

8
dwjohnston

アプリクライアント側のみを行うことの利点を概説しました。考えられる短所は次のとおりです。それらのいずれかまたはすべてが当てはまる場合は、サーバーベースのソリューションへの移行を検討してください。

  • パフォーマンス。クライアントベースのソリューションは、サーバーベースのソリューション(トラフィックを含む)よりも著しく遅くなりますか? JavaScriptは現在高速ですが、計算コストの高いアルゴリズムでは、専用のサーバー側ハードウェアまたはHPCファームが必要になる場合があります。
  • 生産性。 JavaScriptの背景がないPython devの場合、新しい言語とそのイディオムを習得するために必要な時間は非常に長いか、少なくともクライアント/サーバーロジックの実装よりも長いかもしれません。さらに、便利かもしれませんPython JSでは使用できないライブラリを使用できます。これにより、開発時間が大幅に増加します。
  • 知的財産。このアルゴリズムを保護したい場合は、クライアントマシンでコードを使用できるようにすることが問題になる可能性があります。
  • 互換性。ブラウザベースのコードが増えるほど、ブラウザの互換性の問題が増えます。これはmuch最近の方が簡単ですが、対象とするオーディエンスとリーチによっては、依然として問題になる可能性があります。

つまり、クライアント側のJavascriptはアルゴリズムコンピューティングにとって完全に実行可能なプラットフォームであり、ブラウザーとスタンドアロンアプリ(Awesomiumなどのブラウザーエンジンを使用)の両方に簡単に展開できますが、注意が必要です。情報に基づいた選択を行うには、それらを調べてください。