HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Windows szerviz elérése Smart Tag-ból


Intelligens címkék lehetőségei 5. rész

Példaprogram letöltése

17820 bájt

Az alkalmazások egymással történő kapcsolatteremtésének leghatékonyabb módja, ha a .NET Remoting szolgáltatását építjük be a kommunikációban résztvevő felek kódjába. A távoli metódushívást Intelligens címkénkben most úgy demonstráljuk, hogy egy elindított Windows szervizzel lépünk kapcsolatba. Bemutatjuk, hogyan aktiválja a szerviz a távoli objektumot, melynek metódusát a címkénkből elérjük.

A mellékelt példa fordítása után futtassa le a mellékelt AddRegistry.reg állományt a Rendszerleíró adatbázis bejegyzéseinek elkészítéséhez.
A Smart Tag használatakor ügyelnie kell arra, hogy az alkalmazások helyes sorrendben legyenek elindítva. Elsőként a WService alkalmazást kell installálni, majd elindítani. A szerviz installálásához kapcsolódó útmutató a Szerviz készítése című szakaszban található.
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 forráskódot tartalmazó állományok elején meg kell adnunk, hogy a névtér osztályai közül melyekre van szükségünk.
A példában a Smart Tag számára figyelendő szó a MEGHAJTÓK, melynek felismerésekor megjelenhet a szükséges funkciót tartalmazó menü. A Szerviz elérése menüpontban elérhetjük a Windows szervizünket, mely aktivál egy objektumot. Az objektum GetDrives metódusa segítségével egy tömbben megkaphatjuk a számítógép meghajtóinak betűjelét.
A címke meghívja a távol aktivált objektum metódusát, majd egy üzenetpanelen megjeleníti a betűket.
RObject projekt
A projekt tartalmazza a távoli objektum osztályát, mely egy metódussal rendelkezik, nevezetesen a GetDrives metódussal.
public class Drives: MarshalByRefObject
  {
  public string[] GetDrives()
  {
    return Environment.GetLogicalDrives();   
  }
}
Szerviz létrehozása
A szerviz alkalmazás indulásakor aktiválja az objektumot, az OnStart metódusban. Első lépésben regisztrálja a TCP csatornát. A csatorna a 9999-es port-ot használja.
TcpChannel tc = new TcpChannel(9999);
ChannelServices.RegisterChannel(tc);
Létrehozzuk a típust, majd SAO SingleCall objektumként aktiváljuk azt.
Type t = typeof(RObject.Drives); RemotingConfiguration.RegisterWellKnownServiceType(t, "GetDrives", WellKnownObjectMode.SingleCall);
Az alkalmazást felhasználás előtt telepíteni kell a többi szerviz alkalmazás közé.
A telepítés menetét megkönnyítendő válaszuk ki a „Service1.cs [Design]” lapot. A Properties ablak alsó részén látható egy „Add Installer” link, melyre kattintva létrejön a projektünkhöz egy új forrás állomány ProjectInstaller.cs névvel. Ebbe automatikusan bekerül egy ServiceProcessInstaller és egy ServiceInstaller komponens, mely segít elvégezni a telepítést, eltávolítást.
Válasszuk a serviceInstaller1 komponenst és a DisplayName property-jének adjuk értékül a _DriveService szöveget. Ezzel azt érjük el, hogy a rendszer szerviz kezelő alkalmazásában a mi szervizünk _DriveService névvel jelenik meg a listában elsőként.
A tényleges telepítés elvégzéséhez még szükségünk lesz egy kis segédprogramra, mely része a Visual Studio.NET-nek. Ez az InstallUtil.exe lesz. Ennek kell paraméterként megadnunk a telepítendő szerviz alkalmazásunk EXE-jét elérési útvonallal. Ehhez indítsunk egy parancssort, méghozzá a Start - Programs - Microsoft Visual Studio.NET - Visual Studio.NET Tools - Visual Studio.NET Command Prompt menüponton keresztül. Erre a speciális parancssorra azért van szükség, hogy az InstallUtil alkalmazás bárhonnan elérhető legyen.
installutil <elérési út>\WService.exe
Az elérési útvonal természetesen mindig az aktuális legyen, ahol a szerviz alkalmazásunk is található.
Ha szeretnénk eltávolítani a szervizek közül az alkalmazásunkat, akkor ismét az InstallUtil.exe segédprogramot kell használnunk. Most viszont egy /u paramétert is kell használnunk jelezve, hogy most nem telepítés, hanem eltávolítás van.
installutil /u <elérési út>\WService.exe
Címke létrehozása
A címke ActionClass osztályában megoldjuk, hogy a távoli objektum metódusát meghívva, megjelenjen egy üzenetpanelen a kívánt adatsor. Itt is a fent említett szoftvercsatornát használjuk, melynek segítségével elérhetjük a 9999-es porton figyelő szervizünket.
TcpChannel tc = new TcpChannel();
...
A csatorna regisztráció után itt is elérjük a Drives objektumot.
ChannelServices.RegisterChannel(tc);
dr = (Drives)Activator.GetObject(typeof(RObject.Drives), "tcp://localhost:9999/GetDrives");
Meghívjuk a metódust, mely visszaadja a tömböt. Ezt feldolgozzuk.
string[] drives = dr.GetDrives();
message = "A számítógépen a következő meghajtók találhatók:" + '\u000D';
for(int i=0;i<drives.Length;i++)
{
  message += drives[i] + '\u000D';
}
Végül töröljük a csatorna regisztrációját.
ChannelServices.UnregisterChannel(tc);
...
MessageBox.Show(message);
A művelet végén megjelenik az üzenetpanel a megfelelő számú meghajtó betűjével. Ha nem érhető el a szerviz, vagy hiba történik az átvitelkor, akkor egy tájékoztató üzenet jelenik meg.

