首页 > 解决方案 > 如何正确使用 ServiceStack IServiceGateway 方法?

问题描述

IServiceGateway提供两种主要的同步方法来调用服务。

void IServiceGateway.Publish(object requestDto)

T Send<T>(IReturn<T> request)

我知道这Send()允许我使用返回类型,而Publish()没有。现在想象一下,TIReturnVoid应该使用Publish()还是Send()?有什么区别?

谢谢你。

标签: servicestack

解决方案


API 应该在Publish()语义上用于时间解耦的“单向”操作,如“即发即弃”请求。

如何处理它们取决于网关实现,例如,在所有服务客户端中Publish(),将请求 DTO 发送到 ServiceStack 的 /oneway 预定义端点,如果注册了 MQ,则如果没有 MQ,则将其发布到 MQ 而不是执行它注册的行为与调用相同Send(),只是成功的响应将被丢弃。

虽然它通常与IReturnVoid请求一起使用,但它们也可用于普通请求,例如,如果系统支持使用 创建系统作业CreateJob,客户端可以调用Send()如果他们希望立即执行作业并且需要等到它完成,或者他们可以调用Publish()开始长时间运行的作业,他们只是想排队在后台执行,但不需要等待完成的结果。


推荐阅读