Megosztás:


AJAX-szolgáltatás összetett típusok mintával

A ComplexTypeAjaxService minta bemutatja, hogyan használható a Windows Communication Foundation (WCF) egy ASP.NET Aszinkron JavaScript- és XML-szolgáltatás (AJAX) létrehozására, amely összetett típusú példányokat hoz létre, és elküldi őket a szolgáltatás és az ügyfél között JavaScript Object Notation (JSON) néven. Az AJAX-szolgáltatásokhoz JavaScript-kóddal férhet hozzá egy webböngésző-ügyfélről. Ez a minta az alapszintű AJAX-szolgáltatásmintára épül.

A WCF AJAX-támogatása ASP.NET AJAX-tal való használatra van optimalizálva a ScriptManager vezérlőn keresztül. A WCF ASP.NET AJAX-tal való használatára vonatkozó példát az AJAX-mintákban talál.

Megjegyzés:

A minta telepítési eljárása és összeállítási utasításai a témakör végén találhatók.

A következő mintában szereplő szolgáltatás egy WCF-szolgáltatás, amely nem tartalmaz AJAX-specifikus kódot. Mivel az WebGetAttribute attribútum nincs alkalmazva, a rendszer az alapértelmezett HTTP-igét ("POST") használja. A szolgáltatás egyetlen művelettel rendelkezik, DoMathamely egy összetett, névvel ellátott MathResulttípust ad vissza. Az összetett típus egy szabványos adatszerződés-típus, amely szintén nem tartalmaz AJAX-specifikus kódot.

[DataContract]
public class MathResult
{
    [DataMember]
    public double sum;
    [DataMember]
    public double difference;
    [DataMember]
    public double product;
    [DataMember]
    public double quotient;
}

Hozzon létre egy AJAX-végpontot a szolgáltatásban az WebScriptServiceHostFactoryalapszintű AJAX-szolgáltatás mintájához hasonlóan.

Az ügyfélweblap ComplexTypeClientPage.aspx ASP.NET és JavaScript-kódot tartalmaz a szolgáltatás meghívásához, amikor a felhasználó a lapon a Számítás végrehajtása gombra kattint. A szolgáltatás meghívására szolgáló kód létrehoz egy JSON-törzset, és HTTP POST használatával küldi el, hasonlóan az AJAX szolgáltatáshoz HTTP POST-minta használatával .

A szolgáltatáshívás sikeres végrehajtása után hozzáférhet az egyes adattagokhoz (sumdifferenceproductés quotient) az eredményként kapott JavaScript-objektumon.

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;
}

A példa beállítása, elkészítése és futtatása

  1. Győződjön meg arról, hogy elvégezte a Windows Communication Foundation-minták One-Time beállítási eljárását.

  2. A megoldás ComplexTypeAjaxService.sln a Windows Communication Foundation mintáinak elkészítésében leírtak szerint.

  3. Navigáljon a http://localhost/ServiceModelSamples/ComplexTypeClientPage.aspx elemre (ne nyissa meg a ComplexTypeClientPage.aspx fájlt a böngészőben a projektkönyvtárból).

Lásd még