バックエンド SQL データベースとの間でデータをクライアント アプリケーションに仲介する Web API を備えた既存のクラウド ベースのソリューションがあります。すべて非常に標準的です。私の Web API は .NET Core を使用して構築されています。これはうまく機能しており、構築されたさまざまな Web クライアントで既存の Web API を利用しています。アーキテクチャは次のようになります。
現在のソリューションは、Web API を使用するネイティブ モバイル クライアント アプリケーションをサポートするように拡張する必要があります (ここでは異常なことは何もありません。通常、他のクライアントと同じように Web API を呼び出します)。しかし、これらの新しいクライアント アプリケーションは、オフライン シナリオで使用できます。これは、必要なたびに Web API を呼び出すためにデバイスにデータ接続が存在することを期待できないことを意味します。データをオフラインにして、必要に応じてサーバーに送り返すことができるように、データの同期を検討する必要があります。
考えてみると、データは次の 2 つの方法のいずれかで同期されます。
- 一方向の同期 - サーバーからクライアントへのデータですが、システム ルックアップ テーブルなどのこのデータは変更されません。
- 双方向同期 - 既存のデータはクライアントに同期され、変更されてサーバーに送り返されます。または、クライアントで新しいデータが作成され、新しい注文などに送信されます。
新しいアーキテクチャは次のようになります。
それで-私の質問に行きます-データの同期(一方向および双方向)または同期コードが組み込まれているNuGetパッケージに関して従うべき良い設計パターンを知っている人はいますか? 可能であれば、同期に関して車輪の再発明を避けようとしています。
注: 情報提供のみを目的として、ネイティブ モバイル アプリは Visual Studio 2015 で Xamarin を使用して構築されます。