2011-12-14 7 views
0

私の会社では、古いWinformsアプリケーションをWPF/Silverlightクライアント/サーバーアプリケーションに変換する予定です。WPF、任意の未知のデータベース - クライアント/サーバーまたはデスクトップアプリケーション?

小規模なサーバーアプリケーションを持つという考えではなく、各クライアントの管理コントロールにデータベースを管理するので、データベースのそれぞれにアクセスすることができ、ユーザーのタイプと組み合わせてアクセス可能なデータベースのリストを持つことです。さらに、SQLリクエストがサーバによって処理され、結果を返すのは素晴らしいことです。

アプリはサーバに「登録」されるデータベースの任意のセットで動作するようになっおよびユーザーは、自分の認証権利者にデータベースのリストを取得しています。彼らは、それらのデータベース上で実際に想像できるものすべてを行うことができます。システムは、最大200万行を処理できる必要があります。

データベースは、それらの多くがあることができ、彼らはMS Accessのは、Oracle、SQL Serverのなど、ので、私は前にそれらのすべてを指定するための方法はありませんすることができ、非常に異なっています。さらに、SQLiteキャッシュとの通信が必要です。 私はすでにWinformsアプリケーションからSQLクエリに必要なものをすべて持っています。

私が考えていた:

1)設定ファイルでユーザータイプごとに利用可能なデータベースを指定して、単純なWCFサーバー。サーバーに行うことができ、必要なすべてのSQLクエリを指定し

2)インタフェース。

3)クライアント...

考え方は次のとおりです。 クライアントがサービスを呼び出すことで、テーブル上のSQLクエリ(INSERT、UPDATE、SELECTなど)を実行するためにWCFサービスを使用するクライアント・サーバー・アプリケーションは、メソッド。

サービスは、理想的にはWPFとSilverlightアプリの両方のための消耗品でなければなりません。

これは道のりですか?どのような既存の技術でフォーマット、通信、サービスなどを利用したいのですか?

問題がある場合は、デスクトップアプリケーションに戻ることを検討しますが、次にユーザータイプ/データベースアクセスの問題を緩和する方法各クライアント?

+0

データベースのすべてが同じスキーマを持っていますか?彼らは "ほとんど"似ていますか?それとも、まったく違うの? –

+0

私は私の質問にいくつかの情報を追加しました。基本的に、アプリケーションとしてデータベース間の共通点を見つける方法は、特定の環境や特定のタスクでは機能しないデータモデリングアプリケーションです。 – ps23

答えて

0

私はADO.NETに固執し、DbProviderFactoryクラスで始まります。これにより、ファクトリデザインパターンを使用してプロバイダから提供された情報に基づいて、適切なデータベースアクセスを決定できます。したがって、各データベースタイプとデータベース用の特殊なオブジェクトを作成する代わりに、そのロジックをDbProviderFactoryで抽象化することができます。

はここにいくつかの例を示したリンクです:http://msdn.microsoft.com/en-us/library/wda6c36e(v=VS.100).aspx

+0

ありがとうございます、それはサーバー側にとって十分に簡単です。クライアントからのリクエストとレスポンスのためのコミュニケーションとフォーマットにどのようにアプローチすればよいですか? – ps23

+0

クライアントはデータベースを更新していますか、またはデータベースから値を読み取っていますか?クライアント側のキャッシュで更新をサーバーに戻す必要がありますか? – Josh

+0

元のデータベースは読み取り専用でアクセスされますが、可能なすべての形式で新しい場所にデータを書き込むことができます。 – ps23

関連する問題