0

この質問の続き: GWTはGAEバージョンの変更を検出してリロードします

いくつかのことをさらに明確にしたいと思います。

私はエンタープライズ アプリ (GWT 2.4 & GAEJ 1.6.4 - GWT-RPC を使用) を持っており、ユーザーは通常、ブラウザーで 1 日中実行しています。私はかなり定期的に新しいリリースを作成しているので、ユーザーへの影響を最小限に抑えるためにプロセスを合理化しようとしています. - すべてのリリースがすべてのユーザーに関係するわけではないため、再起動の回数を最小限に抑えたいと考えています。

私は、次のことが可能になることを望んでいました。リリースを次のように分類します。1) IncompatibleRemoteServiceException がスローされる原因となるリリース、および 2) そうでないリリース: つまり、サーバーまたはクライアントにのみ影響し、RPC インターフェースには影響しません。

その後、クライアントとサーバーの間のインターフェースに影響を与えることなく、クライアントとサーバーに多くの変更を加えることができました。RPC インターフェイスに変更を加えない限り、おそらくサーバー コードやクライアント コードを変更しても例外はスローされないのでしょうか? 右?または、GAE を再デプロイすると、古いクライアントで IncompatibleRemoteServiceException が発生しますか?

それができれば、インターフェイスの無効化の変更をかなりまれなリリースにまとめて、ユーザーに再起動が必要になることを通知できます。

助けてくれてありがとう。

4

1 に答える 1

1

私はかなり迅速な答えが必要だったので、何が可能かを確認するために古き良き時代のテストを行うだけだと思いました。うまくいけば、これはGWT-RPCを使用する本番システムを持つ他の人にとって役立つでしょう。

目標は、接続されているすべてのブラウザーを更新しなくても、更新/修正をリリースできるようにすることです。できることはたくさんあります。

だから、私のテストの後、これがあなたができることとできないことです:

問題なし

  1. RemoteServiceに新しい呼び出しを追加します

  2. サーバー上のコードを更新するだけです。たとえば、簡単なバグ修正、再デプロイ

  3. 一部のクライアント(GWT)コードを更新して再デプロイするだけです(もちろん、新しいクライアント機能が必要な場合はブラウザーを更新する必要がありますが、他のユーザーは影響を受けません)

限られた問題

  1. 既存のRemoteServiceメソッドにパラメーターを追加します。これは興味深いものです。特定の呼び出しは「IncompatibleRemoteServiceException」をスローしますが(もちろん)、同じリモートサービスまたは他のリモートサービス(Impl)への他のすべての呼び出しは影響を受けません。

  2. RemoteService内の任意のメソッドに(パラメーターとして)新しいタイプを追加します。これは最も興味深いものであり、このテストを行うようになった理由です。IncompatibleRemoteServiceExceptionを使用して、既存のクライアントのRemoteService全体を古くします。ただし、他のRemoteServiceを引き続き使用できます。-完全に理解するために、ここでさらにテストを行う必要がありますか、それとも他の誰かがもっと知っていますか?

したがって、自分が何をしているのかを知っていれば、更新やリリースのアナウンスでユーザーを煩わせることなく、かなり多くのことができます。

于 2012-04-14T06:47:46.833 に答える