Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何命名静态文件;服务“;以及在mvc解决方案中的位置_C#_Architecture_Asp.net Mvc 5_Data Layers - Fatal编程技术网

C# 如何命名静态文件;服务“;以及在mvc解决方案中的位置

C# 如何命名静态文件;服务“;以及在mvc解决方案中的位置,c#,architecture,asp.net-mvc-5,data-layers,C#,Architecture,Asp.net Mvc 5,Data Layers,我的网站结构如下: 核心-实体框架、上下文、迁移、接口、扩展、枚举 ProjectName.Models-仅限DTO ProjectName.Repositories-仅限存储库 服务-通过ninject与存储库对话实例化的服务,automapper配置 ProjectName.Tests——不言而喻 ProjectName.Web.Customer-客户mvc站点 ProjectName.Web.Admin-管理mvc站点 我的问题: 我应该把下面这样的静态“helper”类放在哪里,我应

我的网站结构如下:

  • 核心-实体框架、上下文、迁移、接口、扩展、枚举
  • ProjectName.Models-仅限DTO
  • ProjectName.Repositories-仅限存储库
  • 服务-通过ninject与存储库对话实例化的服务,automapper配置
  • ProjectName.Tests——不言而喻
  • ProjectName.Web.Customer-客户mvc站点
  • ProjectName.Web.Admin-管理mvc站点
我的问题:

我应该把下面这样的静态“helper”类放在哪里,我应该怎么称呼它们

  • 剃刀解析器
  • 序列化程序/反序列化程序
  • 电子邮件发送者

将它们称为服务并将它们与非静态服务放在一起感觉是错误的,这对其他开发人员来说是不直观的…

将服务放在他们自己的文件夹或核心中


我不会仅仅为静态助手添加另一个项目。

服务在它们自己的文件夹或核心中


我不会仅仅为静态助手添加另一个项目。

与其将所有这些无关的关注点集中在一起,为什么不让它更细粒度呢?像这样:

  • ProjectName.Infrastructure.Serialization
  • ProjectName.Infrastructure.Razor
  • ProjectName.Infrastructure.Email

这样,语义和结构就更好了,功能也就分开了。

与其将所有这些不相关的关注点集中在一起,为什么不让它更细粒度呢?像这样:

  • ProjectName.Infrastructure.Serialization
  • ProjectName.Infrastructure.Razor
  • ProjectName.Infrastructure.Email

这样,语义和结构就更好了,功能也就分开了。

我想谈谈我在你的问题中提到的结构中的一些模糊之处。通过查看您的结构,我假设您正在尝试实现某种类型的-/-/体系结构

如果您分析上述建议的体系结构指南,第一眼就会清楚,您的核心项目不应包含任何基础设施问题,例如您的案例中的实体框架。核心本身应该只包含您的业务/域模型(以及业务规则)和域服务

现在让我们想一想:如果你想了解EF或任何其他基础设施问题,核心测试会是什么样子?通过测试核心,您通常试图一次测试一件事情。。。因此,您不必模拟其余的依赖项

现在准确地回答你的问题,命名事物是非常重要的。我看到一个答案建议您将内容与应用程序的其余部分分开。这本身是好的,但我不推荐它,如果你仅仅为了一些好的实践而使用很多项目,它可能会成为一个问题。我写这篇文章的一个原因就是想一想,为了3种不同的事情,有3个额外的项目,需要额外的时间来编译你的解决方案吗

我对这些基础设施问题的安排建议如下:

  • 创建名为
    ProjectName.Infrastructure的项目

    • 将每个必需的NuGet包/DLL引用添加到项目中
    • 在此项目内创建目录以组织您的服务
  • 根据已创建的目录在此处添加/创建服务的实现

    • 确保每个服务都实现了一个将被注入到使用者类中的接口
    • 一个很好的建议是,根据类名按名称空间分隔这些服务,例如:
      ProjectName.Infrastructure.EmailService
  • 最后一部分是通过NInject将这些基础设施连接在一起


  • 最后一句话:我希望你真的不需要像你写的那样,这些服务在类级别是静态的。如果是这样,您仍然可以通过适当的NInject绑定范围以这种方式绑定它们。

    我想解决我在您的问题中给出的结构中发现的一些模糊之处。通过查看您的结构,我假设您正在尝试实现某种类型的-/-/体系结构

    如果您分析上述建议的体系结构指南,第一眼就会清楚,您的核心项目不应包含任何基础设施问题,例如您的案例中的实体框架。核心本身应该只包含您的业务/域模型(以及业务规则)和域服务

    现在让我们想一想:如果你想了解EF或任何其他基础设施问题,核心测试会是什么样子?通过测试核心,您通常试图一次测试一件事情。。。因此,您不必模拟其余的依赖项

    现在准确地回答你的问题,命名事物是非常重要的。我看到一个答案建议您将内容与应用程序的其余部分分开。这本身是好的,但我不推荐它,如果你仅仅为了一些好的实践而使用很多项目,它可能会成为一个问题。我写这篇文章的一个原因就是想一想,为了3种不同的事情,有3个额外的项目,需要额外的时间来编译你的解决方案吗

    我对这些基础设施问题的安排建议如下:

  • 创建名为
    ProjectName.Infrastructure的项目

    • 将每个必需的NuGet包/DLL引用添加到项目中
    • 在此项目内创建目录以组织您的服务
  • 根据已创建的目录在此处添加/创建服务的实现

    • 确保每个服务都实现了一个将被注入到使用者类中的接口
    • 作为一个