2010-04-03 17 views
5

Demasiado uso el ServiceHost para autoevacuar los servicios de WCF.¿Cómo alojar el servicio WCF y el servidor TCP en el mismo socket?

que desea alojar cerca de mis servicios WCF mi propia Programm TCP para las operaciones de tomas de corriente directa (como gravamen a algún tipo de flujo de radiodifusión TCP)

necesito el control sobre los espacios de nombres de URL (por lo que sería capaz de dejar mis clientes envían flujos TCP directamente a mi servicio usando algunas buenas URL como example.com:port/myserver/stream?id=1 o example.com:port/myserver/stream?id=anything y para que no me moleste con idea de 1 cliente para 1 socket en un momento dado, realmente quiero mantener mis servicios WCF en el mismo puerto que mi propio servidor o lo que es para poder llamar a www.example.com:port/myWCF/stream ? id = 222 ... y quiero que funcione en Cualquier puerto - no solo 80)

¿Puede algún cuerpo ayudarme con esto?

Estoy utilizando solo WCF ahora. Y no me gusta cómo funciona. Esa es una de las muchas razones por las que quiero iniciar la migración para borrar TCP =)

No puedo usar el enlace net-tcp o cualquier otro tipo de enlace WS- * genial (hoy uso el más simple para que mis clientes como Flash, AJAX, etc. conéctate con facilidad).

Necesitaba Rápido y fácil en la implementación de protocolo de conexión como el que preparé con Sockets para la transferencia de datos en tiempo real.

So .. ¿Alguna idea? Por favor, necesito ayuda.

+0

Puede escribir un transporte personalizado en WCF. Vea esta pregunta ASÍ: http://stackoverflow.com/questions/381142/how-to-write-a-socket-based-custom-transport-for-wcf –

+2

No veo cuál es el problema con solo usar WCF . ¿Qué no puede hacer que lo necesites? – Aaronaught

+0

WCF es demasiado lento y con errores para una transferencia de datos de alta resolución infinita en tiempo real a través de sockets TCP. – Rella

Respuesta

0

Si su problema con WCF es el rendimiento, entonces debe probar el enlace binario neto TCP para eliminar la serialización XML para mejorar el rendimiento.

Algunas aplicaciones de alto tráfico, como los juegos en tiempo real, usan UDP para la mayoría de las comunicaciones, ya que corta el protocolo. Con TCP, obtiene ordenamiento y confiabilidad incorporados, pero esto tiene un costo de rendimiento porque retrasará implícitamente que los paquetes esperen paquetes desordenados para que puedan entregarlos a la aplicación en el orden correcto, o esperar por paquetes perdidos. ser resentido En su lugar, puede usar UDP e implementar su propio esquema para la verificación de datos que es menos estricto que TCP.

Hay opciones de UDP disponibles para WCF, o puede implementar las suyas propias. WCF no es más que una bomba de mensajes, y puedes reemplazar diferentes pasos con lo que quieras.

+0

No puedo usar el enlace net-tcp porque es bastante difícil de conectar si viene de Flash y de otras cosas. Necesito desesperadamente más rápido y más fácil en la implementación de un protocolo de conexión como el que creé antes de usar con Sockets para la transferencia de datos en tiempo real. Mi único problema con las conexiones de sockets es que no puedo hacer que funcionen en buen par con WCF (en el mismo socket, para que mi servidor TCP esté disponible tal como llamo a mis servicios WCF) por una dirección simple pero legible) – Rella

+0

Y puedo no USE UDP en absoluto porque mi jefe está triste así y realmente necesitamos estar seguros de que todos los datos vinieron al cliente – Rella

+0

¿Pero qué diferencia hace UDP para asegurarse de que los datos provienen del Cliente? Sí, podría suponer con bastante buena certeza que las direcciones IP son correctas. Pero si se trata de un sitio público, realmente no sabrá qué cliente está haciendo la llamada. –

-1

No estoy seguro si esto lo ayudará o no, pero intente encender su servicio Net TCP Sharing.

1

Bueno, si va a desplegar en sockets puros, también podría hacer que su servicio actúe como proxy. Haga que los Servicios de WCF escuchen en otro puerto y su aplicación en el puerto deseado. Cuando recibe una solicitud en su aplicación, analiza manualmente el encabezado y verifica el clima, está destinado a su servicio o Servicio WCF. Si está destinado al servicio WCF, abra una conexión TCP al servicio WCF y pase los datos recibidos a él, y luego simplemente devuelva la respuesta de WCF al cliente.

Por otro lado, podría acelerar bastante WCF escribiendo su propio enlace personalizado. Mucho tiempo WCF pierde en la serialización que se realiza mediante la reflexión (que es lenta), dando la vuelta esto mejoraría considerablemente su velocidad.

Cuestiones relacionadas