L'utilisation correcte de l'attendent async en webapi

J'ai un WebApi que pour chaque requête entrante, les appels de séparer les 2 webservices, effectue un post-traitement et renvoie les résultats.

Le premier webservice appel est mis en cache localement pendant 1 heure, et les données en ce qui détermine la requête de la 2ème webservice. La 2ème webservice est appelée sur chaque demande entrante. Après que la 2e demande est faite, chaque résultat est traitée avec une logique d'entreprise et renvoyé à la réponse du client.

L'appel à la 2ème webservice ne peut pas être asynchrone, car c'est à l'aide d'un 3ème partie dll qui ne permet pas le mot clé await. Ce que j'ai fait, est enveloppé le 2ème appel webservice et de post-traitement dans une fonction async, qui est appelée à partir du contrôleur.

///api/controller/news?key=a&state=b
public async Task<HttpResponseMessage> GetNews(string key, string state)
    {
         //call to first webservice if not in cache
         if (JsonConfig != null && JsonConfig.Configuration.NewsQuery.ContainsKey(key))
        { 
            var results = await SearchProxyProvider.Search(filters.All, filters.Any, filters.None, filters.Sort, 100, 0, true, state, true);
            int totalCount = results.TotalCount;

            return Request.CreateResponse(HttpStatusCode.OK, results);
        }
    }


//Helper class method
public async Task<ItemCollection<Item>> Search(List<FieldValuePair> allFilters, List<FieldValuePair> anyFilters, List<FieldValuePair> noneFilters, SortedFieldDictionary sortBy, int pageSize = 100, int pageNumber = 0, bool exact = true, string stateFilter = null, bool getAllResults = true)
        {
            //call to 2nd api
            search = SomeApi.Search(allFilters, anyFilters, noneFilters, pageSize, pageNumber, exact,
                                               sortBy, null, WebApiConstant.Settings.CustomFields, true);

            //post processing on search results
            return search;
        }

Parce que l'appel à la première webservice est mis en cache localement, je ne vois pas vraiment un avantage énorme à faire de ce asynchrone.

Je suis juste à la recherche pour voir si cette approche est totalement faux, de droite ou de.

Combien d'appels à l'api web ne vous attendez par heure en moyenne?
En regardant 1000 utilisateurs simultanés. Il y aura plusieurs serveurs d'équilibrage de charge de la webapi, 2-3. Une première application de téléchargement de 400 utilisateurs est prévu.

OriginalL'auteur mickyjtwin | 2013-08-13