Alojamiento de múltiples servicios WCF en un solo puerto TCP en un servicio de Windows

A continuación se muestra mi fragmento de archivo app.config del servicio de Windows host.

<services>
      <service name="Share.Services.MainService">
        <endpoint address="net.tcp://localhost:8001/MainService" behaviorConfiguration="netTcpBehavior" binding="netTcpBinding" contract="Share.Services.IClaimService" />
      </service>
      <service name="Share.Services.MainMasterPageService">
        <endpoint address="net.tcp://localhost:8001/MainMasterPageService" behaviorConfiguration="netTcpBehavior" binding="netTcpBinding" contract="Share.Services.IMainMasterpageService" />
      </service>
      <service name="Share.Services.SMSService">
        <endpoint address="net.tcp://localhost:8001/SMSService" behaviorConfiguration="netTcpBehavior" binding="netTcpBinding" contract="Share.ServiceContracts.Messaging.ISMSService" />
      </service>
    </services>

Hay 3 servicios wcf configurados para usar el punto final TCP con el puerto 8001. En el servicio de Windows, estoy usando el siguiente código para registrar los hosts del Servicio

private static ServiceHost[] Hosts = null;

public static void Start()
{     
    try
    {
        while (!System.Net.NetworkInformation.NetworkInterface.GetIsNetworkAvailable())
        {
            System.Threading.Thread.Sleep(1000);
        }
        BaseLog.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

        Hosts = new ServiceHost[] 
            {
                new ServiceHost(typeof(MainService)), 
                new ServiceHost(typeof(MainMasterPageService)),
                new ServiceHost(typeof(SMSService)) 
            };

        foreach (ServiceHost host in Hosts)
        {
            RegisterServiceHost(host);
        }

        _log.Info("All Hosts Open");
    }
    catch(Exception e)
    {
        _log.Error( "MainServiceHost", e);
    }
}

Para cada objeto de ServiceHost al que llamo la función RegisterServiceHost, el código de esta función es el siguiente

public static void RegisterServiceHost(ServiceHost host)
{
    var ops = (from e in host.Description.Endpoints
            from o in e.Contract.Operations
            select o).ToList();

    ops.ForEach(
        operation => operation.Behaviors.Add(new MainContextOperationBehavior())
            );

    host.Open();
}

El código anterior funciona correctamente sin ningún problema. Mi pregunta es que todos los servicios comparten el mismo puerto 8001. Cómo todos los servicios pueden compartir el mismo puerto. Incluso el servicio Net.TCP Port Sharing no está habilitado en la máquina. Mi otra pregunta es que causará algún impacto en el rendimiento al compartir el mismo puerto. Si doy un puerto único como 8001,8002, 8003 para cada servicio, ¿cuáles son las ventajas de ello?

Respuestas a la pregunta(1)

Su respuesta a la pregunta