2010-12-03 17 views
7

El objetivo es crear un conjunto de servicios web que las personas puedan volver a utilizar. Estos servicios en su mayoría interactúan con un DB back-end que crea, recupera y procesa datos.WCF vs ASPX webmethods vs ASMX webmethods

Queremos exponer los servicios para que las personas puedan usarlos para crear mashups de datos y otras aplicaciones.

Los usuarios finales son páginas web que pueden estar dentro de nuestro dominio o fuera de nuestro dominio. Para páginas fuera del dominio, planeamos lanzar widgets que se configurarán para recuperar y mostrar los datos.

Un requisito: la aplicación debe ser extremadamente escalable en términos de la cantidad de usuarios que puede manejar.

Nuestro código base es .net y estamos buscando ASPX webmethods (o ASHX), ASMX webmethods y WCF (empezando a leer en WCF).

En términos de seguridad/acceso, encontré que mantener membresías de sessionid es factible en las tres. WCF parece un poco complicado de configurar. No pude ver de inmediato el valor de asmx cuando podemos hacer todo simplemente usando un webmethod en aspx (con un pequeño ajuste).

Además, suponiendo que con ASP.NET MVC2 pueda obtener direcciones URL limpias también para estos webmethods.

Preguntas

Cuál va a ser el más eficaz en términos de rendimiento y escalabilidad? ¿Por qué debería elegir WCF o ASMX?

Gracias por tomarse el tiempo para leer esta publicación y mis disculpas por las preguntas ingenuas ya que soy nuevo en .net.

EDIT Entiendo que WCF es el camino a seguir. Solo para comprender la evolución de las tecnologías sería bueno si alguien puede arrojar luz sobre por qué un método aspx web es diferente de un asmx cuando cosas similares (aparte del descubrimiento) pueden ser logradas por ambos. Los métodos web aspx pueden crearse para devolver datos en otros formatos (texto plano, json). Además, parece que podemos construir servicios relajantes usando ashx. Disculpas nuevamente por las preguntas ingenuas.

Respuesta

9

Debe usar WCF para desarrollar servicios web en .Net. WCF es altamente configurable con muchas opciones de seguridad, protocolos de transporte, serialización, extensiones, etc. Raw performance también es significativamente mayor. También se está desarrollando activamente WCF y se están agregando muchas características nuevas en la versión 3.5 y 4. También hay variaciones como los servicios de datos WCF y los servicios WCF RIA. WCF 4.0 también tiene un mejor soporte REST y JSON que puede usar directamente en ASP.Net/JQuery.

+0

Me he estado preguntando cuál fue el punto de usar WCF y su respuesta me hizo cambiar de opinión. Es genial ver que Jquery está recibiendo tanto apoyo. –

+0

El soporte de JQuery mejorará aún más. Ya puede obtener la versión preliminar de WCF Web API. http://wcf.codeplex.com/wikipage?title=WCF%20jQuery – softveda

+0

Las páginas ASMX también brindan soporte para JSON. http://encosia.com/asmx-and-json-common-mistakes-and-misconceptions/ – mattmc3

3

ASMX se considera tecnología en desuso y reemplazada por WCF. Entonces, si va a comenzar un nuevo desarrollo que exija la exposición de servicios reutilizables, WCF es el camino a seguir.

+3

¿Tiene un recurso real que puede citar con respecto a su afirmación de que ASMX está en desuso? – mattmc3

+1

Enlace a la documentación de la herramienta wsdl.exe para .NET 3.5: (http://msdn.microsoft.com/en-us/library/7h3ystb6(VS.90).aspx). Observe el texto "Este tema es específico de una tecnología heredada. Los servicios web XML y los clientes del servicio web XML deberían ahora crearse con Windows Communication Foundation (WCF)". – dana

1

No estoy necesariamente en desacuerdo con la respuesta anterior. Pero, desde una perspectiva diferente, WFC es complicado de configurar. Requiere enlaces, puntos finales, tamaños de paquetes, muchos parámetros de confusiones, etc. en sus archivos de configuración, y hay muchos problemas de serialización/deserialización reportados. También WCF es una tecnología relativamente nueva (por lo tanto, todavía está expuesto a errores y parches necesarios). Generado por el cliente [Referencia.cs] pueden tener interfaces no deseadas, y cada clase de cliente de propiedad pública expuesta en el WSDL se genera con el mismo patrón de observador que LINQ to SQL o Entity Framework usa (OnChanged, OnChanging, etc.) por lo que esto agrega mucha grasa al cliente código, a diferencia de la forma tradicional de cliente web SOAP. Mi recomendación, si no está utilizando Remoting sobre TCP o si no necesita el mecanismo de notificación bidireccional para cambios remotos, todas estas son características muy interesantes de WCF, no es necesario que lo use.

+2

-1 Su información no está actualizada. Entre otras cosas, WCF ha estado fuera desde 2006. También puede organizar fácilmente para no generar INotifyPropertyChanged, que no tiene nada que ver con los cambios remotos. –

+0

no debe pasar modelos de dominio a través de WCF de todos modos. –