¿Cuáles son los beneficios para varios hosts de servicios?¿Un ServiceHost admite varias conexiones simultáneas en un punto final?

StackOverflow https://stackoverflow.com/questions/2131796

Pregunta

Estoy pensando en alojar mi servicio WCF por mi cuenta en lugar de usar IIS.Una gran pregunta para mí es si necesito crear instancias de varios hosts de servicios como lo hace IIS o si uno será suficiente.

¿Los múltiples servidores de servicios brindan algún beneficio, excepto por razones de seguridad debido al aislamiento?

¿Puede un host de servicio atender varias conexiones en un punto final simultáneamente?

¿Fue útil?

Solución

En realidad, no hay ningún beneficio ni elección. ServiceHost (instancia de esa clase) puede alojar exactamente un servicio y, para cada servicio, necesita un host de servicio independiente.Es un mapeo 1:1: siempre, no hay elección.

Pero, por supuesto, su servicio de Windows NT o aplicación de consola puede tener múltiples ServiceHost objetos activos al mismo tiempo.Esto puede ser útil si tiene un conjunto de servicios que lógicamente van juntos y que realmente no pueden existir uno sin el otro, donde no tiene sentido que uno de ellos esté iniciado y otro no.

Y sí, un host de servicio puede alojar un servicio que expone múltiples puntos finales, y varios clientes pueden conectarse en esos puntos finales separados al mismo tiempo, no hay problema.El tiempo de ejecución de WCF activará una cantidad de subprocesos de trabajo para manejar las solicitudes entrantes (puede limitarlas con el comportamiento ServiceThrottling) de forma independiente entre sí.


Para configurar y controlar cuántas llamadas y solicitudes simultáneas tiene, deberá observar el comportamiento de ServiceThrottling en el lado del servidor.

<behaviors>
    <serviceBehaviors>
        <behavior name="serviceThrottled">
            <serviceThrottling
                maxConcurrentCalls="16"
                maxConcurrentInstances="26"
                maxConcurrentSessions="10"/>
        </behavior>
    </serviceBehaviors>
</behaviors>

y necesitas hacer referencia a esa configuración de comportamiento del servicio en tu declaración de servicio, por supuesto:

<service name="YourService" behaviorConfiguration="serviceThrottled">
  .....
</service>

Estos son los valores predeterminados.Las explicaciones son las siguientes (tomada de la entrada del blog de Dan Rigsby, abreviada):

  • Máximo de llamadas simultáneas (predeterminado = 16) [Por mensaje] El número máximo de mensajes que se pueden procesar activamente.

  • MaxConcurrentInstancias (predeterminado = 26) El número máximo de objetos InstanceContext en un servicio que se pueden ejecutar al mismo tiempo.Para el servicio por sesión, esto es igual al número máximo de sesiones, para el servicio por llamada, es el número máximo de llamadas simultáneas y para singletons, no tiene sentido.

  • Sesiones concurrentes máximas (predeterminado = 10) [Por canal] El número máximo de sesiones que un servicio puede aceptar al mismo tiempo.Sólo entra en juego con enlaces basados ​​en sesiones (wsHttp o netTcp)

Definitivamente también echa un vistazo Excelente publicación de blog de Dan Rigsby en el tema.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top