我有一个WCF服务,Entity Framework 6自我托管在一个简单的Winforms应用程序中。我有一个WPF客户端应用程序,它通过basicHttpbinding
挂钩到这个服务。启动时,客户端应用程序从大表中请求SELECT *
。我需要完整的数据集,但是跨越http的传输非常慢。我在服务器上运行了一个跟踪,db很快就处理了查询,但是文本返回客户端的时间太长了。如果我SELECT TOP 200
客户端应用程序非常快,那么我知道它的数据量减慢了一切。这是我的客户端配置,它是镜像服务器端:
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_IIsesService" maxBufferSize="2147483647"
maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647" useDefaultWebProxy="false"/>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="http://localhost:8080/" binding="basicHttpBinding"
bindingConfiguration="BasicHttpBinding_IIsesService" contract="ServiceReference.IIsesService"
name="BasicHttpBinding_IIsesService" />
</client>
我一直在四处阅读,但对如何解决这个问题感到困惑。遗憾的是,由于最终用户需要dataGrid中的所有结果,因此我无法对结果进行分页。我最好尝试编写自定义绑定以允许压缩,还是应该定义Mtom或二进制传输?我可以在Winforms中自托管时切换到Net TCP绑定吗?