来自Silverlight的OData没有存储库模式

时间:2011-05-15 02:28:29

标签: c# silverlight odata

我正在尝试使用OData和Silverlight创建一个示例应用程序,使用(还有什么?)Netflix服务。我已经成功使用WPF创建了应用程序,但我很难将我的服务类移植到异步模型。

我现有的服务类(简化)如下所示:

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();

    }

消耗OData的所有示例异步使用某种Respository Pattern和/或需要传入实例化的集合。我想模拟Silverlight / Async调用的方法签名,看起来像这样(带有服务类本身是无状态的):

public void AsyncSearch(TitleSearchParam param, Action<IEnumerable<Title>> completedCallback, Action<MyErrorClass> errorCallback, object callBackOwner)
{

}

我认为我可以这么类似MS在Calling Synchronous Methods Asynchronously中概述的内容,但我希望有一个更优雅的解决方案,我错过了。

1 个答案:

答案 0 :(得分:0)

如您所知,您始终可以在与UI线程不同的线程上运行调用,因此本身不会有阻塞。这似乎是一个不错的解决方案。然后你可以(实际上必须)使用调度程序处理来自回调的结果,如果你打算在UI中使用它们。