Una sola aplicación es suficiente para todos los servicios. Por supuesto 
podrías también separar servicios que no tengan relación entre sí en diferentes 
aplicaciones. Esto queda a criterio tuyo. Si todos los servicios son hospedados 
por una misma aplicación entonces es necesario crear un ServiceHost separado 
para cada uno de ellos. Por ejemplo, 

...
    hostMateriales = new ServiceHost(typeof(MaterialesService));
    hostMateriales.Open();
    hostOrdenes = new ServiceHost(typeof(OrdenesDeCompraService));
    hostOrdenes.Open();
...

y en el archivo de configuración:

...
 <system.serviceModel>
    <services>
      <service name="MaterialesService">
        <endpoint name="Materiales" 
                  address="http://localhost:8080/servicios/materiales";
                  binding="basicHttpBinding" 
                  contract="IMaterialesService" />
      </service>

      <service name="OrdenesDeCompraService">
        <endpoint name="Ordenes"
                  address="http://localhost:8080/servicios/ordenes";
                  binding="basicHttpBinding"
                  contract="IOrdenesDeCompraService" />
      </service>

    </services>
 </system.serviceModel>
...

Saludos,

Fernando Tubio

  ----- Original Message ----- 
  From: Javier Alessandrello 
  To: [email protected] 
  Sent: Thursday, June 14, 2007 3:41 PM
  Subject: [puntonet] WCF-¿Cuantos Hosts necesito? 


  Estoy empezando a ver WCF y me surge una duda. Estoy haciendo una aplicacion 
en donde cree varios Service Contracts para mantener cierto grado de cohesión 
en el diseño y no tener un Service Contract con infinitos Métodos. Asi es que 
por ejemplo, tengo un IRequisicionesService, un IMaterialesService, un 
IOrdenesDeCompraService, etc. cada uno con su respectiva implementación. Estuve 
viendo el codigo para hostar en una aplicación de consola (que es practicamente 
el mismo en todos los ejemplos que pude ver por ahi) y aca es donde surge mi 
duda...

  Se que hosteando en IIS puedo hostear todos los Servicios en una sola 
aplicación por que ahi creo un .svc por ServiceContract. Pero para hostear en 
una aplicación de Consola  o en un Servicio Windows ¿Necesito crear un 
aplicación Host para cada uno de los ServiceContracts o se puede crear una sola 
aplicación que hostee todos Servicios?



  El codigo del que hablo más arriba es este...

  using System;
  using System.Collections.Generic;

  using System.Text;

  using System.ServiceModel;

  namespace WCFServiceConsoleHost {

  class Program {

  static void Main(string[] args) {

  Type serviceType = typeof(DerivativesCalculatorServiceType);

  string httpBaseAdress = ConfigurationManager.AppSettings["HTTPBaseAddress"];

  string tcpBaseAdress = ConfigurationManager.AppSettings["TPCBaseAddress"];

  Uri httpBaseAdressUri = new Uri(httpBaseAdress);

  Uri tcpBaseAdressUri = new Uri(tcpBaseAdress);

  Uri[] baseAdresses = new Uri[] { httpBaseAdressUri, tcpBaseAdressUri };

  using (ServiceHost host = new ServiceHost(serviceType, baseAdresses)) {

  host.Open();

  Console.WriteLine("Servicio Corriendo");

  Console.ReadLine();

  host.Close();

  }

  }

  }

  }

Responder a