HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Kliens alkalmazás konfigurációs állományának elkészítése


Remoting konfiguráció állományokkal 2. rész

Példaprogram letöltése

18316 bájt

A sorozat ezt megelőző számában bemutattuk, hogyan lehet a kommunikációban résztvevő felek közül a szerver-alkalmazás csatornafoglalási, és objektum-aktiválási beállításait megadni egy konfigurációs állományban, melynek eredményeképpen rugalmasan tudjuk testre szabni ezen tulajdonságokat. Mai cikkünkben bemutatjuk, milyen XML-elemeket használhatunk fel arra, hogy a kliens-alkalmazás beállításait is egy ilyen állományban helyezhessük el.

A program használatakor ügyelnie kell arra, hogy az alkalmazások helyes sorrendben legyenek elindítva. Elsőként a RServer alkalmazást kell elindítani.
A konfigurációnak ez a formája óriási szabadságot, és rugalmasságot ad, mely hatalmas kódolási munkától kíméli meg a fejlesztőket, ha egy alkalmazást többféle csatornahasználatra kell alkalmassá tenni. Elegendő azt szem előtt tartani, hogy az egymással kommunikáló programok ugyanazt a csatornát, és port-ot használják. Ezek a beállítások mind megtehetők a kliens-alkalmazás konfigurációs állományában is, így felhasználás előtt csak át kell írni az állományok tartalmát a kívánt adatokat megadva benne.
A konfigurációs fájl neve kliens-alkalmazás esetén is megegyezik a konfigurálandó alkalmazás teljes (kiterjesztéssel értendő) nevével, kiterjesztése pedig .CONFIG. Például a kliens-alkalmazásunk (RClient.exe) konfigurációs állománya a RClient.exe.config nevet viseli.
A mellékelt példa a múlt részben használt alkalmazás, melyben a kliens egy, a szerver aktiválta SINGLECALL objektumot ér el. Az objektum AddMethod metódusának meghívásával pedig elvégzi az összeadást a megadott számokon.
A .NET Framework Remoting szolgáltatásának, osztályainak eléréséhez meg kell adnunk referenciaként a System.Runtime.Remoting névteret. Ehhez válasszuk a Project - Add reference menüpontot, majd a megjelenő ablakban a .NET lapon keressük elő a System.Runtime.Remoting elemet.
A cikkben nem térünk ki arra, hogy miként épülnek fel az egyes projektek, hiszen a cikk előző számához képest csak a kliens-alkalmazás változott annyiban, hogy a beállításokat a létrehozott RClient.exe.config állományból olvassa ki.
RClient projekt
A kliens-alkalmazás konfigurációs állománya is hasonló felépítésű, mint a múlt részben megismert RServer.exe.config állomány. A lényeget itt is a határoló tagok között találjuk:
<configuration>
  <system.runtime.remoting>
    ...
  </system.runtime.remoting>
</configuration>
A következő szinten az <application></application> elemek találhatók, melyeknek négy lehetséges eleme lehet, de ezek közül itt csak a <channels> és értelemszerűen a <client> elemekre van szükségünk.
A <client> elemben specifikáljuk, hogy milyen típusú objektumot fogunk meghívni. A displyName attribútum megadása opcionális, azonban kliens-aktiválta objektumok (CAO) esetén az url attribútum megadása kötelező.
Lehetséges elemei <wellknown>, melynek segítségével a szerver aktiválta objektumok jellemzői specifikálhatók, és az <activated> elem, mellyel a kliens aktiválta objektumok adhatók meg. Attribútumaik:
Elem Attribútum Magyarázat
<wellknown> displayName A .NET Framework Cnfiguration Tool eszközében használt név.
- type Meg kell adni a hívott objektum osztályának nevét, valamint az Assembly nevét egy string-ben.
- uri A végponti objektum URL-je (neve). Pl. http://szervernév:port/objektumnév
<activated> type Meg kell adni a hívott objektum osztályának nevét, valamint az Assembly nevét egy string-ben.
A <channels> befogadó elemnek egy eleme van, ez pedig a <channel> tag. Attribútumai:
<channel> ref Referencia egy létező csatornatípusra.
- port A használni kívánt port száma.
A kliens-alkalmazás konfigurációs állománya tehát a következőképpen fest:
<configuration>
  <system.runtime.remoting>
    <application>
A következő szegmensben kell megadni a szerver aktiválta objektum jellemzőit, melynél egy fontos momentumra kell figyelmet fordítani: nevezetesen arra, hogy a közös kommunikációs port-számot, melynek a végén a szerver figyel, itt kell megadni az URL attribútumban. A szerver a 9001-es port-on hallgatózik, így az XML-ben a következőt kell megadnunk:
      <client>
        <wellknown type="RObject.RemoteObject,RObject" 
    url="http://localhost:9001/RServer"/>
      </client>
Látható, hogy a RObject névtér RemoteObject objektumát hívjuk meg, a szerverre a RServer névvel hivatkozhatunk. A csatorna adatait a következőben adjuk meg, a port számát kinullázva:
      <channels>            
        <channel ref="http" port="0" />
      </channels>
    </application>
  </system.runtime.remoting>
</configuration>
A kliens-alkalmazásban elegendő deklarálnunk a távoli objektumot:
private RemoteObject rc;
A KAPCSOLAT gombra kattintva beolvasni a konfigurációs állomány tartalmát, és példányosítani az objektumot. Ekkor felépül a kapcsolat a két alkalmazás között:
System.Runtime.Remoting.RemotingConfiguration.Configure("RClient.exe.config");
rc = new RemoteObject();
A LEKÉRDEZÉS gombbal hívhatjuk meg az objektum metódusát:
try
{
  textBox3.Text = rc.AddMethod(Convert.ToInt32(textBox1.Text), Convert.ToInt32(textBox2.Text));
}
catch(WebException we)
{
  ...
}
Az alkalmazásokban tehát látható, hogy néhány soros kódolással megvalósítható a kapcsolat specifikálása, így jut elegendő időnk a hasznos logikai kidolgozására.

Könyv
Ez a cikk megtalálható ebben a könyvben: C# Software Offline 2003 évkönyv 283. 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 |