2012-01-10 113 views
0

我必須採取哪些步驟將RIA服務轉換爲純WCF服務?從RIA服務轉換爲WCF Web服務

注:

  • 我有6種方法中的一種服務
  • 我傳遞大對象返回&提出和我想對更多的控制權,所以我需要切換到WCF
  • 我使用Silverlight作爲我的主要客戶端

回答

2

簡而言之,如果您將大對象來回傳遞給服務,那麼您可能做錯了。只需將您的對象發送到服務器,在服務器上執行所有必需的處理,然後將結果返回給客戶端即可。爲什麼你應該承擔通過電纜(通過HTTP)來回傳輸大型對象的性能和帶寬成本?

由於您使用Silverlight作爲您的主要客戶端,因此您將使用異步調用(這是另一個堅持一個調用服務的原因)。有幾種方法可以管理實例化WCF服務:您可以通過向Silverlight客戶端添加服務引用來實現最簡單的方法,也可以編寫一些可以在服務上執行方法的自定義客戶端,如下所示:

client.ExecuteAsync<IService, TResult>(String methodName, Action<TResult> complete, Action<Exception> failure, params object[] parameters)

然後在你的服務合同,你應該寫你的業務的兩個版本:同步和異步。爲此,請使用編譯條件將兩者分開:

#if(SILVERLIGHT) 
[OperationContract(AsyncPattern = true)] 
IAsyncResult BeginMyMethod(Int32 value, AsyncCallback callback, Object asyncState); 
Double EndMyMethod(IAsyncResult result); 

//more operations 

#else 
[OperationContract] 
Double MyMethod(Int32 value); 

//rest of the methods 

#endif