Ejecución de una ServiceHost con un único contrato está trabajando muy bien como esto:Run WCF ServiceHost con múltiples contratos
servicehost = new ServiceHost(typeof(MyService1));
servicehost.AddServiceEndpoint(typeof(IMyService1), new NetTcpBinding(), "net.tcp://127.0.0.1:800/MyApp/MyService1");
servicehost.Open();
Ahora me gustaría añadir un segundo contrato (días 3, 4, ...). Mi primera conjetura sería simplemente añadir más puntos finales de la siguiente manera:
servicehost = new ServiceHost(typeof(MyService1));
servicehost.AddServiceEndpoint(typeof(IMyService1), new NetTcpBinding(), "net.tcp://127.0.0.1:800/MyApp/MyService1");
servicehost.AddServiceEndpoint(typeof(IMyService2), new NetTcpBinding(), "net.tcp://127.0.0.1:800/MyApp/MyService2");
servicehost.Open();
Pero por supuesto esto no funciona, ya que en la creación de ServiceHost cualquiera me puede pasar MyService1 como parámetro o MyService2 - por lo que puedo añadir mucho de puntos finales para mi servicio, pero todos tienen que usar el mismo contrato, ya que solo puedo proporcionar una implementación.
Tengo la sensación de que me estoy perdiendo el sentido, aquí. ¿Seguro que debe haber alguna manera de proporcionar una implementación para cada contrato final que agregue, o no?
Dang.Necesito más que solo 2 contratos de servicio, supongo que 10-50, y para ese número este enfoque es un poco engorroso; no es muy útil tener todos los puntos de entrada en una sola clase :( ¿No hay otro forma? – Sam
Mi solución le permite dividir los contratos en diferentes clases. También puede combinar mi solución con escalofríos para tener, por ejemplo, 5 clases, cada una con 2 puntos finales. Tengo mucha curiosidad por saber por qué necesita 50 contratos. mira las mejores prácticas de Juval en http://www.idesign.net/. –
Voy a secundar el comentario de Chris. Parece que necesitas simplificar tu diseño. – chilltemp