Wow wow wow. ¿Todos comparten una base de datos? Si ese es el caso, no, no y no. Si la base de datos no se comparte, entonces definitivamente es DLL.
La opción correcta es Servicio web. La razón es muy simple también.
1) Consistencia del modelo de dominio y lógica comercial. Supongamos que almacena una enumeración en una columna y agrega una enumeración e implementación en una aplicación. Ahora romperá las otras dos aplicaciones.
2) Facilidad de implementación. Un cambio = una implementación. Si es un archivo DLL, un cambio = 3 implementación.
3) transacciones de base de datos y control de concurrencia. Mucho más fácil de resolver en un dominio de aplicación.
En cuanto a los contras sugeridos por otros, me parecen demasiado parciales.
1) Dificultad en la depuración en el dominio de la aplicación. Debe publicar las posibles excepciones a través de WSDL como excepciones de error. El cliente que realiza la llamada también debe manejar esas excepciones de fallas apropiadamente. También es increíblemente fácil configurar pruebas unitarias y simulacros tanto para el cliente como para el servidor. Breakpoint no es la forma correcta de depurar y trabajar con aplicaciones distribuidas. Puedes, y no es difícil. Simplemente no creo que ese sea el enfoque correcto.
2) Rendimiento. WCF le permite establecer diferentes enlaces a través de la configuración.Desde http básico (que es más fácil de depurar) hasta llegar a named pipe, que puede usar para obtener un rendimiento de llamada casi nativo. Esta decisión puede (casi. Hay algunas peculiaridades con diferentes enlaces que debe tener en cuenta.) Decida también después del desarrollo.
3) Seguridad. Decir que WCF no maneja la seguridad es hilarantemente incorrecto.
Por último, los contras reales de mí:
1) más complejas. Convenido. Un contexto diferente hace que el diseño de la aplicación sea más difícil. Eso va de dos maneras, aunque. Esta complejidad impone una clara separación de niveles. El contexto de la presentación debe mantenerse donde están, a nivel de presentación.
2) Requieren más planificación. El diseño de contratos para los servicios web de WCF es un arte en sí mismo.
3) Gastos generales de administración para la configuración. Puede ser desalentador para los desarrolladores más nuevos, pero espero que pueda superar este obstáculo rápidamente. La configuración WCF es una espada de doble filo, potente, pero compleja (para algunos).
Mi experiencia personal es que cada vez que se comparte una base de datos y se usa la DLL en varios dominios de aplicación, lamento no haber golpeado al equipo de desarrollo lo suficiente como para ir con la ruta de servicios web.
¿Cuál fue su decisión final? Han pasado cuatro años.
Supongo que es el momento en que se publica la pregunta. Tan solo mire actúe esta pregunta similar, y la respuesta es Servicio web. http://stackoverflow.com/questions/7877916/web-service-vs-dll-pros-and-cons –
Sí, eso es un poco necro. En ese momento, WCF no era un problema. DLL fue la forma en que fuimos y la aplicación ha estado felizmente en producción durante 4 años. –