5

私たちの会社には、ここ米国とカナダの一部で発生するすべての壊滅的な出来事に人々がいます。一例は、イベント直後のカトリーナでかなり流行していたことです。

ASP.NETまたはWPFのいずれかのフィールドでの仕事を改善するためのアプリケーションを構築しており、切断要件により、それがWPFアプリケーションになると確信しています。私たちの従業員は、仕事を作成し、すべての保険と測定データを提供し、インターネットが利用可能かどうかにかかわらず、データベースに保存することができる必要があります。

私たちが頭を悩ませようとしている問題は、壊滅的なイベントが発生したときに、インターネットが利用できない場合でも、従業員が新しいアプリケーションを使用できるようにする必要があるということです。(彼らはカトリーナで3日間オフラインでした)

他の誰かが、このような要件や、バックエンドサービスやデータベースに接続されているかのようにデータを保存しながら、フットプリントの小さいデバイスで機能する方法についての提案に対処する必要がありましたか?また、これにもセキュリティを組み込む必要があり、入力されたデータが問題なく接続されたデータベースに読み込まれるように十分に実行する必要があります。

私たちの長期的な目標は、ラップトップだけでなく、AndroidおよびIPadタブレットデバイスにもこのアプリケーションを提供することです。ASP.NETに対する私たちの最初の望みは、タブレット環境への即時のアプリケーションを提供することでした。彼らが持っている古いアプリケーションでは、ローカルサーバーを実行し、タブレットでリモート接続を実行し、ターミナルサーバーを介してアプリケーションを実行します。きれいではありません。きれいではありません。

これは主観的ではない深刻な質問だと思いますので、削除されないことを願っています。

サーバー側の現在のアーキテクチャは、リポジトリパターン、複合データ転送オブジェクトを返すCRUDリクエストを満たすWCFサービス、およびクライアントが使用するプロキシを備えたEntityFrameworkです。

他の開発者の意見やこのデザインパズルを聞くことに興味があります。

ディスカッションに追加された追加情報

たくさんの良い情報が提供されました!!! 確かにMicrosoftSyncを見る必要があります。切断されたデータベースの場合、初期データベースにはリストテーブル(列挙)のみを配置します。ジョブと、必要に応じてドライブックと呼ばれるアイテムが、支援しているクライアントごとに追加されます。(家を掃除して乾かすまでにインターネットが戻ってくることを願っていますが)これらは、安定したリンクができたらホストに戻されるテーブルです。カトリーナの場合、私たちはオフィスのインターネット接続も失いました。これは、オフィスが何日も通信の救済を提供しなかったことを意味します。

昨夜、私たちのクライアントプロキシがすべてが機能するための鍵であることに気づきました。クライアントは、オンラインまたはオフラインであることに気づかず、同期プロセスをそのライブラリ内に残します。今日話しているデータの量を発見しています。また、ASP.NETはありふれたものでしたが、シッククライアント(実際にはXAMLを使用したWPF)が最終的に最終状態になる可能性があることを明確にしておきたいと思います。

今-複数の更新のため。切り離された仕事は、単一のフランチャイズによって個々の家に行きます。実際、私たちのホームオフィスは特定のフランチャイズを特定のイベントに派遣しています。したがって、複数の人がレコードを更新する問題が発生する可能性は低くなります。その理由は、彼らが各仕事(個人の自宅/オフィス/ビジネス)のレコードを作成しており、1つのフランチャイズだけがそれを処理するためです。もちろん、これは、それらが数日間切断された場合、ジョブを作成するデバイス(誰が、どこで、状態、保険会社などの記録)もジョブを知っている唯一のデバイスであることを意味します。しかし、それは一緒に暮らすことができます。実際、ハブ上のフランチャイズデバイスを同期する機能を備えている可能性があります。

切断された環境をどのように実装したかについての追加の話を聞くのを楽しみにしています。

ありがとう!!!

マイクロソフトの新技術を見る

TechEd 2012のビデオを見るように指示され、答えがあるのではないかと思いました。話は、切断された動作のために2つのライブラリとともにASP.NETとMVC4を使用することについてでした。最初はいいなと思いましたが、それが続くとかなり心配になりました。

