【发布时间】:2019-01-22 13:04:25
【问题描述】:
端口和适配器架构旨在构建解耦代码。 Domain 层不直接依赖于 Infrastructure 层,而是依赖于端口(接口),端口的实现在 Infrastructure 层,对吧?
我的文件夹结构如下:
我的 UI 项目
应用程序核心项目,包含应用程序服务、域服务和域模型。
端口项目:它包含严格的接口。
基础设施项目,我在其中有一个持久性文件夹。
交付机制可以切换(从控制台应用程序到 Web 应用程序...),Core 仍然可以正常工作。
对于基础架构也是如此,我可以使用一次实体框架,然后切换到 dapper,而不会导致核心发生变化。
到目前为止一切都很好,还是我错过了一些东西,或者我错过了对架构的基本理解?
现在代码明智:
如果我有一个控制台应用程序,我必须在其中键入命令并创建一个客户。
Core 项目中的应用程序服务中的一个类。它使用依赖注入来访问 IPersistence 的实现。
public class AddNewCustomer
{
private readonly IPersistence _persistence;
public AddNewCustomer(IPersistence persistence)
{
_persistence = persistence;
}
public bool addToDb(customer customer)
{
return _persistence.add(customer);
}
}
port 项目中的接口。
public interface IPersistence
{
bool add(Customer customer);
}
接口项目中的实现。
public class Persistence: IPersistence
{
public bool add(customer customer)
{
//inserts into DB
}
}
端口项目是否应该严格关注接口? 您如何构建(文件夹结构)您的端口和适配器项目?
【问题讨论】:
-
我建议你阅读this eBook,关于架构的部分。
标签: c# dependency-injection .net-core hexagonal-architecture