質問

私は、ソーシャルワーカーと看護師のチーム(2〜4)が主にプランの形式で患者情報を追跡するために使用される、時々接続されたCRUDアプリケーションに取り組んでいます。このアプリケーションは、私の前に作成されたASP.Netアプリの再視覚化です。 4つのデータベースに約200のテーブルがあります。 WebアプリバージョンはSPに大きく依存していましたが、このバージョンはローカルデータベースを指すwinformアプリなので、SPを続行する理由はありません。また、注目すべき点として、Merge Replicationを使用して同期部分を処理することを計画していましたが、これら2つを一緒に使用するといくつかの問題があるようです。

DALに使用するアプローチを理解しようとしています。私はもともとLINQ to SQLを使用することを計画していましたが、時々接続された設定では動作しないことを示すちょっとした説明を読みました。したがって、私は多数のソリューションを読んで実験しようとしています。 SubSonic、NHibernate、Entity Framework。これは比較的単純なアプリケーションで、「迫り来る」ためです。 verion 3のこの設計の再設計は、「使い捨て」の境界線になる可能性があります。ここでの重点は、デスクトップバージョンをできるだけ早く起動して実行することです。

私がここで求めているのは、これらのテクノロジー(またはリストに掲載していないもの)を使用した経験のある人があなたの苦労して得た知恵を貸してくれることです。あなたの意見では、私が追求する最善のアプローチは何ですか。この種のアプリの作成に関するその他の洞察はありますか?私はこのプログラムのDAL部分に本当に苦労しています。

ありがとう!

役に立ちましたか?

解決

ストアドプロシージャが目的の処理を実行する場合、それらを破棄して再実装することでメリットが得られるとは疑わしいと言わざるを得ません。さらに、マスターデータベースにデータを複製するときにストアドプロシージャまたはLINQ to SQLスタイルのデータアクセスを使用するかどうかは関係ないので、使用するDALが心配であるように思われます。

時々接続されるアプリケーションに関する厄介な部分は、優れた競合解決システムを考え出すことです。私の提案:

  • 常にRowGuidsをテーブルの主キーとして使用します。常に一意にキー設定された新しいレコードがある場合、マージレプリケーションが最適に機能します。
  • マージレプリケーションは非常に多くのことしか行えないことを認識してください。異なるシステムの新しいデータをまとめるのは素晴らしいです。片側の更新も把握できます。新しいレコードと私の新しいレコードが実際に同じであると魔法のように判断することはできません。また、人間の介入や優先ルールなしに両側の変更を実際に処理することもできません。
  • このため、「一致」が必要です。新しいと主張しているが、実際にはそうではないレコードを解決するためのルール。これはあいまいなステップであることに注意してください。一意のキーに依存して、実際に両側で同じエラーを入力することはほとんどありません。これは、インディケーターの多くが同じか類似している場合に重み付き一致を与えることを意味します。
  • 競合を解決し、「新規」を照合するためのユーザーインターフェース。オリジナルのレコードは操作が簡単である必要があります。私は、多くのソース管理システムが使用する古典的な3方向マージに似たものを使用します:レコードA、レコードB、マージされたレコード。ヘッダーボタンをクリックして、マージされたレコードをデフォルトでAまたはBに設定できます。また、フィールドをクリックして各フィールドを選択することもできます。最後に、マージされたレコードのフィールドは編集用に開かれています。Aおよび Bから住所の一部(たとえば)を取得する必要がある場合があるためです。

これらのいずれもごくわずかなデータアクセスレイヤーに影響を与えません:これはすべて、DALよりも低いレベル(データベース自体によって提供されるマージレプリケーション)または高いレベル(解決のためのビジネスルールによって提供される競合解決)です。 。

他のヒント

dbシステムをローカルにインストールできる場合は、使い慣れたものを探してください。私が思う最大の問題は、同期とマージの部分です。いくつかの可能性を考えなければなりません:サーバー上で他の誰かが削除したものを変更した。誰が決めるのですか?

自分でSyncフレームワークを使用したことはなく、記事を読んでください。しかし、これにより、強固な基盤が構築される可能性があります。しかし、データアクセスを使用するたびに、ビジネスロジックのソリューションはおそらくはるかに大きな影響を与えるでしょう...

Microsoftが2004年にリリースしたissueVisionというサンプルアプリがあります。
http://windowsclient.net/downloads/folders/starterkits/entry1268.aspx

joelonsoftware.comの古いスレッドにリンクが見つかりました。 http://discuss.joelonsoftware.com/default.asp?joel.3.25830。 10

その他のアイデア...
モバイルブロードバンドはどうですか?明日は2枚の3Gセルラーカードが機能し、大規模なページ/グラフィックを変更する必要はありません。

フィールドで使用されるExcelスプレッドシート。データをアプリケーションにインポートするDTSまたはSSIS。 「より良い」ソリューションが作成されます。

がんばって!

SPの場合、ストアドプロシージャを意味する場合...ストアドプロシージャから離れようとすることの理由を理解していない。それらは高速で、証明されており、既にあなたのために書かれている(すなわちテストされている)ことを考慮してください。

確かに、オリジナルを模倣するアプリを作成している場合、可能な限りオリジナルの(動作中の)コードベースを保持することには明確なメリットがあります-少なくとも速度は遅くなります。

dbのローカルコピーをインストールし、最後に接続された期間以降に影響を受けたすべてのレコードを、接続されたときにマスターdbにプッシュしてみます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top