オンライン注文ポータルをローカルDBと同期する
質問
したがって、ローカル(顧客サイト)でホストされたカスタムPOSシステムを構築しています。すべての.NET、C#、およびSQL Server。
要件の1つは、システムで注文をインターネット経由でも取得できることです。 さまざまな理由(接続の信頼性/速度、バックアップ、安定性、メンテナンスなど)のために、Webポータルは標準的なWebホスティング会社とともにオフサイトでホストされます。
製品の詳細はローカルDBにあるため、何らかの方法で外部WebサイトDBをこのデータと同期する必要があります。明らかに安全であり、帯域幅が重すぎないようにする必要があります。
ローカルDBの外部への露出を最小限に抑えるソリューションを思い付きました:
- ウェブアプリはローカルアプリからはアクセスできません。
- データを移動できる唯一の方法は、ローカルアプリからWebアプリに送信されるプッシュです。
- ウェブアプリでできることは、新しい注文が行われたという通知をローカルデータベースに送信することだけです。ローカルアプリは外部アプリに接続し、注文の詳細を取得します。
したがって、Webサービスを使用して、addProduct(id、blah blah blah)のようなWebアプリで基本的なアクションを定義するだけのようなデザインを考えていました
ただし、製品をローカルアプリから削除しても、外部アプリが一時的に利用できない場合など、同期を保つためのルーチンを作成する必要があります...
これは合理的なアプローチですか、それともより良い方法がありますか?
解決
これは、SOAが私に当てはまると思われる場合です。 WCFを使用してPOSアプリケーションから特定の機能を公開することを検討します。これには、少なくとも次のことが必要です。
- Webサイトで機能の一部を複製する代わりに、POSシステムの機能を再利用できます
- たとえば、MSMQバインディングを使用すると、切断された状況でも機能できます
- WCFには優れたセキュリティメカニズム、トランザクションサポートなどがあります...
この方法では、POSとWebサイトの間で1回限りのカップリングを行う代わりに、POSシステムに多くの価値を追加することになります。
WCFの詳細については、 WCFサービスのプログラミングをお勧めします。 Lowy
他のヒント
実際には直接あなたの質問に対する答えではありません... 2つのサイト間でVPNトンネルを確立しようとします。できない場合は、SSHトンネルを試して使用してください。
セキュリティが優れているだけでなく、VPNが私の経験にあると、以前はあまりにも安全ではなかったものを検討する作業が必要になるため、さらに多くのオプションが開きます。
@olle これは有望に見えます。 1つの問題は、接続のオンラインポータルとローカルアプリの信頼性が低いことです。ただし、リンクがダウンした場合でも注文を受け付けたいと考えています。 そのため、webappでWCFを使用してサーバーからデータを読み取り、ローカルテーブルにキャッシュする予定です。 Webアプリは、WCF呼び出しが短時間で戻らない場合、キャッシュされたテーブルからコンテンツを提供する中間層を通じてデータを要求します。正常に戻った場合、キャッシュは消去され、結果に置き換えられます。 計画のように聞こえますか?