寻求有关这是否违反SOA中的服务层设计原则的建议。我的设计很简单 - Endpoint -> Service -> Repository
。 Service层将DTO返回给端点,该端点被转换为响应对象。
目前我的端点和服务层合同如下
端点
public interface Order {
OrderInfoResponse getOrderInfo(String orderId);
OrderStatusResponse isOrderComplete(String orderId);
}
服务
public interface OrderService {
OrderDTO getOrder(String orderId);
boolean getOrderStatus(String orderId);
}
现在,在我的实现中,getOrderStatus
Service方法调用getOrder
方法来查询顺序,然后返回检索到的Order实体的布尔字段。
到目前为止我的推理:
OrderStatusResponse
,它本质上只包含一个布尔标志,将是一个更简单的API,更轻的有线负载,更容易让消费者理解和解析等。getOrderInfo
服务方法及其预期的操作分离。如果有更多要求,专用服务方法将允许更大的灵活性getOrderInfo
服务方法,检索完整的Order DTO并提取必要的布尔字段并构建响应?在这种情况下,根本没有新的服务方法。问题:
感谢您的阅读。
答案 0 :(得分:0)
从您的服务中调用您自己的API是没有问题的 - 如果它对“公共”开放,则它可供您内部使用。关键在于您的服务,了解内部服务结构,您可以采取捷径。例如,在您的情况下,为什么在您只需要订单状态时检索完整订单