architecture - 在洋葱型架构中,实体是否应该跨越外层?

标签 architecture entity onion-architecture hexagonal-architecture

我一直在尝试理解这种新型架构,其名称可以是洋葱架构、干净架构、端口和适配器等。

如果我采用端口和适配器的抽象,当我针对特定端口调整应用程序时,我可以从应用程序内部为端口提供一个实体吗?或者我是否总是应该调整实体以适应端口?

示例:

假设我有一个客户实体。我有一个使用我的应用程序的用户界面。我的 UI 通过适配器调用 getCustomerById(123)。反过来,我的适配器将调用我的应用程序,使用注入(inject)的存储库有效地检索客户,并且它将对其执行某种格式化并记录日志等等,一旦客户准备就绪,它就会返回到我的 UI。我的问题是,我的 Customer 对象按原样返回到我的 UI。这意味着我的 UI 引用了我的 Core 项目中的 Customer 类。然后,我的 UI 继续使用该 Customer 对象执行操作,可能会更改其名称等,并最终再次调用适配器来 updateCustomer(customer)。

这样做可以吗?我的 UI 使用应用程序核心中的 Customer 类可以吗?或者我应该将我的 Customer 调整为新的 Customer 对象(例如 UICustomer),并让我的 UI 使用该对象,在适配器级别在 Customer 和 UICustomer 之间来回映射?

最佳答案

很好的问题。我有一个可能有用的例子。 https://bitbucket.org/jeffreypalermo/onion-architecture

对于使用核心域模型对象的简单应用程序来说就可以了。它们被设计为没有令人讨厌的依赖触角,因此它们工作得很好并且非常便携。它们可以跨层传播而不会引起任何问题。

关于architecture - 在洋葱型架构中,实体是否应该跨越外层?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21887157/

相关文章:

entity-framework - 检查约束 Entity Framework

postgresql - 建议的 Golang 架构,用于频繁轮询用户帐户

c++ - 体系结构 x86_64 的 undefined symbol ,链接器命令失败,退出代码为 1

c# - ASP.NET MVC 实体、DTO、业务对象、ViewModels?我该如何管理?

architecture - 洋葱结构与六边形相比

dependency-injection - 统一: Implicit ResolvedParameter for unnamed registrations

asp.net-mvc - 如何在不引入依赖的情况下用 Onion Architecture 实现 UnitOfWork?

c# - 模块化单体中的跨模块通信

java - 应用程序中可以有同一(开放)JPA 实体的多个实例吗?等于不适用于实体实例?

visual-studio-2010 - 我在 VS2010 中找不到模板 ADO.NET 实体数据模型