2008-10-26 7 views
16

Tenemos R Server (R es un lenguaje de programación utilizado en el análisis estadístico) que básicamente toma un script y un archivo csv, procesa algunos datos y devuelve los resultados como texto.Enlaces de WCF - ¡tantos! ¿Cómo elijo uno?

Necesito escribir un servicio en el servidor R para que los clientes .net (podrían ser .Net Windows Forms o ASP.Net) puedan conectarse al servidor R, enviar el script y el archivo CSV, y obtener los resultados espalda.

Estoy confundido por los muchos enlaces diferentes disponibles para mí y la información en la web parece estar dispersa/dispersa sobre cuál elegir.

Además, ¿es mejor ejecutar el servicio en IIS, o como un servicio de escucha de tipo "línea de comando" separado (este último parece feo en comparación con IIS y no tengo idea de por qué alguien elegiría hacer esto si pudieran ejecutarlo en IIS)?

Respuesta

10

Personalmente, recomendaría la encuadernación más simple que da lo que necesita. He hecho bastantes WCF (algunos bastante complejos), y nunca he tenido que utilizar nada más que BasicHttpBinding; esto también permite la mayor compatibilidad posible con clientes que no sean .NET, y le permite usar cosas como MTOM para una transferencia binaria eficiente.

Re hosting; IIS es de hecho el más simple para una configuración cliente/servidor; dos puntos fuertes:

  • fácil de configurar SSL (es decir, que acaba de configurar IIS y WCF va a usar)
  • fácil de equilibrar la carga (solo equilibrar la carga de su batería de servidores Web)

(I creen WCF se ejecuta sobre BasicHttpProfile también puede aprovechar su compresión IIS [/ desinflado GZip] configuración, pero no me cita ...)

puede optar por utilizar una máquina aislada (por lo general a través de un servicio de windows) si (por ejemplo) quieres un servidor stateful de larga duración. IIS tiene este hábito (por diseño) de reciclar los grupos de aplicaciones, ¡lo cual no es bueno si se guarda algo en la memoria! Otro ejemplo es donde desea que ya se ejecute para un rendimiento rápido de "primer golpe" (en lugar de esperar a que IIS/ASP.NET se mueva). Un ejemplo que cubre ambos podría estar alojando un servidor WF (flujo de trabajo).

De nuevo; si no necesita esta complejidad, busque la opción más simple: alojamiento en IIS.

+1

interesantes para .NET para .NET. donde sé que no me importa la compatibilidad con no.Los clientes NET normalmente utilizo el enlace TCP, que parece ser correcto según el diagrama de flujo. http://weblogs.asp.net/spano/archive/2007/10/02/choosing-the-right-wcf-binding.aspx. Tu sugerencia es ciertamente la más simple, pero si tienes un buen libro/ejemplos/sabes lo que estás haciendo, conseguir otras ataduras funcionando no es mucho más esfuerzo. Creo que el caso para elegir IIS es más débil ahora que el Servicio de Activación de Proceso de Windows (WAS) está cerca. – RichardOD

8

De hecho, hay muchas opciones.

unión

Los enlaces disponibles de WCF son un conjunto de protocolos para escenarios comunes. Especifica información de transporte, mensaje y seguridad.

Al elegir un enlace, debe averiguar qué función necesita de él. p. es posible que necesite una forma de

  • autenticar a los clientes ya que no desea que todos puedan usar su servicio.
  • es posible que sea necesario cifrar los datos.
  • el servicio debe ser interoperable para clientes de otra plataforma.
  • la sobrecarga del mensaje se está convirtiendo en un problema.

Si sabe que los clientes son siempre de dot net, puede utilizar el enlace net tcp, que es más rápido que el enlace básicoHttpbinding. Sin embargo, basicHttpBinding es un protocolo interoperable, incluso los clientes de PHP o Java pueden hablar con él sin problemas.

Defina sus propios requisitos para el servicio y luego busque el enlace existente para satisfacer sus necesidades, si no hay ningún enlace existente, puede crear su propio enlace que se denomina enlace personalizado, podría combinar características de diferentes unirnos para alcanzar el objetivo.

Hosting

IIS es más escalable. Si su servicio no requiere el estado que debe alojarse en un proceso de daemon de larga ejecución (servicio de Windows o aplicación de consola), IIS es la opción, ya que es fácil habilitar la compresión y el cifrado de sus servicios.

Más sobre Encuadernación

Si usted quiere que su servicio que se llama en el navegador, es decir Javascript WebHttpBinding es bueno que la red del punto definido por usted. Puede utilizar enbableWebScript para hacer que el servicio comprenda JSON para javascript.

disponibilidad

Si una unión específica no puede cumplir con todos los requisitos, se puede exponer a cada servicio en diferentes vinculante en diferentes puntos finales. p.ej. host/soap host/nettcp host/json

0

Extracto del libro WCF4 de WROS "Todo incorporados en estas fijaciones están construidas sobre estándares que funcionan para escenarios específicos, pero también trabajará I que usted elige el incorrecto o menos eficiente. Entonces, ¿cómo elegir cuál es el adecuado para usted?

La decisión más obvia es si necesita interactuar con aplicaciones que no sean WCF. Si su servicio es comunicarse con clientes de WCF, entonces puede utilizar una de las vinculaciones con el prefijo "net." Recuerde que puede definir varios puntos finales para el mismo servicio que usarían diferentes enlaces. Esto le permite aprovechar o f optimizaciones del rendimiento para los clientes WCF, pero aún así brindan soporte para servicios ASMX y estándares WS- *. Estos brindan mayor seguridad y otras características que muchos clientes aprovechan f.

Por ejemplo, si desea establecer una comunicación WCF a WCF, elegir un NetTcpBinding con una codificación binaria hace que la comunicación sea cuatro o cinco veces más rápida que un BasicHttpBinding con codificación de texto.

Estos enlaces WCF-siempre debe cubrir la mayor parte de los casos que usted necesita: sin embargo, si necesita cambiar o crear una unión totalmente ne, WCF permite hacer esto de manera muy sencilla"

Cuestiones relacionadas