【问题标题】:What is the Best place to store constants in n-tiers asp.net App?在 n 层 asp.net App 中存储常量的最佳位置是什么?
【发布时间】:2011-06-02 00:25:40
【问题描述】:

我想知道在我的 n 层应用程序中存储我应该像常量一样使用的枚举的最佳位置是什么。

所以我有一个带有 DAL(连接到数据库)、一个 BLL(业务流程)、一个 Data Transfert 对象“Layer”的应用程序(没有任何方法的类,只有字段,所有其他人都可以访问这个)和带有asp页面的界面层。

我的问题是:我有一个枚举:

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

我可以把这个枚举(以及所有其他枚举)放在哪里才能清理干净?不在数据访问层,接口层看不到结构,不在业务逻辑层,这不是真正的业务。也许在数据传输对象中,但它真的是“传输对象”吗? 我应该再创建一个图层吗?

感谢所有回复!..

【问题讨论】:

  • 编辑:不是结构而是枚举..对不起

标签: c# asp.net architecture tiers


【解决方案1】:

我认为这取决于哪些层将访问此struct

你说它会被DALDTOs 访问。如果被DTOs使用,感觉也会暴露给任何使用DTO层的层。

如果您觉得它不是 BAL 的一部分,请创建一个单独的程序集 (Common) 来共享此类类型并改为引用该程序集。这样可以保持清洁。

【讨论】:

  • 创建一个名为 Common 的项目,您可以在其中保存所有全局共享成员。我完全同意[decyclone]。通过这样做,您可以使用常量和变量来访问应用程序的任何位置、任何层,而无需重新创建所有内容。
  • +1 同意,它将让您更轻松地管理依赖关系和抽象。
  • 好的,所以是一种被所有其他人引用的“横向”层?
【解决方案2】:

听起来这个枚举(以及其他常量)是您域中通用语言的一部分,因此应该在任何地方都可用。理想情况下,构成通用语言的组件将位于它们自己的程序集(它们自己的项目)中,该程序集被领域中的所有其他项目引用,无论层级如何。

根据您的描述,听起来您的 DTO 也是通用语言的一部分。 (将它们视为贫血模型,在具有硬服务边界的域中通常是必需的。)没有任何其他依赖项,这些东西应该构成所有其他项目引用的核心程序集。

【讨论】:

    【解决方案3】:

    我们通常有一个 CompanyName.ProjectName.Core 库项目,我们在其中存储我们的枚举、实用程序、常量等。 此解决方案中包含的几乎每个项目都引用了此 dll。

    【讨论】:

      【解决方案4】:

      我建议使用“横切”层,其中包含可以在结构中的任何层之间共享的代码。这可能是您放置此类东西的地方,以及日志记录、安全性或其他可能需要跨层的东西。

      【讨论】:

        【解决方案5】:

        我将这些类型的东西存储在最符合上下文意义的层中。如果一个枚举或结构公然属于您的应用程序中的特定域,基于其上下文,那么我会将它放在相关层中。但是,如果它最终成为一个可能跨越多个域的领域,那么一定要在自己的层中对其进行打击。请务必以对您的应用程序具有上下文意义的方式来组织它们。

        【讨论】:

          【解决方案6】:

          您所展示的不是结构,而是枚举,我认为它会被所有其他层使用,并将进入您的“传输”层。 (注意:我以前从未听说过传输层)

          【讨论】:

          • 好的,谢谢你提到我我错了我说的是结构,但它是很好的枚举,我编辑我的帖子..谢谢
          【解决方案7】:

          我个人会将其放在业务层中,因为我会将这些枚举与业务层中的其他类一起使用。

          【讨论】:

          • BLL 将是更实用的地方(中心),但这真的很干净吗?枚举并不是真正的业务组件..
          • 是的,我相信这是放置 Enum 的最干净的地方,因为它将用于整个业务级别。这只是我个人的喜好。
          猜你喜欢
          • 2010-12-24
          • 2021-10-17
          • 1970-01-01
          • 2010-12-07
          • 2011-12-08
          • 1970-01-01
          • 2010-10-10
          • 1970-01-01
          相关资源
          最近更新 更多