質問

GWT Webクライアントを構築するためにWaveチームが取ったアーキテクチャのアプローチを知っている人がいるのだろうか?私はモバイル向けに設計された1つのGWTアプリのパフォーマンスを最適化しようとしているので、その迅速な資格を賞賛することは困難です:)

  • WaveはGWT-RPCを使用してサーバーから定期的な更新を取得していませんか? Firefoxは、Wireを越えてJSONコミュニケーションを追跡しますが、RPCのもののようなものはありません。

  • たとえば、新しいウェーブレットが送信されると、どのように進みますか。すべてのウェーブDTOのビューオブジェクトはありますか、それとも他のパターンを使用していますか?

  • たとえば、新しい波が到着したことでの応答の後、GUIはどのように更新されますか。ウェーブレットのある領域全体がレンダリングされているか、特定の要素のみが触れることを保証するためにいくつかのスマートなテクニックを使用しますか?

ありがとう

役に立ちましたか?

解決

これはおそらく情報の過負荷ですが、Google Waveはオープンソースであるため、実際に物事を設定する方法を見ることができます ここ.

たとえば、Waveview.javaを見ると、Ray Ryanのようなクライアント側のイベントバスを使用していることがわかります。 この話 Google IO 2009で。GoogleWaveのこれらの側面について話した別のビデオを見たことを覚えているようです。

  • 彼らはイベントシステムを使用して、クライアント側で何かが起こったときにイベントを発射します。イベントシステムは、サーバーとの通信を管理し、イベント情報をサーバーに渡す、サーバーからイベントを取り戻し、戻ってくるイベントを公開します。イベントバスは一種のバッファーを使用して、多くのイベントが急速に連続して発射されると、それらをすべて1つのバッチで送信できます。たとえば、New Waveが到着すると、波情報が発生したイベントが発生し、そのイベントを積極的に聞いているUIの一部に通知されるため、それに応じて自分自身を変更する必要があるかどうかを判断できます。
  • GWTがコードをモジュールに分割し、実際に使用する必要がある部分のみをロードできるように、Seam Points(またはそのようなもの)を使用して作成しました。 Wave UI JavaScriptファイルはもともと1MBを超えていたため(縮小および圧縮)、それは非常に重要でした。
  • 特定の波とウェーブレットのみが一度に表示されるため、実際に同じDOM要素を再利用するためにいくつかの複雑な手法を使用しました。したがって、波のリストを下にスクロールすると、実際に受信トレイの上部にある波を表すDOM要素を取得し、内部の情報を変更し、スクロール領域の下部に移動し、部品に空白のスペースが残ります。もう見えない巻物領域の。

さらに、サーバーとの継続的な通信を維持するためにJSONPとcometのようなものを使用していると確信しています。そのため、新しい更新のためにサーバーに絶えずポーリングしていませんが、からの動的に生成されたJavaScriptファイルがあります。サーバーが起動する必要があると判断したイベントを起動するための指示を含むサーバー。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top