作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下服务
public class AppService : AsyncServiceBase<EvaluateStock>
{
public IBus Bus { get; set; }
public override object ExecuteAsync(EvaluateStock request)
{
// this will block the incoming http request
// unitl task is completed
// long computation
// Bus.Publish(result)
}
}
POST
http://srv1/app/json/asynconeway/EvaluateStock
最佳答案
AsyncServiceBase已被弃用为 ExecuteAsync现在在 ServiceBase 中,这是在向 发出请求时调用的内容/asynconeway/XXX 预定义的端点。
而不是覆盖 执行异步 推荐的方法是实现 IMessageFactory如果 IMessageFactory
会被调用已在 AppHost IOC 中注册。如果 IMessageFactory 未注册,则它只是被执行同步 - 此时如果您仍然希望它非阻塞,您将覆盖它。 ExecuteAsync 的实现位于:
// Persists the request into the registered message queue if configured,
// otherwise calls Execute() to handle the request immediately.
//
// IAsyncService.ExecuteAsync() will be used instead of IService.Execute() for
// EndpointAttributes.AsyncOneWay requests
public virtual object ExecuteAsync(TRequest request)
{
if (MessageFactory == null)
{
return Execute(request);
}
BeforeEachRequest(request);
//Capture and persist this async request on this Services 'In Queue'
//for execution after this request has been completed
using (var producer = MessageFactory.CreateMessageProducer()) {
producer.Publish(request);
}
return ServiceUtils.CreateResponseDto(request);
}
IHttpAsyncHandler
上运行 ServiceStack并且已经有一个功能性的 alpha 版本可供您尝试:
ServiceStack-v4.00-alpha.zip
Task<>
作为服务的返回类型。您只需要注册
Task<> plugin .要查看完整示例,请查看
this integration test .
关于servicestack - 使用 ServiceStack 的 AsyncServiceBase 开火即忘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11124091/
我是一名优秀的程序员,十分优秀!