6

GUI ベースの Web アプリケーションは、GUI コンポーネント、Wicket のようなステートフル フレームワーク上に構築することも、RESTful でステートレスな方法でクライアント上でのみ GUI ステータスを使用して構築することもできます。

技術的な観点から見ると、REST は http の能力をフルに活用し、非常にスケーラブルなアプリケーションにつながるため、正しい方法のように見えます。しかし、それには代償が伴います。多くの場合、複雑な GUI ではクライアントに JavaScript アプリケーションが必要になります。クライアントで状態を維持する必要がある場合は、同じページにとどまり、部分のみをリロードする必要があります。または、非表示の iframe でトリックを使用する必要があります。RESTful な設計を可能にするために、サーバー上にショッピング カートのような疑似リソースが存在する場合があります。マルチステップダイアログなどの中間状態を維持する必要があります...

周りを見渡すと、RESTful GUI Web アプリケーションはほとんどありません。これは歴史的な理由によるものですか、それとも RESTful な設計は一般的なシナリオでは非生産的ですか?

4

3 に答える 3

9

周りを見渡すと、RESTful GUI Web アプリケーションはほとんどありません。これは歴史的な理由によるものですか、それとも RESTful な設計は一般的なシナリオでは非生産的ですか?

私の回答は主観的なものですが、RESTful な開発を妨げる 2 つの大きなハードルがあると思います。

  1. 変更 - 従来のサイトの設計方法とは大きく異なります
  2. 課題 - 純粋な RESTful サーバー API とそれに対応するリッチで堅牢なクライアント UI の設計は容易ではありません

多くの場合、複雑な GUI ではクライアントに JavaScript アプリケーションが必要になります。

私の意見では、複雑でリッチなクライアント サイド エクスペリエンスには、サーバー サイドの実装に関係なく、詳細な JavaScript が必要になります。

同じページにとどまり、パーツのみをリロードする必要があります。

これは、従来のリクエスト/レスポンスの全ページから全ページへの設計とは大きく異なる設計です。各設計には独自のトレードオフがあります。REST 設計は AJAX 呼び出しで特にうまく機能しますが、クライアント側のコードは、保守可能で堅牢な設計にする必要があります。

シッククライアントを備えた RESTful サーバー:

  • スケーラビリティ: すべてのユーザーのセッション情報は、不十分なサーバー メモリに保存されません。
  • ネットワークを介した要求/応答データの削減: すべてのページを完全に送信せず、セッション ID またはViewStatesを送信しない
  • クリーンな再利用可能な URL: 複数の UI をサポートできるクリーンで分離されたサーバー API を提供します。
  • 純粋: HTTP 仕様への厳密な準拠 (GET は副作用を引き起こさないなど)
  • クライアント エクスペリエンス: 非同期トランザクションにより、よりリッチで応答性が向上

ただし、前述のように、シッククライアントには欠点があります。

  • XSS 攻撃に対してより脆弱であるため、RESTful URL には注意深いセキュリティが本当に必要です
  • 複雑な JavaScript は、開発、保守、およびデバッグが難しい場合があります (OO JavaScript を使用すると、これを調整できます)
  • 非同期リクエストがバックグラウンドで処理されていることをユーザーに示す必要がある
  • クライアント側の障害処理ロジックがさらに必要
  • フレームワークと IDE ツールは、サーバー側と比較して、クライアント側の開発には伝統的に弱いものでした (これは徐々に改善されています)。
于 2010-02-03T23:53:01.667 に答える
1

RESTful GUI 設計は非常に生産的です。ユーザーが情報を再送信したり、ブラウザーの履歴 (前後に移動) の複数のタブやウィンドウなどのコーナー ケースをサポートするために、余分な作業を行わなくても多くの機能を活用できます。私が間違っていなければ、このサイトは RESTful UI を使用しています。

于 2010-02-03T07:24:47.367 に答える
0

REST は、成功した Web アプリケーション (GUI と M2M の両方) の特性を観察することによって定義されました。したがって、定義上、これらのケースに適しているはずです。

また、デスクトップ アプリケーションと Web アプリケーションに関する質問をされていることにも気づきました。REST は、デスクトップ クライアント アプリケーションを構築するための優れたアーキテクチャでもあることに興味があるかもしれません。REST サーバーからすべてのデータを取得するデスクトップ クライアントをいくつか作成しました。

于 2010-02-03T12:16:45.937 に答える