ネットワーク依存のWebアプリからネットワーク非依存のWebアプリへ
私はフルスタックのWeb開発者であり、現在は主に角のようなフロントエンドフレームワークとスプリングブートのようなバックエンドフレームワークを使用して単一ページアプリを構築しています。 通常、私のWebアプリの設計(CRUDだとしましょう)は次のとおりです。更新ページにいて、エンティティを更新するとします。次に、データベース内のエンティティを更新するリクエストがバックエンドに送信されます。バックエンドが応答してすべてが問題ないことを通知すると、エンティティは更新されました(ステータスコード200)次のページに進みます。これはentityName/{id}、エンティティのIDをURLを介して次のページに渡す場所など、URLを含む読み取りページです。次に、読み取りページでそのIDを取得し、バックエンドにリクエストを送信し、エンティティデータを取得して表示します。 この問題は、ユーザーがインターネットへの接続を失ったときに発生するため、バックエンドへのリクエストを実行できず、その結果、データをUIに表示したり、更新したりできません。 他のデザインはこれです:私は更新ページにいて、エンティティを更新します。リクエストはバックエンドに対して行われますが、状態もクライアント側で保持されています。したがって、接続が失われたとしましょう。読み取りページに移動して、更新されたエンティティを表示できます。さらに、状態/データはクライアント側に保持されるため、エンティティがクライアント側に存在するため、IDからエンティティを取得するためにバックエンドに2番目のリクエストを行う必要はありません。ユーザーがアプリに費やした時間の間に接続が回復し、更新要求がサーバーに対して行われ、データベースとクライアント側のデータが同期されます。 UIは、バックエンドに送信された情報を表示するための要求にあまり依存しないため、2番目の方法の方がユーザーにとって便利であるように思えます。 最初のアプローチが使用されていることはよく知っています。私はこのように開発しているので、私の質問は次のとおりです。最初の設計から2番目の設計に移行することは可能ですか。 2番目の設計を実装するには、サービスを使用してコンポーネント間でデータを共有します(angularで実装する場合)。このようにして、アプリの状態をクライアント側で保持できます。しかし、もっと良い方法があるかもしれません。アプリケーションの状態を管理するNgRxライブラリについて聞いたことがあります。クライアント側でアプリケーションの状態を管理するのに正しい方法ですか? また、接続が失われたときに作成できなかった要求が、接続が戻ったときに作成されることを確認するという2番目の問題もあります。そして私は疑問に思います:接続が戻ったときに要求をキューに入れて再実行できるツールを使用することは可能ですか?プログレッシブウェブアプリとService Workerの概念はありますが(Service Workerを使用してサーバーと交換されるデータをキャッシュできることを知っているような)概念しかありません。それがこの問題を解決する方法かどうか疑問に思いますか? 私の投稿に対するあなたのコメントを待っています。それが長すぎないことを願っています。前もって感謝します。