Hirdetés

Keresés

Új hozzászólás Aktív témák

  • bpx

    őstag

    válasz Gregorius #1627 üzenetére

    "Akár úgy, hogy egy extra metódushívást beleiktatsz a kontraktba, ami periodikusan küld egy dummy üzenetet"

    igen, a PingRequest()/PingReply() kb. ezt csinálja

    "A kódhoz kellene még a konfig is. Nagyon sok mindent jobbá lehet tenni vagy katasztrofálisan el lehet rontani egy WCF szolgáltatás konfigurációjával."

    az a gond, hogy Silverlight vs. IIS duplex kommunikáció van (amit hát mégegyszer nem biztos, hogy így csinálnék, de most már ez van...), tehát muszáj pollingduplexhttpbinding-et használni (vagy még nettcpbinding-ot lehetne, de szerintem az én esetemben a clients lista konkurrens hozzáférésével lesz valami gond, nem a szolgáltatás konfigurációjával)
    egyébként itt a konfig, semmi extra nincs benne (maxOutputDelay="00:00:01" - a kliens 1 mp-enként pollozzon, hogy jött-e neki üzenet)

    "Az mindenesetre már látszik, hogy ha void aszinkron hívásokat akarsz csinálni, akkor ajánlott az interfészen az OperationContract-ban megjelölni IsOneWay=true-ként és akkor nem kell külön szálat indítani minden ilyen híváshoz."

    na ez egy érdekes dolog, ezt így is a csináltam, a kliens (callback channel) összes metódusa

    [OperationContract(IsOneWay=true)]
    void ... (...)

    alakú

    ha nem így csináltam, akkor amikor a klienshez hozzáadtam a referenciát a szolgáltatáshoz (és feldolgozta a wsdl-t és generálta a megfelelő dolgokat), akkor dobott is egy warning-ot hogy ez így nem fog működni Silverlighttal - tehát ez megvan

    ennek ellenére, ha szerver oldalon hívok egy ilyen függvényt, és közben már nincs is kliens - akkor ha lejár a bindingban megadott timeout (2 perc, default 1 perc) kivételt dob, sőt addig a 2 percig még blokkol is (ezért indítottam még ennek is külön threadet és raktam try..catch blokkba

Új hozzászólás Aktív témák