Actualmente tenemos 12 proyectos WCF en nuestra solución. Cada proyecto es esencialmente su propio punto final. Por ejemplo, el proyecto WCF "Order" es el punto final Order.svc. Estos 12 puntos finales están expuestos por un único proyecto WebHost. El proyecto WebHost tiene 12 archivos .svc apuntando a cada ensamblado/espacio de nombres correspondiente.Múltiples Proyectos WCF vs Proyecto Único en la Solución
Mi pregunta gira en torno al uso de UN proyecto (un conjunto ... un dll) frente a varios proyectos (conjuntos múltiples ... múltiples dlls). ¿Cuáles son las ventajas/desventajas, si las hay? El resultado final es el mismo ... usted tiene un proyecto WebHost que expone estos puntos finales apuntando a un ensamblado/espacio de nombres. Excepto que solo tiene que administrar un .dll contra 12 .dll en el directorio bin.
Para mí las ventajas de un proyecto: Mantenibilidad: en lugar de 12 proyectos, cada uno con múltiples referencias a nuestras interfaces, datos, utilidad, etc., tenemos un proyecto que tiene las referencias establecidas en UN lugar. Entonces podemos desplegar el dll y utilizar un equilibrador de carga para distribuir de manera uniforme. Incluso si alojamos explícitamente 3 servicios por servidor (por lo tanto, 4 servidores), si un servidor deja de funcionar, el equilibrador de carga puede ajustarse y los otros 3 servidores tendrán lo que necesitan y se encargarán de todo de manera automágicamente. (Supongo que lo mismo es cierto con 12 .dll ... solo hay que asegurarse de que los 12 .dll estén en cada servidor).
Tiempo de compilación: menos proyectos = tiempo de compilación más rápido. Visual Studio no tiene que realizar tanta vinculación y copia de .dll en todo el lugar. Tiempo de construcción más rápido = desarrollador más productivo y una compilación e implementación más rápida.
Actualmente tengo un par de compañeros de trabajo preocupados por "acoplar estrechamente" todos nuestros servicios de WCF en un solo proyecto. Para mí, todos son servicios de WCF ¿por qué no ponerlos en el mismo proyecto? Los puntos finales (archivos .svc) son lo que los separa. También he escuchado la pregunta, "¿qué pasa con el bloqueo muerto?". ¿Qué hay de eso? ¿Es eso un problema/preocupación válida? (Honestamente, no lo sé)
También ha habido preguntas sobre si el .dll se daña. SI lo es, entonces todos los servicios están caídos. De nuevo ... ¿es esto una preocupación válida?
Todos los ejemplos que he visto de Microsoft y otros tienen los servicios de WCF en un proyecto separados por diferentes clases. Las interfaces están en su propio proyecto ... los contactos de datos en otro proyecto, etc.
Entonces, ¿cuál es su opinión? ¿Cómo se organizan múltiples servicios WCF en su solución Visual Studio? Aprende de mi.