WCF服务最大方法数

时间:2009-02-19 02:51:21

标签: wcf web-services

通过单个WCF服务合同可以公开的最大方法/操作数是多少?

3 个答案:

答案 0 :(得分:7)

虽然没有最大值,但您可能会遇到Metadata Exchange的问题 - 以及以下配置值,它是默认值:maxNameTableCharCount

在尝试向现有功能WCF Service添加新功能时,我在尝试“更新服务参考”时遇到错误 - 与maxNameTableCharCount的默认值相关太小,无法处理mex转移的大小。

可以通过在服务器配置中添加自定义Metadata Exchange来覆盖mex binding的默认值。

如果超出配置值,当您尝试添加或更新服务引用时,可能会看到如下所示的错误消息:

  

已超出最大名称表字符数限额(16384)   在阅读XML数据时。名称表是用于的数据结构   存储XML处理期间遇到的字符串 - 长XML文档   具有非重复元素名称,属性名称和属性值   可能会触发此配额。可以通过更改此配额来增加此配额   XmlDictionaryReaderQuotas对象上的MaxNameTableCharCount属性   在创建XML阅读器时使用。第1行,第332845号。

Server Mex端点应指定如下:

<endpoint address="mex" 
          binding="customBinding" 
          contract="IMetadataExchange" 
          name="" 
          bindingConfiguration="customMex" 
          listenUriMode="Explicit" />

使用如下指定的自定义绑定块:

<customBinding>
    <binding name="customMex">
        <textMessageEncoding>
        <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" 
                      maxArrayLength="2147483647" maxBytesPerRead="2147483647" 
                      maxNameTableCharCount="2147483647" />
        </textMessageEncoding>
        <httpTransport transferMode="Buffered" maxReceivedMessageSize="2147483647" 
                       maxBufferSize="2147483647"/>
    </binding>
</customBinding>

如果您遇到服务上有很多方法的问题,这可能会有所帮助。

答案 1 :(得分:2)

没有最大值。你可以拥有任意数量的AFAIK。

但是,它是否实用是一个不同的问题。如果你在一份合同上有太多的方法,它将变得非常笨拙。

答案 2 :(得分:0)

实际限制可能不超过10-12种方法。除此之外,您可能不再描述单个组件的操作。我会非常努力地将任意组件与几十个操作重构为多个组件。

那就是说,我确定有例外!