HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Web szerviz elérése


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

Példaprogram letöltése

44129 bájt

Cikkünkben tovább folytatjuk a kalandozást az Intelligens címkék témakörében, egy újabb gyakorlati példa bemutatásával. Az elkészítendő címkénk a megfelelő szó felismerése után el tud érni egy Web szerviz alkalmazást, és képeket tud beilleszteni az éppen szerkesztett Word dokumentumba. A képeket a Webes szervizünk szolgáltatja. A képek SOAP csatornán történő mozgatásához felhasználjuk a Microsoft.Web.Services.Dime névteret.

Mellékelt példa megnyitása előtt szükséges egy SmartService nevű virtuális könyvtár létrehozása, mely a példa könyvtárában megtalálható SmartService mappá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.
A szerviz alkalmazás futtatása előtt gondoskodnunk kell arról, hogy a Web szerver virtuális mappájában engedélyezzük a névtelen hozzáférést.
A 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.
Első lépésként telepítenünk kell a Microsoft WSE 1.0 csomagot. Ennek elvégzéséhez olvassa el a Kezdeti lépések című fejezetet.
A feladatban három modult készítünk el, melyek szükségesek egy tetszőleges, a szerviz megfelelő mappájában található kép valamelyikének lekéréséhez, és beillesztéséhez.
A SmartService projekt tartalmazza a szerviz alkalmazás kódját, mely válaszolva a SOAP kérésre, eljuttatja a kért képet a klienshez.
A SmartForm projektünk egy űrlap kódját tartalmazza, mely lekérdezi a szerveren található képek listáját, és megjeleníti azok nevét egy listában, melyből ezt követően a felhasználó kiválaszthatja a megfelelőt.
A SmartTag projektünk pedig tartalmazza a címke kódját, mely egy adott képet beilleszt a dokumentum aktuális kurzorpozíciójába. A címke menüpontjai közül az elsővel listából választhatjuk a képet, míg a második menüpontra kattintva a szerviz képlistájából az elsőt illeszthetjük be.
Kezdeti lépések
A Microsoft által elkészített csomag a Web Services Enhancements for Microsoft .NET nevet viseli, és cikkünk írásakor a következő Webcímen volt elérhető, mely természetesen megváltozhatott: http://msdn.microsoft.com/webservices/building/wse/default.aspx.
Letöltve az állományt (Web Services Enhancements 1.0 for Microsoft .NET.msi) telepítenünk kell a .NET Framework alá. Az öntelepítő állomány erről gondoskodik, a használható .DLL állomány (Microsoft.Web.Services.dll), és a kapcsolódó dokumentáció alapértelmezésben a következő mappába kerül: %winroot%:\Program Files\Microsoft WSE\v1.0.2312\.
SmartService projekt
A WSE csomag névtereinek eléréséhez referenciaként mind a kliens, mind a szerver-alkalmazásokban meg kell adni a Microsoft.Web.Services.dll állományt. Ehhez válasszuk a Project - Add reference menüpontot, majd a megjelenő ablakban a .NET lapon keressük elő a Microsoft.Web.Services.dll elemet.
A szerviz három metódust tartalmaz. A GetImageList metódus egy karaktertömbben adja vissza a szerveren elérhető képek listáját.
A GetImage és GetNamedImage metódusokkal egy-egy képet küldhetünk el a kliensnek. A kettő között csak az a különbség, hogy az utóbbi egy paraméterben megkapja a küldendő kép nevét. Ez utóbbi szolgál arra, hogy a megjelenő űrlapon kiválasztott kép kerüljön beillesztésre. A metódus SOAP csatolt fájlként hozzáadja a képet a visszatérő bájtfolyamhoz.
[WebMethod]
public void GetNamedImage(string fname)
{
  string attfile = this.Server.MapPath("Images\\" + fname);
Létre kell hozni egy SoapContext objektumot, melynek segítségével kezelhetjük a SOAP üzeneteket:
  SoapContext rContext = HttpSoapContext.ResponseContext;
Létre kell hoznunk a csatolt állomány objektumát, melyben specifikálnunk kell az állomány típusát:
  DimeAttachment attachment = new DimeAttachment("image/gif", TypeFormatEnum.MediaType,attfile);
Majd fel kell fűzni a csatolt állományok listájára:
  rContext.Attachments.Add(attachment);
}
Web.confg állomány módosítása
A szerviz alkalmazásunkat konfigurálnunk kell annak érdekében, hogy helyesen értelmezze a kliens kéréseit. A <system.web></ system.web > elemeken belül be kell illesztenünk a következő sorokat:
<webServices>
  <soapExtensionTypes>
    <add type="Microsoft.Web.Services.WebServicesExtension,Microsoft.Web.Services,Version=1.0.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35" priority="1" group="0"/>
  </soapExtensionTypes>
