Tengo una aplicación WPF que hasta ahora solo ha sido cliente, pero ahora estoy trabajando en dividirla en un lado del cliente y del servidor. En este trabajo, presentaré WCF para la comunicación cliente-servidor. Mi aplicación tiene varios proyectos y se necesitan referencias de servicio de más de uno de ellos.Estructura de la aplicación usando WCF
El esfuerzo inicial para hacer la separación es hacer todo "directo". Todos los proyectos que necesitan comunicarse con un servicio obtienen una referencia de servicio, al igual que el proyecto principal de la aplicación WPF: para obtener allí la aplicación .config. Encuentro que esto se convierte en un desastre bastante rápido, y no puedo imaginar que esta sea la arquitectura típica que usa la gente. También he visto problemas con el hecho de que cada una de las referencias de servicio genera una nueva implementación de las clases de DataContract; por lo tanto, no existe una comprensión común de las clases DataContract en el cruce de proyectos. Tengo algunas clases de ViewModel en un proyecto y otro proyecto que instancia cierto ViewModel. Me gustaría pasar el objeto recibido del servicio, pero no puedo, ya que la representación del objeto recibido generada por el cliente difiere en cada proyecto.
Entonces, ¿hay una forma recomendada de estructurar tales separaciones de cliente/servidor utilizando WCF? O principios a seguir? Estoy pensando en un proyecto Proxy común utilizado en el lado del cliente que hace la comunicación con los servicios, envuelve los datos recibidos y devuelve datos en un formulario bien conocido por las bibliotecas del cliente. ¿Debería dar solo una referencia de servicio, y supongo que solo necesito App.config en el proyecto wpfApp? ¿Esto tiene sentido?
Gracias por una muy buena respuesta!Algunas preguntas atrás: ¿Al contar con un servidor de servicio, debe iniciar el host y el cliente al iniciar su aplicación? ¿O hay alguna forma de evitar esto? Con respecto a los poderes del cliente, ¿cuál preferirías? La impl manual suena más consistente, ya que no tiene que ocuparse de las referencias de servicio que están desactualizadas. – stiank81
@bambuska: seguro, debe iniciar el servidor de servicio y el cliente para probar; seleccione "lanzar proyectos múltiples" en Visual Studio para lograr esto: puede ejecutar tanto el host de servicio como el cliente al presionar F5. –
Proxies de cliente: me gusta el control total que tengo cuando realizo la implementación manual de los proxies del cliente; esto ** requiere ** aunque puedo compartir el contrato entre el servidor y el cliente (ya que la implementación manual de los proxies del cliente debe tener acceso a los contratos reales) –