10

私はこのようなポータブルクラスライブラリ(PCL)メソッドを持っています:

public async Task<string> GetLineStatuses()
{
    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
    using (HttpWebResponse response = (HttpWebResponse)await request.GetResponseAsync())
    {
        return response.GetResponseStream().ReadAllText();
    }
}

私のASP.NETWebApiメソッドは次のようになります。

public async Task<HttpResponseMessage> Get()
{
    HttpResponseMessage response = new HttpResponseMessage();
    string statuses = await service.GetStatuses();
    response.Content = new StringContent(statuses);
    return response;
}

WebAPIでタスクを返すことの意味は何ですか。これは許可されていますか?私がawaitを使用したい唯一の理由は、Portable Class Library(PCL)を使用できるようにするためです。ベストプラクティスは何ですか?メソッドの同期バージョンと非同期バージョンが必要ですか?パフォーマンスとコードの可読性および保守性への影響は何ですか?

また、戻った場合でも同じ効果がありますTask<string>Task<HttpResponseMessage>

4

2 に答える 2

5

ASP.NETでは、非同期と待機は完全に受け入れられます。これがScottHandselmanのデモビデオです:http ://www.asp.net/vnext/overview/aspnet/async-and-await

「また、戻った場合でも同じ効果がありますTask<string>Task<HttpResponseMessage>?」

これが何を意味するのかよくわかりません。タスクはオブジェクトのコンテナのようなものなので、aTask<string>には文字列の結果が含まれ、aTask<HttpResponseMessage>にはHttpResponseMessageの結果が含まれます...それはどういう意味ですか?どちらの方法でも完全に受け入れられると思います。文字列だけが必要な場合は、それを使用してください。必要以上に返品しても意味がありません。

于 2012-12-28T14:19:22.557 に答える