2012-07-25 3 views
8

マルチユーザ環境の場合: すべてのクライアントが互いの変更を確認する方法を教えてください。これを行う最善の方法は何ですか?すべてのクライアントが中央データベースから最新のデータを持っているC#マルチユーザアプリケーションのテクニック

これまで、私はC#アプリケーションを作成し、それを2つのPCにインストールしました。中央のSQL Expressサーバー(Entity Framework Code FirstでORMとして機能していたクライアントアプリケーション)に接続しました。 クライアント1がレコードをデータベースに追加したとき、これはクライアント2に直接見えませんでした。クライアント2がすべてのデータを再度フェッチした(ハード・リフレッシュ)場合にのみ、変更が表示されました。

今、この「同期」(?)のやり方や解決方法についての解決策を探しています。エンティティフレームワークコードの作業が好きです。まず、これを保つことができればうれしいです。 また、アプリケーションはまだ非常に初期段階です。 中央データベースと複数のクライアントを接続することによって考えましたが、これが良い解決策であるかどうかはわかりません。あなたの提案/ソリューションが、クライアントが接続する中央サーバーアプリケーション(そしてサーバーアプリケーションがデータベース処理を行う場所)を必要とする場合、これは問題ではありません。

可能であれば、最新のデータを常に使用する方法を示す基本的なサンプルソリューションや基本的なコードがあれば、非常に役に立ちます。

同様の質問:

事前に感謝

それはあなたの環境とあなたが管理しているデータとアーキテクチャあなた次第

答えて

2

欲しいです。

クライアントにデータのコピーを持たせることができれば、セントラルサーバーに接続していないときにデータを処理する必要があります。次に、Sync Frameworkを使用できます。

いつものようにセントラルSQLサーバーを持ち、クライアントとの同期にSync Frameworkを使用します。

あなたはなど、異なるクライアントで同じデータに加えられた変更を解決する方法を決定するだろう「プロバイダ」を書きます

あなたは、SQL Expressの(またはおそらくLocalDB(SQLCEの新しい名前)を入れなければならないだろう)をクライアントマシンに追加します。

次に、エンティティフレームワークモデル/コードを使用して、中央データベースではなくローカルデータベースにアクセスします。

http://blogs.msdn.com/b/sync/archive/2008/06/24/sample-sql-express-client-synchronization-using-sync-services-for-ado-net.aspx

は、そうでない場合は、設計といくつかの「ティア」を実施し、インターネット分散/データベース・アーキテクチャ/ SOAを次のようにダウンします。

素敵な自由なリソース:

http://msdn.microsoft.com/en-us/library/ff650706.aspx

http://mtechsoa2011.blogspot.co.uk/2011/04/soa-vs-distributed-internet_27.html

いくつかの便利なブック:

http://www.amazon.co.uk/Service-Oriented-Architecture-Concepts-Technology-Computing/dp/0131858580/ref=sr_1_1?s=books&ie=UTF8&qid=1343295432&sr=1-1

+0

お寄せいただきありがとうございます。個人的には、これは良い働き方のようには感じられません。クライアントアプリケーションは、グリッドとグリッドを検索するためにすべてのデータをロードします。したがって、localDBにはsql(express)サーバーのコピー全体があります。そこに私はすでに限界がある(例えば:localDB対SQL Server対SQL Expressの最大データベースサイト)。その他の提案はありますか? – juFo

1

他のソリューションは、データベースと各プットのための "インターフェース" を作成することですあるクライアントからのデータ操作は、他のクライアントに通知することができます。このようなインターフェイスはWCFによってコールバックで実装できます。 私はアーキテクチャ全体のソリューションのための簡単なコードはありません...あなたがWCFでn層アプリケーションを構築することについてより具体的な質問をするなら、私は手伝ってみます。

関連する問題