Estoy tratando de entender cuándo usar los servicios de WCF en lugar de simplemente usar webclient o httpwebrequest. Creo que también estoy buscando entender la diferencia entre los patrones de diseño que serían apropiados para ambos.¿Cuándo es apropiado usar WCF sobre webclient o httpwebrequest?
Respuesta
¿Estás hablando de cuándo crear un servicio WCF usted mismo (sobre el servicio web), o cuándo consumir un servicio web existente utilizando WCF en lugar de clientes .NET 2.0 ASMX?
En cuanto a la creación de un servicio WCF mismo:
- le da mucho más opciones en términos de alojamiento (en una aplicación, servicio de Windows, IIS, WAS)
- le da mucho más opciones de seguridad
- Le brinda muchas más opciones de protocolo (además de HTTP, también puede usar WS- *, TCP, Canalizaciones con nombre, MSMQ y más)
- Le permite escribir su servicio una vez y exponerlo en múltiples terminales puntos con diferentes protocolos al mismo tiempo
En cuanto a usar WCF para hablar con un servicio web HTTP (ASMX) existente, no veo muchos beneficios masivos, excepto que WCF usa más configuración sobre el código, y puede ser bueno estandarizar en uno manera de hacer las cosas, si ya usas otros servicios WCF, de todos modos.
Marc
Actualmente estoy usando WCF para la mayoría de las cosas que usaría WebClient o HttpWebRequest/HttpWebResponse en el pasado. Si bien definitivamente hay gastos generales para aprender a hacer llamadas a los métodos web utilizando WCF, la extensibilidad de WCF y la abstracción que proporciona hace que sea mucho mejor candidato para este tipo de llamadas.
Ya lo he usado para hacer llamadas a Akismet y RPX con bastante facilidad.
Para empezar, me vería en la sección de la documentación de MSDN titulado "WCF Programación Web Object Model", ubicados en:
- 1. ¿Cuándo es apropiado usar CacheItemRemovedCallback?
- 2. ¿Cuándo es apropiado usar IoC?
- 3. ¿Cuándo es apropiado usar couchDB?
- 4. ¿Cuándo es apropiado usar genéricos versus herencia?
- 5. Enviando solicitudes HTTP con C# HttpWebRequest o WebClient?
- 6. ¿Cuándo es apropiado usar el atributo KnownType?
- 7. ¿Cuándo es apropiado usar métodos virtuales?
- 8. ¿Cuándo no es apropiado usar tablas derivadas?
- 9. HttpWebRequest Vs clase webclient que es mejor
- 10. ¿Cuándo es apropiado usar una asociación bidireccional y cuándo no?
- 11. ¿Cuándo es apropiado usar variables finales en blanco?
- 12. ¿Cuándo es apropiado usar static (sobre espacios de nombres sin nombre) en C++?
- 13. ¿Cuándo es apropiado usar UUID para un proyecto web?
- 14. ¿Cuándo es apropiado usar procesadores de contexto Django?
- 15. .NET: WebBrowser, WebClient, WebRequest, HTTPWebRequest ... ¡ARGH!
- 16. MonoDroid HttpWebRequest y WebClient no fiables?
- 17. ¿Cuándo es apropiado usar Time # utc en Rails 2.1?
- 18. ¿Cuándo es apropiado usar tipos de datos de precisión flotante?
- 19. ¿Cuándo es apropiado el retroceso recursivo?
- 20. ¿Cuándo utiliza WCF app.config o web.config?
- 21. WebClient es muy lento
- 22. Cuándo usar HashMap sobre LinkedList o ArrayList y viceversa
- 23. ¿Cuándo debería usar FrameworkPropertyMetadata o UIPropertyMetadata sobre PropertyMetadata simple?
- 24. ASN.1 contra JSON ¿cuándo es apropiado usarlos?
- 25. Cuándo usar los servicios de datos WCF y cuándo no?
- 26. Cuándo y dónde debo usar WCF
- 27. ¿Cuándo es bueno usar FTP?
- 28. Cuándo es necesario/apropiado usar InAttribute y OutAttribute para COM Interop
- 29. ¿Cuándo es apropiado responder con un error HTTP 412?
- 30. Cuándo usar (o no usar) un delegado