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