C# - WSC komponens elérése ASP-ből

Windows Script Component lehetőségei 3. rész

forráskód letöltése
A sorozat korábbi számaiban megismerkedhettünk a Windows Script Component létrehozásának, és elérésének módjaival lokális környezetből, és távoli szerverről. Áttekintettük, milyen módon hozhatunk létre tagobjektumokat a komponensben. Ebben a cikkben bemutatjuk, hogyan hozható létre olyan komponens, mely COM komponensként példányosítható a weblapunk kódjából, legyen az egy .ASPX, vagy .ASP lap.
Mellékelt példa megnyitása előtt szükséges egy WSC03 nevű virtuális könyvtár létrehozása, mely a példa könyvtárára mutat. Ehhez nyissa meg a mellékelt 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.
Az ASPScriptlet komponenst felhasználás előtt regisztrálni kell. Ehhez kattintson az egér jobb gombjával a komponenst tartalmazó állományon, majd a menüből válassza ki a Regisztrálás menüpontot.
Az ASPScriptlet komponens
A komponenst létrehozhatjuk a Windows Script Component Wizard kisalkalmazással, vagy manuálisan a Notepad felhasználásával egyaránt. A komponensünk három property-vel rendelkezik, valamint két metódussal, melyeknek értéket adunk, illetve meghívunk a Web-alkalmazásunk lapjaiból.
Az alkalmazás WebForm1.aspx lapján elvégezhetünk egy összeadást úgy, hogy a művelet operandusainak értékét a szerkesztőmezők értékei adják, amelyeket a komponens AddNumbers metódusában használunk fel a számok összeadásakor.
A kapott értékkel tovább navigálhatunk a WebForm2.asp lapra, ahol a komponens példánya kiolvassa a QueryString kollekcióból a kapott paramétert, és a WriteParam metódusának meghívásával megjeleníti azt az ASP lapon.
A komponens kódját az alkalmazás mappájában található ASPScriptlet.wsc állomány tartalmazza.
A komponens deklarációja:
<?xml version="1.0"?>
<component id="ASPScriptlet">
<?component error="true" debug="true"?>
A regisztrációs bejegyzések:
<registration
  description="ASPScriptlet"
  progid="ASPScriptlet"
  version="1.00"
  classid="{ebd2bd24-e94d-45fa-926e-245359655500}">
</registration>
A property-k:
<public>
  <property name="Operand1"/>
  <property name="Operand2"/>
  <property name="param"/>   
A metódusok:
  <method name="AddNumbers"/>
  <method name="WriteParam"/>
</public>
Megadjuk, hogy a komponenst ASP-ből is el kívánjuk érni:
<implements type="ASP"/>
A kódoláshoz a komponens belsejében JScript nyelvet használunk. Az AddNumbers metódusban adjuk össze a két számot, melyeket a property-kben megadtunk:
<script language="JScript">
<![CDATA[
...
function AddNumbers()
{
  var n1 = new Number(Operand1);
  var n2 = new Number(Operand2);
  var result = n1 + n2;
  return result;
}
A komponens működésével kapcsolatban meg kell említenünk néhány gondolatot. A komponens magjában megírt kódot tehát elérhetjük a hívó ASP-kódból. Amikor az ASP komponens fut, akkor ugyanazt a névteret használja futáskor, mint amit a hívó ASP-lap használ, vagyis ugyanabban a környezetben „üzemel”. A komponens is eléri az ASP névtérben használható Request és Server objektumokat.
Ugyanazokat az Application és Session objektumokat éri el a komponens, mint amiket a szerveroldali alkalmazás elér, így az alkalmazás által egy adott kulccsal elhelyezett érték a komponensben kivehető a kulcs átadásával. Ez nagyban megkönnyíti a kapcsolattartást, és a kommunikációt a hívó környezet és a komponens közt.
A komponensben is meghívhatjuk a Response objektum Write metódusát – ahogy tettük ezt a példánkban - melynek eredményeképpen a metódus paraméterében megadott karakterlánc a hívó ASP-lapon jelenik meg.
Ennek ismeretében elegendő csak a következőt megadnunk a kapott paraméter kiírásához a WriteParam metódusban:
function WriteParam()
{
  Response.Write(param);
}
]]>
</script>
</component>
A WebForm1.aspx lap
Az ÖSSZEADÁS gombra kattintva lefuttatjuk a gombhoz rendelt JavaScript függvényt, melyben először létrehozzuk a komponens példányát:
function AddNumbers()
{
  ...
  var obj = new ActiveXObject("ASPScriptlet");
Beállítjuk a property-jeit a szerkesztőmezők értékeivel:
  obj.Operand1 = op1;
  obj.Operand2 = op2;
Meghívjuk a metódusát, majd az eredményt a szövegdobozba írjuk:
  res = obj.AddNumbers();
  document.all.result.value = res;        
}
A lap másik gombjával a WebForm2.asp lapra navigálhatunk, melynek átadjuk paraméterként az összeadás műveletének eredményeként kapott számot:
function doRedirect()
{
  window.navigate("WebForm2.asp?result=" + res);
}
A WebForm2.asp lap
A lap egy hagyományos ASP lap, melyben a HTML-kódok közé ágyaztuk a VBScript szintaktikával megírt ASP-kódjainkat. Az ASPScriptlet példány létrehozása után a Request objektum QueryString kollekciójából kivesszük a RESULT néven megtalálható számot:
<% Dim wscASP 
   Set wscASP = CreateObject("ASPScriptlet")
   wscASP.Param = Request.QueryString("result")
%>
Majd kiírjuk azt közvetlenül a lapra a WriteParam metódussal:
<%= wscASP.WriteParam()%>

Windows Script Component lehetőségei cikksorozat