2009-04-09 12 views
1

私は中規模の組織向けにこのHRシステム(デスクトップベース)を設計しています。私はすべてのテーブルを設計しており、VS2008でO/RMを使ってエンティティクラスを生成する予定です(これはOR/Mで初めての作業です;実際これは初めての "大きな"プロジェクトです)。 )私は3つのレイヤー(会社のプログラマーの1人が3つではなく4つまたは5つのレイヤーを示唆した)を使ってアプリケーションを作りたかったのですが、かなり多くのブログエントリを読んだ後、 datacontextがどのように動作するか、LINQ to SQLを使用してレイヤ間でオブジェクトを渡すのが難しいため、LINQ to SQLで簡単に行うことができます。Linq to SQL ORM 3層質問

おそらく、私はVS2008 ORMによって生成されたエンティティクラスを使用し、部分クラスで任意の検証とBussinesロジックを追加します。 しかし、それは2つの層になるかどうか?アプリは10人のユーザーのように使用されるので、2層アプローチは大きな問題ではないと思います。

将来的には、ウェブベースのフロントエンドが開発され、候補者はオンラインで仕事に応募することができます。私は可能な限りスケーラブルなものとして開発したいと思っています。しかし、真実は、私は決断を下すために多くの時間を費やす必要はなく、時間が尽きるということです。

VS2008 ORMによって生成されたエンティティを使用するだけでいいですか?

だから、どんな提案やアイデアでも大歓迎です。ありがとう。

+0

質問の書式設定を試してください。 ATMそれはテキストの1つの大きな壁として表示されます:) – Konstantinos

+0

提案のためのhahaありがとう – jasonco

答えて

1

ここであなたの質問のラインでかなり噛み砕いています。 (具体的な質問はどこかに隠されていますか?)

レイヤーでは、アプリケーション、アプリケーション/ SOA/WCFサーバー、SOAサーバー上に存在するデータレイヤー、データベースなどの物理的境界を意味するものと見なします。

将来のための設計は良いアイデアのように思えるかもしれませんが、ラインの下のどこかのレイヤーが必要であることを確認してください。基本的に、ある時点でインターネット経由でアプリケーションを公開していない場合は、WCF/SOAベースのアプローチは必要ありません。 Webフロントエンドは多くの場合同じ問題を解決できます。

これらのレイヤーはまったく必要ないとは言いませんが、そうでないかもしれません。あなたが本当にしている場合、縫い目はあなたの友人です。あなたはあなたの境界を定義することができる "カットポイント"を作る必要があります。私は、リポジトリパターンを使用して、データアクセス方法を多様化し、NHibernateなどの技術によって保持されるプレーンオブジェクト(POCO)とインターフェイスを使用します。 POCOを使用すると、スタンドアロンまたはメッセージの一部の後の時点で、ワイヤを介してこれらのオブジェクトを簡単に転送することも容易になります。

呼び出されるサービスインターフェイスを作成すると、境界が固まってしまう可能性があります。クロスマシン/物理境界を移動する準備ができたら、サービス実装で境界を作成するだけです。

+0

フォーマットに申し訳ありません。私は今、それがはっきりしていると思う。 – jasonco

+0

ありがとうございます。私は、すべてのことを過剰に工夫してはいけないというあなたの要点を得ると思います。シンプルだがシンプルではないように。 – jasonco

1

テーブルを作成してからドメインを作成し、最後にGUIを作成するのは危険な方法です。 私はORMのエキスパートには熟練していませんが、私が見た生成クラスはクラスよりもデータオブジェクトのように見えます。 GUIですべてのロジックが終了するように別のレイヤーが必要だと言うでしょう)。

+0

実際、少しの研究の後、マイクロソフトは私がここで言及したことを正確に行うことを提案したことを知りました。つまり、エンティティクラスを生成し、エンティティクラスの部分クラスですべてのビジネスロジックと検証を追加します。 http://msdn.microsoft.com/en-us/library/bb882671.aspx – jasonco

+0

ありがとうございました。 – jasonco