【发布时间】:2018-06-09 04:30:28
【问题描述】:
就这是否违反 SOA 中的服务层设计原则寻求建议。我的设计很简单-Endpoint -> Service -> Repository。服务层返回一个 DTO 到端点,该端点被翻译成响应对象。
目前我的端点和服务层合同如下
端点
public interface Order {
OrderInfoResponse getOrderInfo(String orderId);
OrderStatusResponse isOrderComplete(String orderId);
}
服务
public interface OrderService {
OrderDTO getOrder(String orderId);
boolean getOrderStatus(String orderId);
}
现在在我的实现中,getOrderStatusService 方法调用getOrder 方法来查询订单,然后返回检索到的订单实体的布尔字段。
到目前为止我的推理:
- 为什么我有一个端点来检索状态?
- 我要求我的应用程序仅公开订单状态。我想,让端点返回一个“轻量级”对象-
OrderStatusResponse,它本质上只包含一个布尔标志,这将是一个更简单的 API,更轻的网络负载,更容易让消费者理解和解析,等等。李>
- 我要求我的应用程序仅公开订单状态。我想,让端点返回一个“轻量级”对象-
- 一个单独的服务方法将我的端点与现有的
getOrderInfo服务方法和它的预期操作分离。如果有更多需求,专用服务方法将提供更大的灵活性 - 与上述观点相反,我的端点不能使用现有的
getOrderInfo服务方法,检索完整的订单 DTO 并提取必要的布尔字段并构建响应吗?在那种情况下,根本就没有新的服务方法。
问题:
- [MAIN Q] 是否可以在同一个服务方法中调用另一个服务方法 服务等级?
- 如果不是,那么正确的方法是什么?
- 我的推理有缺陷吗?
感谢您的阅读。
【问题讨论】: