WCF将数据传输为二进制

时间:2010-10-12 16:34:44

标签: c# wcf optimization service

我需要从wcf服务快速传输数据到客户端。 由于SO有帮助,它意味着良好的二进制序列化器\派生器和数据通过List 但我只有服务上序列化的DataTable XML文本。这是一个很大的开销。

好的我应该转向List的二进制编码。我没有任何DTO,只有xml的DataTable。 你能帮我做最好的练习吗?

PS:在客户端,我需要再次进行数据处理 PSS:Http,wcf服务的Tcp绑定。

2 个答案:

答案 0 :(得分:4)

要尝试的第一件事是通过mtom blob gzip xml和aend - 只需一个字节[]通过wcf

如果XML是固定模式,我会考虑编写一些DTO转换代码并通过protobuf-net和MTOM发送(在另一端反转翻译)。

我有想法通过protobuf-net 打包adhoc数据表但是我还没有机会实现它我在这里讨论:DataTable – life in the old beast?

答案 1 :(得分:2)

确实,优化的第一步是摆脱DataTables并引入模型对象。完成此操作后,您可以将服务端点配置为使用netTcpBinding进行优化的二进制传输。请记住,此绑定不能与非.NET客户端互操作,因此您可以在需要时公开basicHttpBinding端点。

在一天结束时,应该只有公开的服务方法中涉及的模型对象(没有DataTables和DataSet):

[ServiceContract]
public interface IMyServiceContract
{
    [OperationContract]
    SomeModel[] GetModels();
}

据说我会建议您在尝试过早优化之前执行负载测试并证明这是您应用程序的瓶颈。