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站点
- 剃刀解析器
- 序列化程序/反序列化程序
- 电子邮件发送者
将它们称为服务并将它们与非静态服务放在一起感觉是错误的,这对其他开发人员来说是不直观的…将服务放在他们自己的文件夹或核心中
我不会仅仅为静态助手添加另一个项目。服务在它们自己的文件夹或核心中
我不会仅仅为静态助手添加另一个项目。与其将所有这些无关的关注点集中在一起,为什么不让它更细粒度呢?像这样:
- 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绑定范围以这种方式绑定它们。我想解决我在您的问题中给出的结构中发现的一些模糊之处。通过查看您的结构,我假设您正在尝试实现某种类型的-/-/体系结构 如果您分析上述建议的体系结构指南,第一眼就会清楚,您的核心项目不应包含任何基础设施问题,例如您的案例中的实体框架。核心本身应该只包含您的业务/域模型(以及业务规则)和域服务 现在让我们想一想:如果你想了解EF或任何其他基础设施问题,核心测试会是什么样子?通过测试核心,您通常试图一次测试一件事情。。。因此,您不必模拟其余的依赖项 现在准确地回答你的问题,命名事物是非常重要的。我看到一个答案建议您将内容与应用程序的其余部分分开。这本身是好的,但我不推荐它,如果你仅仅为了一些好的实践而使用很多项目,它可能会成为一个问题。我写这篇文章的一个原因就是想一想,为了3种不同的事情,有3个额外的项目,需要额外的时间来编译你的解决方案吗 我对这些基础设施问题的安排建议如下:
ProjectName.Infrastructure的项目
- 将每个必需的NuGet包/DLL引用添加到项目中
- 在此项目内创建目录以组织您的服务
- 确保每个服务都实现了一个将被注入到使用者类中的接口
- 作为一个