Auto servicio alojado de WCF Host / WebServiceHost de concurrencia Opciones / Diseño Rendimiento (.NET 3.5)

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

Pregunta

Así que podrás proporcionar un par de funciones a través de un auto alojado (en un servicio de windows) WebServiceHost (no estoy seguro cómo procesar HTTP GET / POST con ServiceHost), uno de los cuales puede llamarse una gran cantidad de tiempo. Esta función también se basará en una conexión en el dominio de aplicación (organizada por el servicio de windows para que pueda mantenerse con vida a través de múltiples solicitudes).

Tengo las siguientes inquietudes y estaría oh tan agradecido por cualquier entrada / observaciones / comentarios:

  • Acceso concurrente - ¿cómo manejar la WebServiceHost un montón de peticiones concurrentes. ¿Son cola y procesos de forma secuencial o de nuevas instancias de los contratos automagicamente crearon?
  • WebServiceHost -> servicio de windows comunicación - necesito alguna forma de comunicación de la WebServiceHost al servicio de windows hosting para cosas como solicitar una nueva sesión, si no existe uno. Tal vez la implementación de una clase que extiende el WebServiceHost con hechos que el servicio de windows se suscribe a ... (a menos que haya otra manera de que pueda desencadenar un evento en el servicio de windows cuando se hace una petición ...)
  • Múltiples WebServiceHosts o contratos - ¿Le daría cualquier ganancia en el rendimiento real para estar ejecutando varias instancias WebServiceHost en diferentes hilos (uno por cada punto final, tal vez?) - Una mejor comprensión del primer punto probablemente ayuda aquí .
  • WSDL - No estoy seguro de por qué (probablemente sólo necesitan hacer más lectura), pero no estoy seguro de cómo llegar al punto final de base WebServiceHost a responder con un documento WSDL que describe la disposición contrato. No se requiere que todas las operaciones se realizan a través de peticiones GET, que no es probable que el cambio, pero sería bueno tener ...

Eso es todo por ahora;.) He estado leyendo mucho en WCF y desearía haber entrado en él hace mucho tiempo, pero definitivamente todavía está aprendiendo

¿Fue útil?

Solución

El acceso concurrente - esto es algo que se puede establecer usando ServiceBehaviorAttribute. hay una serie de opciones - puede tener WCF crear una nueva instancia de la clase de servicio para cada petición entrante, o puede tener un único identificador de instancia todas las solicitudes. Adicionalmente se puede decir WCF si se pasa las solicitudes en serie o simultáneamente.

WebServiceHost - comunicación> servicio de windows. Dos enfoques vienen a la mente: WCF admite un modo llamado "ejemplo muy conocido" donde se pasa una instancia de su servicio al constructor ServiceHost en lugar de pasar de un tipo y dejar WCF instanciarlo para usted. Con este modo puede preconfigurar la instancia de servicio con una parte posterior referencia a su código de alojamiento (otra posibilidad es utilizar eventos). Una alternativa si se quiere conservar la flexibilidad de instancias sería tener un método estático en el código de alojamiento que el servicio WCF podría llamar de nuevo en.

WebServiceHosts múltiples o contratos - realmente ninguna ventaja en tener más de una instancia ServiceHost. véase también este hilo SO: ¿Cuáles son los beneficios para varios servicehosts? ¿Alguno de apoyo ServiceHost varias conexiones simultáneas en un extremo? .

WSDL - Si bien puede habilitar WSDL mediante la activación de la publicación de metadatos ( http: //msdn.microsoft.com/en-us/library/ms788760.aspx ), el apoyo WSDL está destinado a los servicios basados ??en SOAP, no pura HTTP GET / POST. El WSDL que se genera automáticamente para su servicio probablemente no será muy útil.

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