C# - MSXML 4.0 COM komponens felhasználása kliens-oldali script-ben

forráskód letöltése
A Microsoft XML Core Service néven (MSXML) elérhetővé tett egy komponenst, melynek segítségével teljes támogatást kapunk ahhoz, hogy kliens-oldali script-ből juttassunk el kéréseket tetszőleges Web-alkalmazásokhoz, valamint XML-alapú szolgáltatásokat használjunk. A komponens most MSXML 4.0 Service Pack 2 néven elérhető a cég Webhelyén.
Mellékelt példa megnyitása előtt szükséges egy MSXMLTest nevű virtuális könyvtár létrehozása, mely a példa könyvtárára mutat. Ehhez nyissa meg a mappa Tulajdonság ablakát és itt a Webmegosztás lapon engedélyezze a mappa megosztását olvasási és parancsfájlok futtatási jogával.
A MSXML 4.0 Service Pack 2 telepítéséhez olvassa el a cikk Bevezetés című szakaszát.
Bevezetés
A csomag sok javítást tartalmaz, és jelentős fejlesztésen ment keresztül. A cikk írásakor a következő címről volt letölthető:
http://www.microsoft.com/downloads/details.aspx?FamilyID=3144b72b-b4f2-46da-b4b6-c5d7485f2b42&displaylang=en#filelist
A cím azóta természetesen meg is változhatott. Amennyiben a komponenst több eszközből és fejlesztőkörnyezetből kívánjuk elérni, ajánlatos letölteni a teljes változatot, mely msxml.msi néven kerül merevlemezünkre, és a MSXML 4.0 SDK összetevőt is tartalmazza, mely dokumentációt és jelentős segítséget nyújt a fejlesztéshez.
A Software Development Kit (SDK) alapértelmezésben nem installálódik. Ehhez a Custom telepítési módot kell választanunk, és gondoskodnunk kell az összetevő kijelöléséről.
A telepítés után a Windows rendszermappájába három állomány kerül: msxml4.dll, msxml4a.dll, és msxml4r.dll. Ezek közül az első regisztrálódik a Rendszerleíró adatbázisban.
Felhasználás a gyakorlatban
Képzeljük el, hogy a felhasználói kérés kiszolgálásához szükséges valamilyen adatbázisból vett információ. A MSXML segítségével megoldhatjuk ezt úgy, hogy kliens-oldalról adjuk meg a keresés paramétereit, és a kérést – még mindig kliens-oldalról – eljuttatjuk a kiszolgáló Web-alkalmazáshoz, mely lehet akár egy másik szerveren is.
A célalkalmazás ezt követően meghatározza a választ, visszajuttatja azt a kérő alkalmazásba úgy, hogy a választ kliens-oldalon tudjuk feldolgozni. Lássuk hogyan is használható erre a MSXML.
A példa-alkalmazásunkban a WebForm1.aspx lap töltődik be a felhasználóhoz, majd a kérést a WebForm2.aspx lapnak továbbítjuk. Ehhez szükségünk van egy JScript metódusra, melyben példányosítjuk a Microsoft.XMLHTTP objektumot.
var xmlObject = new ActiveXObject("Microsoft.XMLHTTP");
Az alkalmazásban a WebForm1.aspx lap a mellékelt products.xml állományból keresi meg a kapott azonosítóval rendelkező termék nevét, majd juttatja vissza ezt a választ a WebForm1.aspx lapnak.
A kérés elküldéséhez meg kell adnunk a WebForm2.aspx lap URL-jét, mely a következő lesz:
var url = "http://localhost/MSXMLTest/WebForm2.aspx?prid=" + id;
Az URL egy paraméterezett cím, melyben a prid változó tartalmazza a kért termék azonosítóját.
A komponens open metódusa megnyitja az adott URL-en megtalálható Web-es erőforrást, jelen esetben a WebForm2.aspx lapot.
xmlObject.open("POST",url,false);
A kérés POST módú lesz. A send metódussal pedig eljuttatjuk a kérésünket.
xmlObject.send();
A kérés eljuttatásának különlegessége, hogy a kapott választ el is tudjuk kapni, a komponens ResponseText property-jének kiolvasásával. Amennyiben ez „0”, akkor az alkalmazás jelezte, hogy nem megfelelő számot adtunk meg. Ellenkező esetben a property tartalmazza a kért terméknevet, melyet megjelenítünk a címkén.
A WebForm2.aspx lap a betöltődéskor kapja meg a paramétereket, de böngészőnkbe a lap nem töltődik be. A Response objektum Write metódusával juttatja vissza a kért információt.
Response.Write(name);
A metódus visszaküldené a lap teljes HTML kódját, amelyre természetesen nincs szükségünk, így azt töröljük.