我在WPF .NET 4中使用MVVMLight框架,SOAP WebServices,ENtityFramework开发了一个大型应用程序2年... 我目前的任务是在全网上开发相同的应用程序。经过多次搜索,我终于决定使用Silverlight 5和Prism并行开发这两个应用程序。我的解决方案由桌面MVVMLight项目,silverlight项目,桌面模型项目和sl模型项目组成。 ViewModel和Model是共享的(带链接)。 Silverlight模型文件链接到桌面模型文件并为SL5构建。 ViewModel的行为相同。只有视图被编码,因为它很难分享。现在一切顺利,绑定和datacontext都可以。第五个项目是SOAP WebService,由Silverlight或Desktop项目启动。
问题在于SeviceReference。我被迫使用两种不同的ServiceReferences,因为我没有成功分享它。有办法吗? Silverlight Web服务调用只能是异步的,而原始的biq wpf应用程序有时会使用同步调用(表单验证等...)。异步调用(各种刷新)是同步进行的,但在BackgroundWorkers中,因此它仍然是应用程序的同步,nopb。 (你还跟着我吗?)。
共享Web服务调用在ViewModel中以相同的方式(共享代码)进行,并且在公共类中与以下内容分开:
public TResult WebServiceClientCaller(some args)
{
#if SILVERLIGHT
result = SilverlightWebServiceClient.MyMethod(some args);
#else
result = DesktopWebServiceClient.MyMethod(some args);
return result;
}
问题是我无法从" result = SilverlightWebServiceClient接收数据。"就像 " result = DesktopWebServiceClient。"。
我进入了3 4 4天,我不再计数:)。我尝试了几个例子:
还有更多......
我尝试使用带有异步/等待关键字的CTP和VS2012在VS2010上工作,但它并不令人满意。
有人可以帮我吗?如果我必须更具体,请告诉我。