0

リポジトリのライブラリを使用してデータベースのすべての操作を実行するアプリケーションがあります。このライブラリには多くのメソッドがあり、一部のユーザーにはすべての操作を実行する権限がありますが、そうでないユーザーもいます。

私はクライアントアプリケーションを持っています。それがLAN内のコンピューターにインストールされている場合、このクライアントはリポジトリを直接使用してデータベースに接続します。このように、パフォーマンス上の理由から、クライアントはWCFホストを通過する必要がありません。

アプリケーションがLANの外部のコンピューターにインストールされている場合、アプリケーションはWCFサービスを介して接続し、リポジトリを使用してデータベースに接続します。

私の質問は、ユーザーがリポジトリメソッドを実行する権限を持っているかどうかを確認する方法です。

私は2つの選択肢を考えています。1つは、リポジトリにオブジェクトを作成するときです。オブジェクトは、アプリケーションを起動すると作成され、アプリケーションを閉じると破棄されます。リポジトリを作成すると、すべてのユーザーのすべてのアクセス許可構成が取得されるため、データベースに対して1つのクエリのみを実行します。ただし、アプリケーションが非常に大きい場合やユーザーが多い場合は、大量のメモリを消費する可能性があり、これは良くありません。

もう1つのオプションは、リポジトリ上のメソッドごとに、ユーザーとパスワードの2つの追加の引数を渡すことです。したがって、各メソッドが最初に行うことは、データベースにアクセス許可を照会することです。これにより、メモリの消費量は少なくなりますが、データベースへのクエリが増えます。クエリは非常に単純ですが、リソース(接続)を消費します。

したがって、権限を制御するためのオプションが他にもあるかどうか、または最初のオプションが適切なソリューションであるかどうかを知りたいと思います。

4

1 に答える 1

1

私のアドバイスは、GUIDなどを使用するような2番目の選択肢であるパスワードまたは一意のアクセスキーです。複数のリクエストを処理する単一の永続オブジェクトが必要になります。すべての接続で作成および破棄することは役に立たないようです。単一のオブジェクト、複数の接続、複数のプロジェクト用の複数のキー。オブジェクトのすべてのキーを追跡します。それは、リソースの観点からギブアンドテイクです。

于 2013-03-03T01:52:23.257 に答える