web-dev-qa-db-ja.com

サーバー側vsクライアント側vsハイブリッドでWebアプリを構築していますか?

現在、Webアプリケーションの構築には複数のアプローチがあります。

1.サーバー側のみ

これは、Ruby on Rails、Django、Express、Play!Frameworkなど)のようなWebフレームワークによってサーバー上のページをレンダリングする従来のアプローチです。

一般的なワークフロー:選択したフレームワークで、サーバー上にすべてのビジネスロジック、モデル、ビューテンプレートを構築します。

2.クライアント側+ REST API

比較的昔のことですが、ウェブコミュニティ全体がAngular、Backbone、Ember、その他数十のJavaScript MV *フレームワークでクライアント側アプリケーションを構築し始めました。そして今、React.jsもパーティーに参加しています。

[〜#〜] update [〜#〜]:誤解はありません。私がクライアント側だけで意味したのは、懸念を完全に分離することです。 REST APIサーバーと、そのサーバーと通信するクライアント側アプリケーションがあります。ユースケースによっては、本当のクライアント側のみのアプリケーションが存在しない可能性があります。 t認証またはデータの永続化のためにバックエンドに接続します。

典型的なワークフロー:決定する時間を決定Angular vsバックボーンvs Ember vs X 。次に、クライアントでルート、モデル、ビュー、コントローラーを構築します。完了したら、サーバーでモデル、コントローラー、ルートを構築します。ある方法で、2倍の量の作業を実行できます。

3.ハイブリッド

このアプローチの使用についてはあまり知りませんが、推測すると、サーバーでビュー(MVCフレームワークのビュー)をレンダリングします。その結果、SEOサポートに加えて、ページの読み込みが速くなります。

Hybridの前面には、バックボーンと表現を組み合わせたと思われるairbnbのrendrがあります一緒。

Eric Florenzoが彼のブログに本日投稿しました: React:最後に、素晴らしいサーバー/クライアントWebスタック

Webアプリケーションを構築する方法の数は圧倒的です。そして、ウェブ開発を学んでいる人にとって、これは問題になる可能性があります。次のアプリケーションを構築するためにどのアプローチを使用するかをどのように決定しますか?

27
Rated R

「クライアント側のみ」を完全に誤解していると思います。

まず、「クライアント中心」というラベルを付ける必要があります。 Angularのようなフレームワークのこのポイント全体は、MVCの「VC」部分がJavaScriptで完全にブラウザーに実装されていることです。「M」部分の「M」より高いレベルのロジック-モデル-ブラウザに実装され、下位レベルの「CRUD」ロジックがサーバーに実装されます。

ビジネスロジックは一度開発されます。ビューロジックは一度開発されます。制御ロジックは一度だけ開発されます-すべてが選択したJavaScriptフレームワークで行われます。データアクセスロジックも1回だけ開発されますが、今回は、サーバー側で選択したRESTyまたはSOAPyフレームワーク上で開発されます。

極端なケースでは、1台のマシンの1つのブラウザーからのみデータにアクセスすることが許容され、[Cookieのクリア]オプションが選択されるたびにデータが破棄される場合は、モデルを完全にクライアントに実装できます。

13
James Anderson

質問に対する答えは、それは要件に依存するということです。 「ウェブ」開発の歴史を少なくともざっと見てみると、利害関係者、顧客、要件収集に話しかけることがしばしば見過ごされているカウボーイ文化を示しています。

数年前、「デザインを満たすための要件ではなく、要件を満たすためにデザインを選ぶ」という非常に行き詰まった話を聞いたとき、私は幸運にも講演に参加できました。したがって、このような質問に直面したときは、このソフトウェアのビルドを要求している人々が実際に必要としているものを見つける必要があります。

あなたの仕事は、各アプローチの背後にある長所と短所を説明することです。

9
RibaldEddie

新しいアプローチとフレームワークの重要な点の1つは、フロントエンドテクノロジーとバックエンドテクノロジーの結合が少ないことです。

クライアント側のフレームワークを使用して、サーバー側のフレームワークに関係なく、任意の数のソースからデータやビューをプルできるという考え方です。

これにより、仕事を完了するのに最適なツールを選択でき、選択内容を個別に進化させることができます。

確かに、私はAngularまたはバックボーンを使用していないため、経験豊富な推奨事項を作成できません。現在のベーススタックは、サーバーサイドで最もスリムなmvcまたは見つけられるレストフルサービスで構成されています。主に配信するテンプレートとデータ。データは、主にプレーンなol 'javascript、jquery、およびcssを使用して、クライアント側でレンダリングおよび/または後続のデータが取得されます。

私はここから始めて、必要に応じてそれを基に構築します。このアプローチの利点は、複数のクライアントプラットフォーム(ブラウザ、モバイルなど)のサポートを検討するときに明らかになります。クライアント固有のレンダリングが必要な場合は、サーバー側で大規模な変更を行う必要はありません。

5
crad