【发布时间】:2016-04-04 15:57:32
【问题描述】:
我有一个 WCF 命名管道服务,它接收一个字节数组并将其写入 SQLite DB。 当我将 SQLite 插入逻辑移到 WCF 服务中时,写入性能几乎下降了一半。 我在网上浏览了各种推荐,但似乎没有任何帮助。 我当前的配置如下所示:
pipeBinding.MaxBufferPoolSize = 5000000;
pipeBinding.MaxBufferSize = 5000000;
pipeBinding.MaxReceivedMessageSize = 5000000;
pipeBinding.ReaderQuotas.MaxArrayLength = 5000000;
pipeBinding.Security.Transport.ProtectionLevel = ProtectionLevel.None;
欢迎更多调整建议。
【问题讨论】:
-
你的服务是
PerSession吗?PerCall?您是否使用相同的客户端代理重复调用服务?您是否在服务方法开始时启动数据库连接?如果是这样,请考虑将您的服务设为PerSession并将数据库连接初始化移动到您的服务构造函数中,以便在给定代理的调用中使用它 -
它有一个非默认构造函数,所以它不能是 PerSession。我已经配置了 behavior.InstanceContextMode = InstanceContextMode.Single;它确实有助于创建单个数据库实例。我也在考虑编写自己的序列化。也许跳过 base64 阶段会有所帮助
标签: performance wcf wcf-binding netnamedpipebinding