2011-12-16 48 views
1

在调用Windows Phone 7的Web服务,我在Windows Phone 7的在MVVM架构

我添加了一个服务引用与Refrence名RS web服务(服务的.asmx)调用Web服务。 然后我打电话以下服务一样:

Class AModel 
{ 
    public void CreateT() 
     { 
      RS.RSSoapClient objRS = new RSRSSoapClient(); 
      objRS.Completed += new EventHandler<RS.CompletedEventArgs>(objRS_Completed); 
      objRSAsync(); 
     } 

    private void objRS_Completed(object sender, EventCompletedEventArgs e) 
     { 
      string str = e.Result; 
      responseEventArgs = new ResponseEventArgs(); 
       responseEventArgs.response = e.Result;     
       System.Windows.Deployment.Current.Dispatcher.BeginInvoke(responseEventHandler, responseEventArgs); 
     } 
} 

Class BViewModel 
{ 
     public void CreateT() 
     { 
      AModel objAModel = new AModel(); 
      objAModel.CreateT(); 
      objAModel .responseEventHandler += new ResponseEventHandler(objAModel_responseEventHandler); 
     } 

     private void objAModel_responseEventHandler(ResponseEventArgs e) 
    { 
    //doing some thing 
    System.Windows.Deployment.Current.Dispatcher.BeginInvoke(responseEventHandler, responseEventArgs); 
    } 
} 

这里我的主要问题是:在这里,我想用MVVM架构,所以我打电话模型(类AMODEL)服务层在这里我调用事件通知ViewModel(BViewModel)并在ViewModel中调用相同的事件来通知View(.xaml页面)。由于这些事件,我的应用程序性能降低(绑定响应的时间很长)。因此,如果在实现MVVM体系结构时出现任何错误,请指导。

在此先感谢。

回答

2

让你的ViewModel做控制。将Web服务的调用放在一个服务对象IMyService中,并让它返回Dto(s)。从ViewModel调用myService.GetThings();然后用结果做什么需要。如果你需要映射,显示或坚持它们。