Cikksorozat

#IDKategóriaCikk címeSorozat
2591WindowsTippek és trükkök - RAS - Modem csengetési szám állítása1. rész
2622WindowsTippek és trükkök - Program futtatása más felhasználóként2. rész
2640WindowsA Windows ikonméretének megváltoztatása és Windows 2000 Asztaltémák3. rész
2657WindowsTippek és trükkök - Internet Explorer4. rész
2667WindowsTippek és trükkök5. rész
2684WindowsAlapértelmezések állítása, telepítési fájlok helye, intéző nézetek6. rész
2696WindowsBiztonsági trükkök7. rész
2702WindowsWindows XP trükkök8. rész
2729WindowsWindows 2000 és XP tippek, trükkök9. rész
2757WindowsRegistry trükkök10. rész
2784WindowsTippek, trükkök11. rész
2829WindowsTippek, trükkök12. rész
2889WindowsWindows XP tippek13. rész
2909WindowsTippek Windows XP-hez14. rész
2919WindowsWindows tippek15. rész
2924WindowsWindows tippek16. rész
2963WindowsWindows tippek17. rész
2973WindowsWindows Tippek18. rész
2981WindowsWindows tippek19. rész
2990WindowsTippek-trükkök20. rész
3027WindowsIIS tippek21. rész
3034WindowsWindows XP tippek-trükkök22. rész
3088WindowsWindows 2000/XP tippek, trükkök23. rész
3133WindowsWindows XP tippcsokor24. rész
3140WindowsWindows XP tippek, trükkök25. rész
3152WindowsXP és IIS tippek - trükkök26. rész
3158WindowsWindows XP tippek, trükkök27. rész
3168WindowsTippek, trükkök28. rész
3170WindowsRegistry trükkök29. rész
3179WindowsTippek, trükkök30. rész
3197WindowsWindows XP tippek, trükkök31. rész
3205WindowsTippek, trükkök32. rész
3214WindowsTippek, trükkök33. rész
3223WindowsTippek, trükkök34. rész
3233WindowsTippek, trükkök35. rész
3271WindowsTippek, trükkök36. rész
3307WindowsTippek, trükkök37. rész
3370WindowsTippek, trükkök38. rész
3399WindowsTippek, trükkök39. rész
3510WindowsTippek, trükkök40. rész
3611WindowsHardverrel kapcsolatos tippek, trükkök41. rész
3668WindowsRegistry trükkök42. rész
3711WindowsTippek, trükkök43. rész
3771WindowsTippek, trükkök44. rész
3801WindowsTippek, trükkök45. rész
3831WindowsTippek, trükkök46. rész
3891WindowsTippek, trükkök47. rész
3921WindowsTippek, trükkök48. rész
3981WindowsTippek, trükkök49. rész
4041WindowsTippek, trükkök50. rész
4071WindowsTippek, trükkök51. rész
4151WindowsTippek, trükkök52. rész
4171C#Tippek, trükkök53. rész
4211WindowsTippek, trükkök54. rész
4251WindowsTippek, trükkök55. rész
4281WindowsTippek, trükkök56. rész
3589DelphiTippek, trükkök57. rész
3718DelphiTippek, trükkök58. rész


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