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}

比較のために、非同期/待機なしの同じメソッドを次に示します。

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

結果は次のとおりです。

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

何か案は?フォークはまだ道のりですか、それともasync / awaitはすでにServiceStackに実装されていますが、いくつかの構成が必要ですか?

4

1 に答える 1

3

ここでプロジェクトのステータスを確認できます。非同期ブランチはまだ「実行中」フェーズにあります。

最初の結果はシリアル化されたタスクオブジェクトのように見えるため、非同期サービスのサポートはまだ追加されていません。

アップデート

ServiceStackが商用化され、v4の大幅な書き換えが行われるため、async/awaitフォークを忘れることができます。利用可能な最新バージョンのv3.9.62は、開発がv4に切り替わる際の機能フリーズバージョンです。

于 2012-12-10T15:45:15.260 に答える