HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Web-szerveren található DLL elérése


Kód futtatása Web-ről 1. rész

Példaprogram letöltése

14080 bájt

Egy sor webes alkalmazás választja azt a technológiát, hogy az alkalmazás futtatásához szükséges kódot le kell tölteni a kliens-oldalra. A .NET rendszer ezzel szemben törekszik annak népszerűsítésére, hogy a futó kód maradjon a szerver-oldalon – mondjuk a webes alkalmazás egy mappájában – és a kliensalkalmazás hívja meg innen. Most induló, kétrészes cikksorozatunkban ennek a technológiának a bemutatására törekszünk. A sorozat első részében egy példán keresztül megismerhetjük, hogyan lehet az alapvető lépéseket megtenni a szerverről történő futtatás megvalósítása érdekében, a második részben pedig bemutatjuk, hogyan adhatunk jogokat a szerveren futó kód számára a kliens gépén történő műveletekhez.

A mellékelt példa megnyitása előtt két lépést kell elvégezni, szigorúan a következő sorrendben. Első lépésben fordítsa le a példát, majd a Server projekt által generált Server.dll dinamikusan szerkeszthető könyvtárat másolja a SampleDir01 mappába. Második lépésben létre kell hozni egy SampleDir01 nevű virtuális könyvtárat, mely a példa mappájában található SampleDir01 könyvtárra 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 mellékelt példában úgy demonstráljuk a kód szerverről történő futtatását, hogy a létrehozott virtuális mappában elhelyezzük a betöltendő DLL-t, majd az assembly-t dinamikusan, a System.Reflection névtér osztályainak segítségével érjük el. A Server.dll assembly található a virtuális mappában, melyre egy URL megadásával hivatkozhatunk. A kliensalkalmazásban elérjük a DLL-t, példányosítjuk az osztályt, amit az assembly névterében implementáltunk, majd használjuk az osztályban megvalósított funkciókat, jelen esetben egy dialógusablakot jelenítünk meg a hívóalkalmazásban megadott szöveggel.
A szerverként funkcionáló projekt tulajdonképpen egy Windows-os alkalmazás, melynek generált kimenete egy DLL. A Form1 osztály egy Form, melyet megjelenítünk a kliensalkalmazásban történő gombnyomásra.
A Client projektben generált EXE jeleníti meg a fent említett DLL-ben megvalósított dialógusablakot.
Ennek érdekében megadjuk, hogy milyen URL-en érhető el a DLL.
string url = "http://localhost/SampleDir01/Server.dll";
Az URL felhasználásával létrehozunk egy Assembly objektumot az Assembly osztály statikus LoadFrom metódusa segítségével, mely speciálisan ezt a célt szolgálja.
Assembly a = Assembly.LoadFrom(url);
Az Assembly osztály GetType metódusának felhasználásával lekérdezzük a Form1 osztály típusát, és létrehozunk egy Type objektumot.
Type t = a.GetType("Server.Form1");
Az Activator osztály statikus CreateInstance metódusával létrehozunk egy példányt a Form1 osztályból, mintha csak a kliensalkalmazás saját mappájában lenne megtalálható a hívott DLL.
A Form1 osztályt úgy példányosítjuk, hogy meghívjuk az általunk definiált konstruktorát, melynek paraméterként átadjuk a kliensalkalmazás szövegmezőjében megadott szöveget. Így érhetjük el, hogy a szerver a kívánt szöveget jelenítse meg futáskor a TextBox kontrolban.
public Form1(string text)
{
  InitializeComponent();
  textBox1.Text = text;
}
A példányosítás úgy történik, hogy egy objektum-tömbben adjuk át a paramétert.
Object o = Activator.CreateInstance(t,new object[]{textBox1.Text});
A dialógusablak megjelenítése az osztály Show metódusával történik. A metódus meghívásához létre kell hoznunk egy MethodInfo objektumot.
MethodInfo mi = t.GetMethod("Show");
A metódus meghívása a MethodInfo osztály - MethodBase osztályból - örökölt Invoke metódusának meghívásával lehetséges. A metódusnak át kell adni első paraméterként az objektumot, mely a metódust implementálja, második paraméterben pedig a meghívandó metódus paramétereit egy object[] tömbben.
mi.Invoke(o,null);
A paraméterlista most NULL, mert a metódusnak nincs paramétere.
A Web-ről futtatott assembly-ben implementált dialógusablak osztályában eseménykezelők is deklarálhatók.

Cikksorozat

#IDKategóriaCikk címeSorozat
4397Windows.NET Framework konfigurálása az operációs rendszerben1. rész
4446Windows.NET Framework konfigurációs snap-in2. rész


Könyv
Ez a cikk megtalálható ebben a könyvben: C# Software Offline 2003 évkönyv 709. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |