J'essaie de créer un exemple d'application en utilisant OData et Silverlight, en utilisant (quoi d'autre?) Le service Netflix. J'ai déjà réussi à créer l'application en utilisant WPF, mais j'ai du mal à porter ma classe de service vers un modèle asynchrone.OData de Silverlight sans modèle de référentiel
Ma classe de service existant (simplifié) se présente comme suit:.
public IEnumerable<Title> BlockingSearch(TitleSearchParam param)
{
var catalog = new NetflixCatalog(new Uri("http://odata.netflix.com/Catalog/"));
return catalog.Titles.Where(t =>
t.Instant.AvailableFrom > param.InstantStartDate && t.Instant.AvailableFrom < param.InstantEndDate &&
(string.IsNullOrEmpty(param.TitleName) || t.Name.Contains(param.TitleName))).ToList();
}
Tous les exemples de la consommation OData emploient de manière asynchrone une sorte de modèle Respository et/ou nécessitent une collection instancié à passer dans je le ferais comme pour modéliser la signature de la méthode de l'appel Silverlight/Async pour regarder quelque chose comme ça (avec la classe de service lui-même étant apatride):
public void AsyncSearch(TitleSearchParam param, Action<IEnumerable<Title>> completedCallback, Action<MyErrorClass> errorCallback, object callBackOwner)
{
}
Je pense que je pourrais si certains chose dans le sens de ce que MS décrit dans Calling Synchronous Methods Asynchronously, mais j'espérais qu'il y avait une solution plus élégante qui me manquait.