まず、切断されたI / OをサポートするためにJavaScriptバックエンドを使用しても、信頼性は得られません。コンパイラーの人(そして2つの解釈言語を書いた人)として、私は解釈的なjavascriptに依存する重要なビジネスモデルを持つのが本当に好きではありません。そして、そのスクリプト!それは私かもしれませんが、それは私を震えさせます。

次に、ViewModelが単なるjavascriptとして存在する「素晴らしい」(???)プログラミングモデルを示します。私は、メモ帳で記述できるアプリケーション(asp.netおよびjavascript)を気にしません。

asp愛好家には不快感はありませんが、構文的にタイプチェックされたよく書かれたC#プログラムは、クラスの名前空間がクロスチェックの手段なしで適切にタイプされているという希望と祈りを込めて書かれたものよりもソフトウェアに対する自信があります。名前が入れ替わった巨大な名前空間になってしまったバグを探すために、何時間もデバッグを行ってきました。私は自分のグループの他の上級開発者に思いを馳せ、このテクノロジーについて全員が合意しています。

しかし、私たちは見続けます。(これは質問というよりは日記になりつつあると思います):)

4

3 に答える 3

2

MicrosoftSyncFrameworkの完璧な例のように見えます

http://msdn.microsoft.com/en-us/sync/bb736753.aspx

任意のデータタイプ、任意のデータストア、任意の転送プロトコル、および任意のネットワークトポロジをサポートする、アプリケーション、サービス、およびデバイスのコラボレーションとオフラインアクセスを可能にする包括的な同期プラットフォーム。

于 2012-06-11T22:17:32.780 に答える
1

特定のニーズに合わせて軽量のフレームワークを構築する方が、既存のフレームワークを使用するよりも有益であることがよくあります。ただし、その決定を行う前に、常に利用可能なものを確認し、長所と短所を比較検討してください。

私はMicrosoftSyncFrameworkを使用していませんが、最初に調査するのは良いことのようです。Sql Server Standard(またはExpressバージョン以外のバージョン)を使用している場合は、レプリケーションもオプションになる可能性があります。

独自のソリューションを開発する場合は、同期を維持する必要があるすべてのテーブルに、lastupdatedフィールドとdateaddedフィールドを必ず配置してください。シナリオが並行性の問題に悩まされるように「聞こえる」わけではありません(つまり、人物AとBの両方が同時にフィールドを変更した場合、どちらが勝ちますか?)。その場合、独自の軽量ソリューションの開発は非常に簡単です。

ジェレミーが指摘したように、変更を取得する方法が必要になります。Webサービスの使用に加えて、いくつかの点でWebサービスに類似したWCFを使用することもできます。しかし、私の個人的な偏見は、インターネットを介してリモートでSQLサーバーにアクセスすることです。このソリューションの欠点はセキュリティ上の懸念が追加されることですが、利点は開発のオーバーヘッドが減少することです(つまり、現在の開発がより速く/より簡単になり、長期にわたるメンテナンスが少なくなります)。また、直接SQLソリューションは、これが内部アプリケーションであることも前提としています...すべての開発を担当し、データへのアクセスを必要とし、この方法でのアクセスを許可されないサードパーティとは連携していません。 。

于 2012-06-11T23:00:39.400 に答える
1

完全な答えではありませんが、コメントするには多すぎます。

私は2つのアプリを持っています。1つは一方向に同期し、もう1つは双方向に同期します。

切断された操作のためにクライアントに一方向の同期を行います。サーバーの完全なSQLServerとクライアントのCompactEdition。TimeStampは、同期する必要のある行を見つけるための機能です。また、最大のテーブルのいくつかは必須ではないため、データベース全体をコピーしません。一般的な使用法は、ユーザーが同期したい識別されたレコードにマークを付けることです。

synchが、Jakubに必要な+1を実行する場合。私には、サイズとセキュリティの両方に基づいてMSSQL全体を同期するオプションがありません。

双方向で同期する別の小さなアプリケーションがありますが、この場合、リージョンがあり、更新はリージョン内にのみあります。したがって、リージョンはデータのみを同期し、切断モードでは新しいレコードのみを追加できます。既存のレコードへの更新は、接続モードで実行する必要があります。それは管理可能でした。その場合、マスターにはMSSQLを使用し、クライアントにはXMLを使用しました。

ニュースはありませんが、生の同期の難しい部分は、2つのパーティが同じレコードを追加または改訂した可能性があることです。

于 2012-06-11T23:20:34.870 に答える