ServiceStack并支持服务器上的async / await?

时间:2012-12-10 15:22:31

标签: c# servicestack async-await

是否可以在ServiceStack的服务器方法上利用async / await?谷歌搜索提出了一个fork of 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"}

有什么想法吗? fork仍然是可行的方法,还是已经在ServiceStack中实现了async / await,但是需要一些配置?

1 个答案:

答案 0 :(得分:3)

您可以检查项目状态here。异步分支仍处于“正在进行”阶段。

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

<强>更新

我们可以忘记async / await fork as ServiceStack goes commercial并获得v4的重写。最新的可用版本v3.9.62是feature-freeze version,因为开发切换到v4。