2011-01-25 5 views
1

こんにちは 私は最初のnhibernateプロジェクトを作りたいと思います。 強力なormマッピングを持たない古いデータが関連付けられたwinformプロジェクトからの移行です。 プロジェクトはかなり大きいので、最初から良い建築をしたいと思っています。nhibernateのアーキテクチャ

私はいくつかの層があります

  • リポジトリ:NHibernateの
  • モデルからセッションの作成:基本的には、データベース内の同じ名前のゲッター/セッターのプロパティで構成されて、Beanオブジェクトを

しかし、私はいくつかのアドバイスが必要でしょう、操作をどのように扱いますか? コードからnhibernateに直接アクセスする必要があるアイテムを作成したいのですか?ビジネスロジックレイヤーを作成する必要がありますか?

基本的に私はビジネス層のための単純なアーキテクチャを発見しました。 http://www.codeproject.com/KB/architecture/NHibernateArchitecture.aspx あなたの気持ちは何ですか?

もう1つの質問ですが、検証が必要なプログラム(メガネドメイン)はどこですか? winformプロジェクトやビジネスレイヤーでは?

答えて

4

それは言うと、プロジェクトとその実際の問題を見ることなく有益なアドバイスを与えることは難しいです。それは、例えばクライアント - サーバーアーキテクチャですか? 「かなり大きい」とはどういう意味ですか?すべてに合ったルールを持つプロジェクトは多すぎます。一般

:ほとんどの場合

  • 、ビジネス層を持っていることは非常に便利です。
  • 検証はビジネスレイヤーにする必要があります。 NHibernateのバリデーションやその他のバリデーションフレームワークもあり、宣言的なバリデーションが可能です。

NHから開始するときに私が目にする最も一般的な間違いは、持続性の無知を理解していないということです。つまり、データベースやNHにアクセスせずにビジネスロジックを作成する必要があります。エンティティに変更が加えられ、明示的にデータベースに適用されるまで「一時的」ではなく、トランザクションがコミットされるときに暗黙的に格納されます。これはコードに大きな影響を与えます。多くの場合、「店舗」や「更新」などはありません。

+0

非常に大きいということは、5人の開発者のチームが潜在的に発展することを意味します。彼らは複数のプロジェクトに取り組んでいますが、私は毎年、2人の常勤がプロジェクトに取り組んでいると推測しています。それはメガネの売り手のためのソフトウェアです。我々は2つのレイヤーしか持たない。 1つはIHM用、もう1つはDataAccess用であり、より多くのレイヤーを分割することはできません。主に基本的なCRUDロジックまたは特定のSELECTまたはUPDATE(例:SELECT * FROMテーブルINNER JOINテーブル2など)になります。構造は複雑ではありません。しかし、複雑なロジックがあります。例:グラスの補正にAddition> 0がある場合、これはグラスの特殊なタイプ(プログレッシブ)です –

+0

問題の例。私たちは非常に複雑な形をしており、売り上げのすべてのアイテム(眼鏡やレンズのすべての部分)を修正などで選択することができます。これはタブ付きのフォームで、各タブは製品の一種です。いくつかのオプションをクリックすると、いくつかのコントロールが消滅します。 –

+0

を維持することは難しく、最後の答えはクライアントサーバーアーキテクチャです。あなたの例では、アイテムを作成するときに、winformモジュールにフィールドが設定されていますか(例:var item = new Item(); item.prop1 = ..; item.prop2 = ...; Item.Add(アイテム);)? (例:Item.AddNew(prop1、prop2); AddNewには前のコードがあります)。 –

1

SharpArchitectureを見てください。 NHibernateのための非常に良いフレームワークです。すべてを結ぶ方法に関する非常に良い例。

http://www.sharparchitecture.net/

+0

わかりませんが、ASP.net用に設計されているようです。私は質問にASPとの関係を見ることはできません。 –

+0

メインプロジェクトは完全なwinformプロジェクトです –

関連する問題