2

是否可以在 ServiceStack 的服务器方法上利用 async/await?谷歌搜索带来了ServiceStack 的一个分支,它似乎可以解决问题,但它已经几个月没有更新了,并且没有信息是否该代码已合并到当前的官方版本(v3.9.32)中。

我使用 async / await 模式构建了一个简单的服务,它的行为不正确,但我想知道这是否只是一个配置问题。这是代码:

public class PodcastService : Service
{
    public async Task<object> Get(Podcast request)
    {
        var client = new WebClient();
        var data = await client.DownloadStringTaskAsync("http://www.google.fi");

        return new PodcastResponse() { Date = DateTime.Now };
    }
}

这是该方法返回的 JSON:

{"Result":{"__type":"WebApplication2.PodcastResponse, WebApplication2","Date":"2012-12-10T17:18:32.1653985+02:00"},"Id":1,"Status":"RanToCompletion","IsCanceled":false,"IsCompleted":true,"CreationOptions":0,"IsFaulted":false}

为了比较,这是没有任何 async/await 的相同方法:

public class PodcastService : Service
{
    public object Get(Podcast request)
    {
        return new PodcastResponse() { Date = DateTime.Now };
    }
}

结果如下:

{"Date":"2012-12-10T17:20:23.0245677+02:00"}

有任何想法吗?叉子仍然是要走的路还是异步/等待已经在 ServiceStack 中实现但需要一些配置?

4

1 回答 1

3

您可以在此处查看项目状态。异步分支仍处于“执行”阶段。

第一个结果看起来像一个序列化的 Task 对象,所以他们肯定还没有添加异步服务支持。

更新

随着 ServiceStack 的商业化和对 v4 的重大重写,我们可以忘记 async/await 分支。最新的可用版本 v3.9.62 是一个功能冻结版本,因为开发切换到 v4。

于 2012-12-10T15:45:15.260 回答