我使用System.ServiceModel.WsHttpBinding连接到Tridion核心服务.该服务仅供经过身份验证的用户使用,可能仅由我控制的代码使用.我必须为以下选择值
我看到的使用核心服务的代码示例总是将其中的一些设置为大于默认值的值,例如4Mb.这是因为在使用其他值(例如默认值)时存在已知问题吗?
MaxBufferPoolSize允许您防止过多的垃圾收集.这只是监控GC和基于此调整的问题吗?
MaxReceivedMessageSize,MaxArrayLength和MaxBytesPerRead可以防御Dos攻击,所以在我的场景中,也许我可以通过增加这些来提高吞吐量.真的有大量帮助吗?
MaxNameTableCharCount似乎是为了防止你可能不想不受控制地增长的东西的不受控制的增长,所以可能保留默认值是一件好事.
MaxStringContentLength上的文档未指定超出配额时会发生什么.据推测,ReadContentAsString会以某种方式失败,因此这个值可能很大.
那么 - 我应该将这些值保留为默认值吗?这会给我带来麻烦吗?我应该将它们增加到大值吗?这有助于吞吐量等,还是更有可能导致其他问题?
一般规则是让这些值尽可能小,足以让代码工作.如果您将查看CoreService.dll附带的默认配置,它会增加一些值.
例如,如果您希望获得大型XML列表(或搜索结果),则应该增加MaxReceivedMessageSize.请记住,您可以使用BaseColumns过滤器的属性控制将获得的列表大小.
如果您更喜欢使用GetList,GetSystemWideList和GetSearchResults方法而不是XML对应物,那么您可能需要与ReaderQuotas.MaxArrayLength它们一起增加MaxReceivedMessageSize.但请注意,大型数组将存储在内存中.
我不确定你想要增加任何这些值,直到你达到极限.WCF非常适合指向您必须调整的参数.
我担心这不是你问题的真正答案......但是,根据我的经验,我将值增加到超过建议的默认值.我已经建议使用4MB.这是因为我在与核心服务进行通信时遇到了错误.它们与超出分配大小的请求/响应大小有关.
此外,在核心服务事务性的情况下,我看到了更多这些例外.在使用事务时,请求/响应的大小似乎增加了很多.就我而言,我在一个大型交易中创建了一批组件.如果一个组件无法创建,我将回滚整个事务.
希望这可以帮助.
| 归档时间: |
|
| 查看次数: |
661 次 |
| 最近记录: |