Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
A SimpleAjaxService minta bemutatja, hogyan használható a Windows Communication Foundation (WCF) egy alapszintű ASP.NET Aszinkron JavaScript- és XML-szolgáltatás (AJAX) szolgáltatás létrehozására (egy szolgáltatás, amelyet a böngészőügyfél JavaScript-kódjának használatával érhet el). A szolgáltatás az WebGetAttribute attribútum használatával biztosítja, hogy a szolgáltatás válaszoljon a HTTP GET-kérelmekre, és úgy van konfigurálva, hogy a Válaszok JavaScript Object Notation (JSON) adatformátumát használja.
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 beállítási eljárása és összeállítási utasításai a témakör végén találhatók.
Az alábbi kódban az WebGetAttribute attribútumot alkalmazza a rendszer a Add műveletre, hogy a szolgáltatás válaszoljon a HTTP GET-kérelmekre. A kód a GET-t használja az egyszerűség kedvéért (bármilyen webböngészőből létrehozhat HTTP GET-kérést). A GET használatával is engedélyezheti a gyorsítótárazást. Az attribútum hiányában WebGetAttribute a HTTP POST az alapértelmezett.
[ServiceContract(Namespace = "SimpleAjaxService")]
public interface ICalculator
{
[WebGet]
double Add(double n1, double n2);
//Other operations omitted…
}
A minta .svc fájl használja WebScriptServiceHostFactory, amely egy standard végpontot WebScriptEndpoint ad hozzá a szolgáltatáshoz. A végpont a .svc fájlhoz képest egy üres címen van konfigurálva. Ez azt jelenti, hogy a szolgáltatás címe http://localhost/ServiceModelSamples/service.svc, és nincsenek további utótagok, kivéve a művelet nevét.
<%@ServiceHost language="C#" Debug="true" Service="Microsoft.Samples.SimpleAjaxService.CalculatorService" Factory="System.ServiceModel.Activation.WebScriptServiceHostFactory" %>
Ez WebScriptEndpoint előre konfigurálva van, hogy a szolgáltatás elérhető legyen egy ASP.NET AJAX-ügyféloldalról. A Web.config következő szakasza további konfigurációs módosításokat hajthat végre a végponton. Eltávolítható, ha nincs szükség további módosításokra.
<system.serviceModel>
<standardEndpoints>
<webScriptEndpoint>
<!-- Use this element to configure the endpoint -->
<standardEndpoint name="" />
</webScriptEndpoint>
</standardEndpoints>
</system.serviceModel>
A WebScriptEndpoint szolgáltatás alapértelmezett adatformátumát XML helyett JSON értékre állítja. A szolgáltatás meghívásához lépjen http://localhost/ServiceModelSamples/service.svc/Add?n1=100&n2=200 a jelen témakör későbbi részében látható beállítási és összeállítási lépések elvégzése után. Ezt a tesztelési funkciót http GET-kérés használatával engedélyezheti.
Az ügyféloldal SimpleAjaxClientPage.aspx ASP.NET kódot tartalmaz a szolgáltatás meghívásához, amikor a felhasználó a lap egyik művelet gombjára kattint. A ScriptManager vezérlő segítségével a szolgáltatás proxyja elérhető a JavaScripten keresztül.
<asp:ScriptManager ID="ScriptManager" runat="server">
<Services>
<asp:ServiceReference Path="service.svc" />
</Services>
</asp:ScriptManager>
A helyi proxy példányosítása és a műveletek meghívása a következő JavaScript-kóddal történik.
// Code for extracting arguments n1 and n2 omitted…
// Instantiate a service proxy
var proxy = new SimpleAjaxService.ICalculator();
// Code for selecting operation omitted…
proxy.Add(parseFloat(n1), parseFloat(n2), onSuccess, onFail, null);
Ha a szolgáltatáshívás sikeres, a kód meghívja a onSuccess kezelőt, és a művelet eredménye megjelenik egy szövegdobozban.
function onSuccess(mathResult){
document.getElementById("result").value = mathResult;
}