Servicio AJAX mediante el uso de ejemplo de tipos complejos
El ejemplo ComplexTypeAjaxService muestra cómo utilizar Windows Communication Foundation (WCF) para crear un servicio XML (AJAX) y JavaScript asincrónico ASP.NET que cree instancias de tipos complejos y los envíe entre el servicio y cliente como notación de objetos JavaScript (JSON). Puede tener acceso a un servicio de AJAX utilizando el código JavaScript de un cliente del explorador web. Este ejemplo se basa en el ejemplo de servicio AJAX básico.
La compatibilidad de AJAX en WCF se optimiza para su uso con ASP.NET AJAX a través del control ScriptManager. Para obtener un ejemplo sobre cómo usar WCF con ASP.NET AJAX, consulte el artículo sobre los ejemplos de AJAX.
Nota
El procedimiento de instalación y las instrucciones de compilación de este ejemplo se encuentran al final de este tema.
El servicio en el ejemplo siguiente es un servicio WCF sin el código específico de AJAX. Dado que no se aplica el atributo WebGetAttribute, se utiliza el verbo HTTP predeterminado ("POST"). El servicio tiene una operación, DoMath
, que devuelve un tipo complejo denominado MathResult
. El tipo complejo es un tipo de contrato de datos estándar, que tampoco contiene ningún código específico de AJAX.
[DataContract]
public class MathResult
{
[DataMember]
public double sum;
[DataMember]
public double difference;
[DataMember]
public double product;
[DataMember]
public double quotient;
}
Cree un extremo AJAX en el servicio mediante el uso de la clase WebScriptServiceHostFactory, exactamente igual que en el ejemplo de servicio AJAX básico.
El cliente de la página web ComplexTypeClientPage.aspx contiene código ASP.NET y JavaScript para invocar el servicio cuando el usuario hace clic en el botón Realizar cálculo de la página. El código para invocar el servicio construye un cuerpo de JSON y lo envía utilizando HTTP POST, similar al ejemplo de servicio AJAX mediante HTTP POST.
Después de que la llamada del servicio tenga éxito, puede tener acceso a los miembros de datos individuales (sum
, difference
, product
y quotient
) en el objeto JavaScript resultante.
function onSuccess(mathResult){
document.getElementById("sum").value = mathResult.sum;
document.getElementById("difference").value = mathResult.difference;
document.getElementById("product").value = mathResult.product;
document.getElementById("quotient").value = mathResult.quotient;
}
Configurar, compilar y ejecutar el ejemplo
Asegúrese de que ha llevado a cabo el Procedimiento de instalación única para los ejemplos de Windows Communication Foundation.
Compile la solución ComplexTypeAjaxService.sln tal y como se describe en Compilación de los ejemplos de Windows Communication Foundation.
Navegue a
http://localhost/ServiceModelSamples/ComplexTypeClientPage.aspx
(no abra ComplexTypeClientPage.aspx en el explorador del directorio del proyecto).