从RIA服务转换为WCF Web服务

时间:2012-01-10 17:53:23

标签: silverlight wcf wcf-ria-services

我必须采取哪些步骤才能将RIA服务转换为普通WCF服务?

注意:

  • 我有一个服务有6种方法
  • 我正在传递大型物体&我想要更多地控制它们,所以我需要切换到WCF
  • 我使用Silverlight作为我的主要客户

1 个答案:

答案 0 :(得分:2)

简而言之,如果你在服务中来回传递大型对象,那么你可能做错了。只需将对象发送到服务器,在服务器上执行所有必需的处理,然后只需将结果返回给客户端即可。为什么要通过线路(通过HTTP)来回传输大对象会产生性能和带宽成本?

由于您使用Silverlight作为主要客户端,因此您将使用异步调用(这是坚持对服务进行一次调用的另一个原因)。有几种方法可以管理实例化WCF服务:您可以通过向Silverlight客户端添加服务引用以最简单的方式执行此操作,也可以编写一些可以在服务上执行方法的自定义客户端,如下所示: / p>

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