gpt4 book ai didi

c# - 域服务层的良好命名

转载 作者:太空狗 更新时间:2023-10-29 20:05:13 26 4
gpt4 key购买 nike

关闭。这个问题是opinion-based .它目前不接受答案。












想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文回答问题.

8年前关闭。




Improve this question




抽象的

哪个名字更好?

  • Domain.PersonService
  • DomainServices.PersonService
  • DomainServices.PersonDomainService (考虑一些更长的名字,如 PersonDomainServiceModelDecorator )

  • 或者是其他东西?

    情况

    我们有一个框架,其中每一层都有一些基类。前任。存储库、域服务、UI 等。

    每个逻辑层都有一个名称,用作其命名空间:
  • 包含存储库的数据层的“数据”;前任。 Fx.Data.DbContextRepository
  • 域(非网络)服务层的“服务”;前任。 Fx.Services.CrudService
  • Web UI层的“Web.UI”;前任。 Fx.Web.UI.Controllers.CrudController

  • 对于带有一些额外层的最终项目,我们也遵循相同的规则:
  • “数据”例如。 Project.Data.PersonRepository
  • “服务”例如。 Project.Services.PersonService
  • “Web.UI”例如。 Project.Web.UI.Controllers.PersonController
  • 代码优先实体的“实体”;前任。 Entities.Person
  • 对象模型的“模型”;前任。模型.人.标准,Models.Person.PersonDeleteModel

  • 我的重点是“域服务”层,但也欢迎有关其他层的任何想法。

    我们终于得出结论,“服务”不是“域服务”的合适名称,因为它可能会导致“Web 服务”或“域服务”层之间的歧义。

    现在我们将“Services”命名空间更改为“Domain”或“DomainServices”。但我们还有另一个问题。我们为每个域服务类添加了一个“服务”后缀(例如 PersonService)。现在,拥有“DomainService”后缀(例如 DomainServices.PersonDomainServerDomainServices.DomainPersonService )似乎很难看。

    因此,使用“域”作为命名空间会更漂亮,而类名表明它们是域命名空间下的服务(例如 Domain.PersonService)。

    最佳答案

    我会去两个简单的想法:

  • 尝试定义全名(命名空间+类型名称)而不
    冗余(同名部分 - 域、人员、服务、模型、
    Controller ,... - 不应该出现两次)尽可能
  • 从 .NET 框架本身获得灵感。有more than 40000 classes在那里!打开所有
    .NET Reflector 或 ILSpy 等工具中的程序集并学习
    它仔细。

  • 我会想出这样的东西:
    Domain
    + Person
    + PersonService // Domain service
    Domain.Data
    + PersonRepository
    Domain.ServiceModel // WCF, etc. I chose the same namespace as .NET Framework
    + PersonService // Service implementation, this is really a service so "service" redundancy seems unavoidable here
    Domain.Web.UI
    + PersonController

    好吧,同样的类型名称在层次结构中出现多次,这显然很不方便。嗯,但这就是命名空间(和命名空间别名)也存在的原因。我认为这没什么大不了的。

    关于c# - 域服务层的良好命名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17760154/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com