1

n 層アプリケーションで定数のように使用する必要がある列挙型を格納するのに最適な場所はどこでしょうか。

したがって、DAL(データベースへの接続)、BLL(ビジネスプロセス)、データ転送オブジェクト「レイヤー」(メソッドを持たないクラスでフィールドのみ、これは他のすべてのクラスから到達可能)、およびインターフェイスレイヤーを備えたアプリケーションがありますaspページで。

私の質問は: 私は列挙型を持っています:

 public enum ID_FOO : uint
 {
     ALL = 1,
     FOOOne= 2,
     FOOTwo= 3
 }

この列挙型 (および他のすべて) をきれいにするためにどこに置くことができますか? データアクセスレイヤーではなく、インターフェイスレイヤーは構造体を認識しません。ビジネスロジックレイヤーではありません。これは実際にはビジネスではありません..おそらくデータ転送オブジェクトにありますが、それは本当に「転送オブジェクト」ですか? 別のレイヤーを作成する必要がありますか??

すべての応答をありがとう!.

4

7 に答える 7

7

どのレイヤーがこれにアクセスするかによると思いますstruct

と によってアクセスされると言いDALますDTOs。で使用するDTOsと、レイヤーを使用するレイヤーにもさらされる気がしますDTO

の一部ではないと思われる場合は、別BALのアセンブリ ( Common) を作成して、代わりにそのような型とそのアセンブリへの参照を共有します。これできれいに保てます。

于 2010-12-31T14:28:48.730 に答える
2

通常、列挙型、ユーティリティ、定数などを格納する CompanyName.ProjectName.Core ライブラリ プロジェクトがあります。この dll は、このソリューションに含まれるほぼすべてのプロジェクトで参照されています。

于 2010-12-31T14:59:26.320 に答える
2

この列挙型 (および他の定数) は、ドメインのユビキタス言語の一部であるため、どこでも使用できるはずです。理想的には、ユビキタス言語を構成するコンポーネントは、層に関係なく、ドメイン内の他のすべてのプロジェクトによって参照される独自のアセンブリ (独自のプロジェクト) に含まれます。

あなたの説明に基づいて、あなたの DTO もユビキタス言語の一部であるように思えます。(これらは貧弱なモデルと考えてください。厳密なサービス境界を持つドメインで必要になることがよくあります。) 他の依存関係がなければ、これらは他のすべてのプロジェクトが参照するコア アセンブリを構成する必要があります。

于 2010-12-31T14:29:20.423 に答える
1

このようなものは、文脈上最も意味のあるレイヤーに保存します。列挙型または構造体が明らかにアプリケーションの特定のドメインに属している場合、そのコンテキストに基づいて、関連するレイヤーに配置します。ただし、複数のドメインにまたがる可能性があるものになった場合は、必ず独自のレイヤーで攻撃してください。アプリケーションにとって文脈的に意味のある方法でそれらをすべて整理してください。

于 2010-12-31T15:01:39.357 に答える
1

構造内の任意のレイヤー間で共有できるコードを含む「横断的な」レイヤーをお勧めします。これは、ロギング、セキュリティ、またはレイヤー全体で必要になる可能性のあるその他のものとともに、この種のものを置く場所になる可能性があります。

于 2010-12-31T14:30:08.703 に答える
0

あなたが示しているのは構造体ではなく、他のすべてのレイヤーで使用され、「転送」レイヤーに入る列挙型です。(注:転送レイヤーについて聞いたことがありません)

于 2010-12-31T14:27:10.493 に答える
0

ビジネス層の他のクラスでこれらの列挙型を使用するため、個人的にはこれをビジネス レベルに配置します。

于 2010-12-31T14:28:00.373 に答える