2010-12-27 15 views
0

この時点では、2つのWebアプリケーションがあります(1つのアプリケーションはプロジェクトの管理用のMVC2アプリケーションであり、2つ目はWebサービスを持つアプリケーションです)。両方のアプリケーションはデータベースを処理し、データベースを照会するためにNhibernateを持っていなければなりません。これはいいパターンですか、もし私が何ができますか?nHibernateを使用して異なるアプリケーションからデータベースを照会

編集1

両方のアプリケーションがデータベースに書き込むことができます。私は、データベーストランザクションを処理し、 "Repositorio"という名前のインスタンスを持っているdllプロジェクトを持っています。それにもかかわらず、各アプリケーションにはRepositorio.dllの異なるインスタンスが存在するため、データベースに複数の脅威が存在します。両方のアプリケーションでRepositorio.dllの同じインスタンスを使用するにはどうすればよいですか?

答えて

1

答えは、両方のアプリケーションがデータベースに書き込むことができるかどうかによって異なります。

読み取り専用の場合は、安全だと言います。

私は、サービス指向のアプローチでは、両方のアプリケーションのインターフェイスを提供し、データベースの唯一の所有者であるサービスを作成することをお勧めします。

"サービス指向"は、サービスが分散コンポーネント(SOAPやRESTやRPCなど)でなければならないという意味ではありません。十分に定義されたインタフェースを持つコンポーネントにデータベースアクセスをカプセル化する場合は、両方のアプリケーションでコンポーネントをDLLとして共有することができます。それが両方のアプリケーションに適している場合にのみ、分散コンポーネントにしてください。

+0

両方のアプリケーションがデータベースに書き込むことができます。私は、データベーストランザクションを処理し、 "Repositorio"という名前のインスタンスを持っているdllプロジェクトを持っています。それにもかかわらず、各アプリケーションにはRepositorio.dllの異なるインスタンスが存在するため、データベースに複数の脅威が生じるでしょう。両方のアプリケーションでRepositorio.dllの同じインスタンスを使用するにはどうすればいいですか? – Manuel

+0

トランザクションと分離について心配する必要があります。両方とも同じDLLを持つことができるので、共有します。書き込み操作がシリアライズ可能であることを確認するだけです。 – duffymo

0

両方のアプリケーションがデータベースに書き込んだとしても、それは私にとって完璧にうまくいっています。両方のプロジェクトに冗長コードを書くのを避けるために、すべてのnHibernate関連のものを含むクラスライブラリとして3番目のプロジェクトを作成することをお勧めします。

関連する問題