WCF hiba?

Címkék
WCF hiba?
2012-01-14T12:14:14+01:00
2012-01-16T15:53:49+01:00
2022-11-24T09:25:55+01:00
[OP]Destroy-man
Sziasztok!

Olyan problémám lenne a WCF-el, hogy pl. a törlés és a hozzáadás parancsok (amiket én írtam - egy listához ad egy új elemet, illetve egy kijelöltet töröl), csak a WCF test paneljén működik, ha WPF programból hívom meg, nem történik semmi változás. Debuggoltam a WCF-et WPF-es program futásakor: a függvényeket meghívja, de ettől függetlenül nem történik semmi, ugyanúgy azt a 4 fix elemet adja vissza ami be van égetve a programba, mindegy, hogy épp törölni szeretnék belőle, vagy hozzáadni.

Ezt mi okozhatja, hogy WCF test alatt működik (ebből gondolom, hogy a servive kód az rendben van), de WPF-ből meghívva, már nem csinál semmit?
WPF-ből így hívom meg:
ServiceClient client = new ServiceClient(); client.RemoveItems(); client.Close();
Mivel ez csak egy teszt alkalmazás így azért nincsen paramétere a törlésnek, azt fixen service oldalba beégettem neki.

Azért a rend kedvéért a törlés kódja:
public void RemoveItems() { termekek.Remove(termekek.Find(e => e.termek_neve.Equals("Vasaló"))); }

És az IService ide vonatkozó része (bár ebben olyan sok hibalehetőség nem lehet):
[OperationContract] void RemoveItems();

Remélem találkoztatok ilyen hibával, mert nekem erre legkésőbb szerdáig szükségem lenne, hogy működjön.
Mutasd a teljes hozzászólást!
Van lehetőség, hogy mindig ugyanaz a service fogadja a hívásokat:
WCF tutorial
Mutasd a teljes hozzászólást!

  • Helló!

    Ennyi információból elég nehéz kitalálni, mi lehet a gondod. Picit több kóddal lehet, hogy könnyebb lenne.

    Egy dolgot mindenképpen tisztázni kéne: hol tárolod a listád, amiből törölsz? A WCF service-ben hozod létre? Mert ha igen, akkor nem túl meglepő, hogy nem törlődik belőle semmi (látszólag), hiszen minden híváskor újra létrejön a fix 4 elemed.
    Mutasd a teljes hozzászólást!
  • Igen, a serviceben tárolom a list-et. Akkor ezek szerint ez lesz a problémája. Mit javasolsz, hol tároljam? A service kód:
    using System; using System.Collections.Generic; using System.Linq; using System.Runtime.Serialization; using System.ServiceModel; using System.Text; namespace KolcsonzoService { public class Service : IService { List<termek> termekek = new List<termek> { new termek() { termek_neve = "Porszivó", kolcsonozheto = true, ar = 2000 }, new termek() { termek_neve = "Fúrógép", kolcsonozheto = true, ar = 2500 }, new termek() { termek_neve = "Vasaló", kolcsonozheto = false, ar = 500 }, new termek() { termek_neve = "Mikróhullámú sütő", kolcsonozheto = true, ar = 1000 } }; public List<termek> GetTermek() { return termekek; } public void RemoveItems() { termekek.Remove(termekek.Find(e => e.termek_neve.Equals("Vasaló"))); } } }
    Mutasd a teljes hozzászólást!
  • Van lehetőség, hogy mindig ugyanaz a service fogadja a hívásokat:
    WCF tutorial
    Mutasd a teljes hozzászólást!
  • Mit javasolsz, hol tároljam?


    Nyilván ez feladattól és a konkurrens hozzáférésektől is függ: adatbázis, XML, akár a Benjy által említett singleton WCF...

    Bár itt az elfogadott válasz szerint ez utóbbi nem ajánlott:

    Singleton service should be used in very rare cases. Most of the time usage of singleton service only means wrong architecture.


    Singleton WCF
    Mutasd a teljes hozzászólást!
  • Azt az elején nem írtam, hogy a feladatban tilos használnunk bárminemű adatbáziskezelőt, viszont olyannak kell lenni a programnak, hogy a későbbiekben könnyedén átírható legyen adatbázis használatra. Ezért is választottam a WCF-et, mert itt csak a service szolgáltatást kell átírni, magához a programhoz nem kell hozzá nyúlni.

    Singletonban tökéletesen működik, még úgy is, hogy a serviceben hagytam az adatokat. Ez csak egy DEMO program, pár adattal dolgozik, tehát az általad leírt hiba nagy valószínűséggel nem fog jelentkezni.
    Mutasd a teljes hozzászólást!
  • Azért jó fej vagy, hogy ugyan sikeresen diagnosztizálom a problémádat, mégis másnak adod a pontot.

    Nagyon szívesen.
    Mutasd a teljes hozzászólást!
  • Szia!

    Én nem nagyon foglalkoztam WCF-fel, szóval nem tudom, hogy miért nem ajánlott.

    Azért nem ajánlott, mert inkább adatbázist használjunk az adatok tárolására? Vagy valami másik oka van?

    Csak mert van azért olyan eset amikor szerintem használható. Pl ha userekkel állandó kapcsolatot tartunk fel (két irányú kommunikáció), és pl az egyik user kivált egy eventet, amiért a másik usernek le kell szólni. (Pl üzenetküldés)

    Persze lehet rosszul látom.

    Igen, amúgy a pont nem nekem járna szerintem se
    Mutasd a teljes hozzászólást!
  • Helló!

    Mivel a singleton-oknak közös mezői vannak, ez elég komoly problémákat tud okozni többfelhasználós elérés esetén. Az általam belinkelt esetben is az volt az alapprobléma, hogy a felhasználók adatai keverednek.

    Nyilván vannak olyan esetek, amikor mégis érdemes használni, pl. az általad említett nekem is ilyennek tűnik.
    Mutasd a teljes hozzászólást!
  • Szia!

    Bocsi, hogy nem neked adtam a pontot. Gondolkoztam rajta, hogy kinek is adjam, de mivel a singleton volt a célravezető megoldás, és azt Benjy írta először, ezért adtam neki a pontot.
    Mutasd a teljes hozzászólást!
  • Nem probléma, mert tényleg szívesen segítek, ha tudok, de legalább egy köszönöm jól esett volna.
    Mutasd a teljes hozzászólást!
  • Köszönöm a segítőkészségedet. Most már kezd összeállni a teljes program. Bár az még mindig rejtély számomra, hogy a WCF testben miért működött jól a dolog. Vagy ott automatikusan Singletonba fut a service? Végülis most már mindegy.
    Mutasd a teljes hozzászólást!
Címkék
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd