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


8

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

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

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

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

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

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

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

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

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

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

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


2
一般的に受け入れられている方法は、ソフトウェアの機能要件と非機能要件に最も適合するアプローチを取ることです。たとえば、サーバー側のデータや計算が必要なく、すべてをブラウザーで保持できる場合、すべてのユーザーのマシン(ブラウザー)にすでにインストールされているプラ​​ットフォームの可用性を得るだけでなく、クロスプラットフォームのサポートも無料で受けられます。他のニュースでは、JavaScriptが好きではありませんか?
Robert Harvey、

PythonからJavaScriptへのコンバーターが利用可能です。これは、大部分の翻訳作業に役立つ可能性があります。
Andrew Morton

検証はサーバー側でも行われるべきであり、特にクライアント向けのサイトではそうでなければ、バイパスされるリスクがあります。
garryp

誰にもアプリを実行させたくない理由はありますか?もしそうなら、あなたはそれらをサーバーで認証する必要があるので、それは100%のクライアント側ではあり得ません(しかしそれでもほとんどそうです)
Mawgはモニカを復活させる2015

このようなWebアプリを作成しましたが、その結果には本当に満足しています。ちなみに、私のWebアプリはサードパーティのサーバーが提供するREST APIに依存していました。なぜこのようにしてもっと多くのウェブアプリが作られないのか不思議に思います。
leif81

回答:


8

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

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

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

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