Korzystanie z async / await i zwracanie zadania <HttpResponseMessage> Z metod API Web ASP.NET

Mam taką metodę Portable Class Library (PCL):

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

Moja metoda ASP.NET Web Api wygląda tak:

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

Jakie są konsekwencje zwrotu zadania w interfejsie WWW API. Czy to jest dozwolone? Jedynym powodem, dla którego chcę korzystać, jest to, że mogę użyć przenośnej biblioteki klas (PCL). Jaka jest najlepsza praktyka? Czy powinienem mieć synchroniczną wersję mojej metody i wersję asynchroniczną? Jakie są implikacje dotyczące wydajności i czytelności kodu oraz łatwości konserwacji?

Również miałbym taki sam efekt, gdybym wróciłTask<string> zamiastTask<HttpResponseMessage>?

questionAnswers(1)

yourAnswerToTheQuestion