2008-10-23 11 views
8

Buscando escuchar a las personas que usan WCF en un entorno empresarial.WCF en la empresa, ¿algún indicador de su experiencia?

¿Cuáles fueron los principales obstáculos con el lanzamiento? ¿Problemas de rendimiento? ¡Todos y cada uno de los consejos apreciados!

Proporcione algunas estadísticas generales y configuraciones del servidor si puede!

+0

Esto es muy vago, tanto que no creo que pueda obtener ninguna respuesta útil. Intenta ser más específico. –

Respuesta

7

WCF puede ser configuration hell. Asegúrese de familiarizarse con su diagnostics and svcTraceViewer, para que no tenga excepciones crípticas, inútiles. Y tenga cuidado con el cliente generado broken implementation of the disposable pattern.

+0

Técnicamente hablando, el problema de IDisposable no tiene nada que ver con los clientes generados. Es una "característica" de * todos * los objetos de comunicación WCF. Entonces, es humm ... en realidad peor :) – tomasr

0

WCF es definitivamente ideal para cosas de la empresa, ya que está diseñado con escalabilidad, extensibilidad, seguridad, etc. en mente.

Como dice maxidad, puede ser muy difícil, aunque las excepciones a menudo no dicen casi nada, si usas la seguridad (obvio para escenarios empresariales) tienes que lidiar con certificados, MessageSecurityExceptions sin sentido, y así sucesivamente.

Tratar con servicios WCF es sin duda más difícil que con un servicio asmx de edad, pero vale la pena el esfuerzo una vez que se encuentre.

que suministran configuraciones de servidor no será útil para usted ya que tiene que adaptarse a su escenario. usar los enlaces correctos es muy importante, así como la seguridad, concurreny. no hay una sola manera de ir cuando se utiliza wcf. solo piensa en tus requerimientos. necesitas devoluciones de llamada, ¿cuáles son tus usuarios? qué tipo de seguridad necesitas?

sin embargo, WCF será definitivamente la tecnología adecuada para las aplicaciones de escala empresarial.

1

Como ya se dijo, la pesadilla de la configuración y las excepciones pueden ser crípticas. Puede habilitar el seguimiento y usar el visor de registro de seguimiento para solucionar un problema en general, pero definitivamente es un cambio de engranajes para solucionar un servicio WCF, especialmente una vez que lo haya implementado y tenga problemas antes de que el código se esté ejecutando.

Para la comunicación entre componentes dentro de mi organización, terminé usando [NetDataContract] en mis servicios y proxies que se recomiendan (no se puede integrar con plataformas fuera de .NET y para integrar necesita el ensamblado que tiene los contratos) El rendimiento me pareció estelar y mi tiempo de desarrollo general se redujo al usarlo. Para nosotros fue la solución correcta.

+0

En lugar de NetDataContract, puede usar DataContractSerializer, reflejar los ensamblados de todos los atributos [DataContract] y las clases de serialización de WCF pasar de los tipos conocidos de la reflexión. Esto mantiene la herencia y elimina todo el dolor de [KnownType] – Steve

3

Recientemente me contrataron en una empresa que anteriormente manejaba su comunicación cliente/servidor con los servicios web asp.net tradicionales y pasaba el conjunto de datos de un lado a otro.

Reescribí el núcleo por lo que ahora hay un cliente Net.Tcp "conectado" ... y todo se hace por allí. Fue una semana de "descubrimientos en producción" ... pero bien vale la pena.

Los puntos dolorosos que tuvimos que descubrir al final del juego fueron: 1) La aceleración predeterminada bloqueó al undécimo usuario en adelante (de manera predeterminada permite solo 10). 2) El valor predeterminado "maxBufferSize" se estableció en 65k, por lo que el primer mapa de bits que se debía descargar se estrelló en el servidor :) 3) Otras configuraciones predeterminadas (conexiones concurent máx., Llamadas concurrentes máx., Etc.).

En general, valió la pena ... la aplicación es mucho más rápida simplemente cambiando su infraestructura y ahora que tenemos usuarios "conectados" ...el servidor puede enviar mensajes a los clientes.

Otra ventaja importante es que, dado que sabemos que el 100% está conectado, podemos aplicar nuestra política de licencias a nivel de aplicación. Antes (y antes de que me contrataran), mi empresa simplemente tenía que iniciar sesión y, a fin de mes, facturar a los clientes adicionales por conectarse demasiadas veces.

+0

+1 Solo por mencionar MaxBufferSize y otros valores predeterminados, terriblemente frustrante para depurar cuando se pulsa por primera vez en un servicio que de otra manera funciona perfectamente. –

Cuestiones relacionadas