¿Cuál es la cantidad máxima de métodos/operaciones que se pueden exponer a través de un único contrato de servicio WCF?WCF Service Número máximo de métodos
Respuesta
No hay un máximo. Puedes tener todos los que quieras, AFAIK.
Sin embargo, si es práctico o no es un problema diferente. Se volverá bastante difícil si tiene demasiados métodos en un solo contrato.
Aunque no hay un máximo, puede tener problemas con Metadata Exchange
- y el siguiente valor de configuración y es predeterminado: maxNameTableCharCount
.
Mientras que intentar añadir una nueva función a un funcionamiento existente WCF Service
, me encontré con errores al mismo tiempo tratando de "servicio de actualización de Referencia" - en relación con el valor por defecto de maxNameTableCharCount
ser demasiado pequeña para manejar el tamaño de la transferencia mex
.
Es posible anular los valores predeterminados para Metadata Exchange
agregando un mex binding
personalizado dentro de la configuración del servidor.
Es posible que aparezca un mensaje de error como el de abajo cuando intenta añadir o actualizar la referencia de servicio si se supera el valor de configuración:
La cuota recuento de caracteres NameTable máximo (16384) se ha superado durante la lectura Datos XML La tabla de nombres es una estructura de datos utilizada para cadenas de tiendas encontradas durante el procesamiento XML. Los documentos XML largos con nombres de elementos no repetitivos, nombres de atributos y valores de atributo pueden activar esta cuota. Esta cuota se puede aumentar cambiando la propiedad MaxNameTableCharCount en el objeto XmlDictionaryReaderQuotas utilizado al crear el lector XML. Línea 1, posición 332845.
puntos finales de servidor Mex deben especificarse como sigue:
<endpoint address="mex"
binding="customBinding"
contract="IMetadataExchange"
name=""
bindingConfiguration="customMex"
listenUriMode="Explicit" />
Con un bloque personalizado de enlace especificadas como sigue:
<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>
Puede ayudar si usted' estamos teniendo problemas con muchos métodos en un servicio.
El límite práctico probablemente no sea más de 10-12 métodos. Más que eso y probablemente ya no estés describiendo las operaciones de un solo componente. Me esforzaría por refaccionar cualquier componente con docenas de operaciones en múltiples componentes.
Dicho esto, ¡estoy seguro de que hay excepciones!
- 1. WCF Service Throttling
- 2. WCF Service vs Windows Service
- 3. WCF Service Client Lifetime
- 4. Métodos WebGet y no WebGet en WCF Rest Service
- 5. WCF Service authorization patterns
- 6. WCF Service Throttling
- 7. wcf json web service
- 8. WCF Service and Threading
- 9. WCF Service netTCPbinding
- 10. WCF REST Push Stream Service
- 11. ¿Cuál es el máximo número de métodos por clase .NET
- 12. Diferencia entre WCF Service, WCF RIA Services y WCF Data Service
- 13. WCF Service como Windows Service woes (Windows 7)
- 14. WCF Service Backwards Compatibility Check
- 15. WCF net.msmq service auto activation
- 16. WCF Service in Separate Assembly
- 17. WCF service under https environment
- 18. Exponer IQueryable Over WCF Service
- 19. WCF service maxReceivedMessageSize basicHttpBinding issue
- 20. WCF Service Library con NetTcpBinding
- 21. Compartiendo Enum con WCF Service
- 22. WCF service dataContractSerializer maxItemsInObjectGraph en web.config
- 23. Número máximo de Err.Raise?
- 24. Número máximo de Ruby
- 25. WCF Service exponiendo DTO o entidad
- 26. Uso de Ninject WCF Extension con WCF Web Service
- 27. Conversión de ASMX a WCF Web Service
- 28. Interoperabilidad de Service Broker e WCF
- 29. WCF Data Service - Error de solicitud
- 30. Parámetros de función número máximo
'mex' es utilizado por las herramientas WCF para generar una clase de proxy para el cliente, pero nunca lo usa realmente el cliente. Entonces, ¿por qué el archivo de configuración del cliente necesita este enlace agregado? – mcoolbeth
Tiene toda la razón, la configuración del cliente no requiere ninguna configuración correspondiente. He modificado la publicación ahora, gracias. – Tanner
No he tenido ningún éxito siguiendo este método. Estoy usando el enlace netTcp para mi servicio. Tengo http deshabilitado, así que he especificado tcpTransport en lugar de httpTransport. Pero esto todavía falla cuando tengo una gran cantidad de OperationContracts. ¿Alguien puede proporcionar alguna entrada? –