Korrekte Verwendung von await-async in webapi

Ich habe eine WebApi, dass für jede eingehende Anfrage, Anrufe, 2 separate webservices, führt einige post-processing und gibt die Ergebnisse zurück.

Den ersten webservice-Aufruf wird lokal zwischengespeichert, für 1 Stunde, und die Daten in diese bestimmt die Abfrage, auf der 2. webservice. Der 2. webservice aufgerufen wird, auf jede eingehende Anfrage. Nach der 2. Anfrage gemacht, jedes Ergebnis ist verarbeitet mit business-Logik und kehrte zurück, um die client-Antwort.

Dem Aufruf der 2. webservice nicht asynchron, da eine 3rd-party-dll, die nicht zulässt, dass der await-Schlüsselwort. Was ich getan habe, gewickelt ist, der 2. webservice-Aufruf und die Nachbearbeitung in eine async-Funktion, die aufgerufen wird, von der Steuereinheit.

///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;
        }

Da der Aufruf der ersten webservice wird lokal zwischengespeichert, sehe ich nicht wirklich ein großer Vorteil, dass diese asynchron.

Ich bin gerade auf der Suche um zu sehen, ob dieser Ansatz Total falsch ist, oder richtig.

  • Wie viele Aufrufe an web-api erwarten Sie, dass pro Stunde im Durchschnitt?
  • Blick auf 1000 gleichzeitige Benutzer. Es werden mehrere Server load-balancing der webapi, 2-3. Eine erste Anwendung der download von 400K Benutzer erwartet wird.
InformationsquelleAutor mickyjtwin | 2013-08-13
Schreibe einen Kommentar