</webServices>
Egyetlen lényeges elvárás ezzel kapcsolatban, hogy a type attribútumban megadott karakterlánc egy sorban legyen megadva.
Webes referenciák
Mind a címke, mind a megjelenő űrlap esetén egy-egy Webes referenciát kell megadnunk a Web szerviz alkalmazás eléréséhez, a proxy osztály létrehozásához.
A projektek gyorsmenüjében válasszuk a Web Reference menüpontot, majd a megjelenő ablak Address mezőjében adjuk meg a szervizünk eléréséhez szükséges URL-t, mely jelen esetben a következő:
http://localhost/SmartService/SmartService.asmx
A két projekt mappájában létrejön egy Web Reference alkönyvtár, ebben pedig egy localhost mappa. A mappában találunk egy Reference.cs állományt, mely a proxy kódját tartalmazza. A kódban helyezzük el a WSE névterére hivatkozó referenciát.
using Microsoft.Web.Services;
Majd a SService osztályt származtassuk a WebServicesClientProtocol osztályból.
SmartForm projekt
A címke két menüpontja közül az elsőre kattintva megjelenik a projekt generálta űrlap, melyben egy lista tartalmazza a beilleszthető képek nevét. A szerviz eléréséhez létrehozunk egy proxy példányt, majd meghívjuk a szerviz megfelelő metódusát mind a listázáshoz, mind a kép lekérdezéséhez.
svc = new localhost.SService();
...
A megadott névvel rendelkező kép lekérdezéséhez pedig meghívjuk a GetNamedImage metódust.
svc.GetNamedImage(listBox1.SelectedItem.ToString());
Majd ki kell olvasni a csatolt állományt, és be kell tölteni a PictureBox-ba:
if (svc.ResponseSoapContext.Attachments.Count == 1)
{
  pictureBox1.Image = new Bitmap(svc.ResponseSoapContext.Attachments[0].Stream);
}
A csatolt állományok száma nagyobb is lehet mint egy, azonban itt csak egy állományt tudunk felhasználni, így ellenőriznünk kell a mennyiséget.
A dialógusablak gombjára kattintva kimásolhatjuk a PictureBox kontrolban megtalálható képet a Vágólapra a Clipboard objektum segítségével, majd bezárjuk a dialógusablakot.
Clipboard.SetDataObject(pictureBox1.Image);
Close();
SmartTag projekt
A címke RecognizeClass osztályának Recognize metódusában végezzük el a „kép” szó azonosítását, majd kijelölését.
int i = Text.ToLower().IndexOf("kép");
if (i >= 0)
{
  RecognizerSite.CommitSmartTag(smartTagName, i+1, 3, RecognizerSite.GetNewPropertyBag());
}
Az ActionClass osztályban a get_VerbCount metódusában megadjuk, hogy két menüpontot tartalmaz a felismert szóra kattintáskor felbukkanó menü.
public int get_VerbCount(string SmartTagName)
{
  if (SmartTagName=="softwareonline#smarttag")
  {
    return 2;
  }
  ...
}
A menüpontok feliratait a get_VerbCaptionFromID metódusban adjuk meg.
string s="";
switch (VerbID){
  case 1: 
    s = "Kép választása listából";
    break;
  case 2: 
    s = "Kép beillesztése közvetlenül";
    break;
}
return s;
Az InvokeVerb metódusban megadjuk az egyes menüpontok választásakor végzendő feladatok kódját.
Az első menüpont választásakor megjelenítjük a SmartForm projekt űrlapját, és az ott kiválasztott képet illesztjük be.
switch (VerbID)
{
  case 1: 
  Form1 f = new Form1();
  f.ShowDialog();        
   wr.Paste();         
   break;
A második menüpont választásakor a proxy osztályt példányosítjuk, majd a GetImage metódusát hívjuk meg.
case 2: 
  svc = new localhost.SService();
  svc.GetImage();
Itt is egy PictureBox objektumban helyezzük el a kapott képet, annak ellenére, hogy itt nem jeleníthetjük meg azt.
  pb.Image = new Bitmap(svc.ResponseSoapContext.Attachments[0].Stream);
A képet kimásoljuk a Vágólapra, majd beillesztjük a dokumentumba.
  Clipboard.SetDataObject(pb.Image);
  wr.Paste();
  ...
}
A beillesztett kép minden esetben a jelölt szó helyére kerül.

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 429. 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 |