C# 我应该把接口和实现放在哪里
我有C# 我应该把接口和实现放在哪里,c#,.net,oop,design-patterns,repository-pattern,C#,.net,Oop,Design Patterns,Repository Pattern,我有Domainassembly和SqlServerRepositoryassembly SqlServerRepository程序集在域程序集上有引用,域程序集在其他程序集上没有引用 Domain程序集具有接口IRepository(以及其他用于存储库的接口),因为域逻辑仅与接口类型一起工作,而不考虑具体类型 SqlServerRepository程序集实现接口IRepository(包含在域程序集中) 没关系,我可以模拟IRepository,可以使用OracleRepository实现和其
Domain
assembly和SqlServerRepository
assembly
SqlServerRepository
程序集在域
程序集上有引用,域
程序集在其他程序集上没有引用
Domain
程序集具有接口IRepository
(以及其他用于存储库的接口),因为域逻辑仅与接口类型一起工作,而不考虑具体类型
SqlServerRepository
程序集实现接口IRepository
(包含在域
程序集中)
没关系,我可以模拟IRepository
,可以使用OracleRepository
实现和其他
但我想我有一些架构问题
SqlServerRepository
没有域
程序集就无法工作SqlServerRepository
assembly中,没有SqlServerRepository
assembly,Domain
将无法工作,如果我创建OracleServerRepository
assembly,我也必须使用SqlServerRepository
,因为我将接口放在SqlServerRepository
中,并且域
中,alredy使用它们SqlServerRepository
或域
程序集中Domain
和SqlServerRepository
引用它,但我认为这对我的项目(microservice)来说是开销
那么,我必须做什么呢?存储库接口属于域(或者更确切地说是您的服务所在的位置,但它们通常是域的一部分) 原因是存储库契约是根据域需要的功能创建和驱动的。如果没有域,您将不会有任何存储库 没有域程序集,SqlServerRepository无法工作 对。正如我上面所说的。如果没有域所需的功能,就不会有
SqlServerRepository
我应该在哪里将数据库对象映射到域?在SqlServerRepository
或域
程序集中
在存储库组件中,因为它是特定数据层抽象的实现细节。如果您将它们放在域中,域将被迫了解您正在使用的每个持久层(如oracle、sqlserver、文件或其他)的实现细节
没有任何规定SQL Server和Oracle应该使用相同的数据库模式来持久化信息。表、视图等可能因DB引擎的优缺点而异 存储库接口属于域(或者更确切地说是服务所在的位置,但它们通常是域的一部分) 原因是存储库契约是根据域需要的功能创建和驱动的。如果没有域,您将不会有任何存储库 没有域程序集,SqlServerRepository无法工作 对。正如我上面所说的。如果没有域所需的功能,就不会有
SqlServerRepository
我应该在哪里将数据库对象映射到域?在SqlServerRepository
或域
程序集中
在存储库组件中,因为它是特定数据层抽象的实现细节。如果您将它们放在域中,域将被迫了解您正在使用的每个持久层(如oracle、sqlserver、文件或其他)的实现细节
没有任何规定SQL Server和Oracle应该使用相同的数据库模式来持久化信息。表、视图等可能因DB引擎的优缺点而异 我建议您使用端口和适配器[六边形体系结构]来实现。以下程序集可用于微服务
您可以根据需要模拟MyService程序集中的任何存储库/域。服务消费者可以使用MyService assembly。我建议您使用端口和适配器[Hexagon architecture]来实现。以下程序集可用于微服务
您可以根据需要模拟MyService程序集中的任何存储库/域。服务消费者可以使用MyService assembly。我认为一个普通的项目