C# 在n层asp.net应用程序中存储常量的最佳位置是什么?
我想知道什么是存储枚举的最佳位置,我应该在我的n层应用程序中使用like常量 因此,我有一个带有DAL(连接到数据库)、BLL(业务流程)、数据传输对象“层”(没有任何方法的类,只有字段,其他所有人都可以访问这个类)和带有asp页面的接口层的应用程序 我的问题是:我有一个枚举:C# 在n层asp.net应用程序中存储常量的最佳位置是什么?,c#,asp.net,architecture,tiers,C#,Asp.net,Architecture,Tiers,我想知道什么是存储枚举的最佳位置,我应该在我的n层应用程序中使用like常量 因此,我有一个带有DAL(连接到数据库)、BLL(业务流程)、数据传输对象“层”(没有任何方法的类,只有字段,其他所有人都可以访问这个类)和带有asp页面的接口层的应用程序 我的问题是:我有一个枚举: public enum ID_FOO : uint { ALL = 1, FOOOne= 2, FOOTwo= 3 } 我可以将此枚举(以及所有其他枚举)放在何处进行清理?不在数据访
public enum ID_FOO : uint
{
ALL = 1,
FOOOne= 2,
FOOTwo= 3
}
我可以将此枚举(以及所有其他枚举)放在何处进行清理?不在数据访问层,接口层将看不到结构,不在业务逻辑层,这不是真正的业务。。可能在数据传输对象中,但它真的是“传输对象”吗?
我应该创建另一层吗
谢谢你的回复 这里显示的不是一个结构,而是一个枚举,我假设所有其他层都会使用它,并且会放在“Transfert”层中。(注意:我以前从未听说过transfert层)您显示的不是结构,而是枚举,我假设所有其他层都将使用它,并将放在“transfert”层中。(注意:我以前从未听说过transfert层)我个人会将其放在业务层,因为我会将这些枚举与业务层中的其他类一起使用 我个人会将其放在业务级别,因为我会将这些枚举与业务层中的其他类一起使用 我认为这取决于哪些层将访问这个
struct
您说它将由DAL
和dto
访问。如果由DTO
使用,我觉得它也将暴露于使用DTO
层的任何层
如果您觉得它不是
BAL
的一部分,请创建一个单独的程序集(Common
),以共享此类类型并引用该程序集。这将保持它的干净。我认为这取决于哪些层将访问此结构
您说它将由DAL
和dto
访问。如果由DTO
使用,我觉得它也将暴露于使用DTO
层的任何层
如果您觉得它不是BAL
的一部分,请创建一个单独的程序集(Common
),以共享此类类型并引用该程序集。这将保持它的干净。听起来这个枚举(以及其他常量)是您的域的通用语言的一部分,因此应该在任何地方都可用。理想情况下,组成普适语言的组件将位于它们自己的程序集(它们自己的项目)中,该程序集由域中的所有其他项目引用,而不考虑层
根据您的描述,听起来您的DTO也是无处不在的语言的一部分。(将它们视为贫血模型,在具有硬服务边界的域中经常是必需的。)如果没有任何其他依赖项,这些东西应该组成一个核心程序集,供所有其他项目参考。听起来这个枚举(以及其他常量)是域中普遍存在的语言的一部分,因此,应该在任何地方都可以使用。理想情况下,组成普适语言的组件将位于它们自己的程序集(它们自己的项目)中,该程序集由域中的所有其他项目引用,而不考虑层
根据您的描述,听起来您的DTO也是无处不在的语言的一部分。(将它们视为贫乏的模型,在具有硬服务边界的领域中经常是必需的。)没有任何其他依赖项,这些东西应该组成一个核心组件,供所有其他项目参考。我建议使用一个“横切”层,其中包含可以在结构中的任何层之间共享的代码。这可能是您放置此类内容的地方,以及日志记录、安全性或跨层可能需要的其他内容。我建议使用一个“横切”层,其中包含可以在结构中的任何层之间共享的代码。这可能是您放置此类内容的地方,以及日志记录、安全性或跨层可能需要的其他内容。我们通常有一个CompanyName.ProjectName.Core库项目,在其中存储枚举、实用程序、常量等。
此解决方案中包含的几乎每个项目都会引用此dll。我们通常有一个CompanyName.ProjectName.Core库项目,在其中存储枚举、实用程序、常量等。
此解决方案中包含的几乎每个项目都会引用此dll。我将这些内容存储在最具上下文意义的层中。如果一个enum或struct根据上下文明显地属于应用程序中的某个特定域,那么我将把它放在相关层中。然而,如果它最终成为一个可能跨越多个域的网络,那么一定要在它自己的层中对它进行攻击。请确保以对应用程序具有上下文意义的方式组织它们。我将这些内容存储在最具上下文意义的层中。如果一个enum或struct根据上下文明显地属于应用程序中的某个特定域,那么我将把它放在相关层中。然而,如果它最终成为一个可能跨越多个域的网络,那么一定要在它自己的层中对它进行攻击。请确保以对应用程序有上下文意义的方式组织它们。好的,谢谢你提到我,我错了,我说的是结构,但很好,enum,我编辑了我的帖子。。谢谢,谢谢你提到我,我错了,我说的是结构,但这是很好的枚举,我编辑我的文章。。ThanksEdit:不是结构,而是枚举。。SorryEdit:不是结构,而是枚举。。SorryBLL将是更实用的地方(中心),但这真的干净吗?Enum并不是一个真正的业务组件。是的,我相信这是pl最干净的地方