| Potwierdzenie dostarczenia informacji do webserwisu [wiadomość #715] |
wto, 03 lipiec 2007 04:16  |
cinias Wiadomości: 5 Dołączył(a): maj 2007 |
Junior Member |
|
|
Witam,
Mam sobie Webservice napisany w BDS2006. I aplikację kliencką napisaną w C#
pod Windows CE 5.0. Problem polega na tym że urządzenie na którym działa w/w
aplikacja czasami jest poza zasięgiem sieci. To co robię w tej aplikacji
jest dosyć ważne ponieważ potwierdzam ilość danego produktu.
Mamy taką sytuację. Podczas potwierdzenia ilości tracę sieć i nie wiem czy
moje potwierdzenie doszło do webserwisu czy nie i nie wiem czy mam
potwierdzac jeszcze raz bo nie poszlo czy też rzeczywiscie poszło i zostało
wykonane.
Jeżeli potwierdze jeszcze raz gdzie wcześniej nie poszlo to ok ale jezeli
poszlo i potwierdze do będzie 2x tyle produktu analogicznie w drugim
przypadku
Pytanie jest takie. Czy jest możliwość sprawdzenia, jakaś metoda,
standardowe property bądz sposób czy moje operacja została odebrana przez
webserwis. Chodzi mi raczej o metodę standardową nie tylko dla tego
przypadku (potwierdzenia). Oczywiście sprawdzam przed potwierdzeniem czy mam
połączenie z bazą ale zakładam przypadek ze po sprawdzeniu trace siec i co
wtedy .....
Prosiłbym o wskazówki jeżeli ktoś spotkał się juz z podobnym problemem.
Pozdrawiam
Marcin
--
|
|
|
|
|
| Re: Potwierdzenie dostarczenia informacji do webserwisu [wiadomość #718 (odpowiedź na #715) ] |
wto, 03 lipiec 2007 07:58   |
bozysob Wiadomości: 6 Dołączył(a): czerwiec 2007 |
Junior Member |
|
|
On 3 Lip, 10:16, "cinias" <cin...@o2.pl> wrote:
> Witam,
>
> Mam sobie Webservice napisany w BDS2006. I aplikację kliencką napisaną w C#
> pod Windows CE 5.0. Problem polega na tym że urządzenie na którym działa w/w
> aplikacja czasami jest poza zasięgiem sieci. To co robię w tej aplikacji
> jest dosyć ważne ponieważ potwierdzam ilość danego produktu.
>
> Mamy taką sytuację. Podczas potwierdzenia ilości tracę sieć i nie wiem czy
> moje potwierdzenie doszło do webserwisu czy nie i nie wiem czy mam
> potwierdzac jeszcze raz bo nie poszlo czy też rzeczywiscie poszło i zostało
> wykonane.
> Jeżeli potwierdze jeszcze raz gdzie wcześniej nie poszlo to ok ale jezeli
> poszlo i potwierdze do będzie 2x tyle produktu analogicznie w drugim
> przypadku
>
> Pytanie jest takie. Czy jest możliwość sprawdzenia, jakaś metoda,
> standardowe property bądz sposób czy moje operacja została odebrana przez
> webserwis. Chodzi mi raczej o metodę standardową nie tylko dla tego
> przypadku (potwierdzenia). Oczywiście sprawdzam przed potwierdzeniem czy mam
> połączenie z bazą ale zakładam przypadek ze po sprawdzeniu trace siec i co
> wtedy .....
>
> Prosiłbym o wskazówki jeżeli ktoś spotkał się juz z podobnym problemem.
>
> Pozdrawiam
>
> Marcin
>
> --
Ja bym to rozwiązał w następujący sposób:
Przy tworzeniu każdego zamówienia generował pewien GUID, który by
reprezentował takie potwierdzenie zamówienia i wraz z nim był wysyłany
na sewer gdzie byłby zapisywany gdzieś w bazie. Na serwerze
utworzyłbym też dodatkową metodę webową w stylu: bool Confirm(Guid
guid), która by zwracała true jeżeli zamówienie przesłane z danym
guidem zostało znalezione, w przeciwnym wypadku false.
Po stronie klienta po wysłaniu zamówienia, odrazu (lub po jakimś tam
"delayu") wywoływałbym metodę Confirm i sprawdzał czy zamówienie
dotarło. Wywoływałbym ten confirm tak długo (pewno z jakimiś
"delayami") aż bym dostał odpowiedź, wtedy na podstawie odpowiedzi,
albo ponowiłbym wysłanie zamówienia (odpowiedź false), albo wyrzucił
je z pamięci czy robił coś tam innego (odpowiedź true).
Oczywiście ma to wszystko zastosowanie tylko wtedy, gdy możesz
zmodyfikować aplikację serwerową. Bardziej "nieskopoziomowo" to trzeba
by było pewnie poszukać coś o zadaniach tranzakcyjnych przez Web
Service, ale na tym to się zupełnie nie znam.
|
|
|
|
|
| Re: Potwierdzenie dostarczenia informacji do webserwisu [wiadomość #724 (odpowiedź na #723) ] |
śro, 04 lipiec 2007 07:24  |
bozysob Wiadomości: 6 Dołączył(a): czerwiec 2007 |
Junior Member |
|
|
On 4 Lip, 09:30, "Yamma" <y...@wp.pl> wrote:
> Użytkownik <bozy...@gmail.com> napisał w wiadomościnews:1183463925.570480.125800@n2g2000hse.googlegroups.com...
> On 3 Lip, 10:16, "cinias" <cin...@o2.pl> wrote:
>
> > Przy tworzeniu każdego zamówienia generował pewien GUID, który by
> > reprezentował takie potwierdzenie zamówienia i wraz z nim był wysyłany
> > na sewer gdzie byłby zapisywany gdzieś w bazie.
> > Po stronie klienta po wysłaniu zamówienia, odrazu (lub po jakimś tam
> > "delayu") wywoływałbym metodę Confirm i sprawdzał czy zamówienie
> > dotarło.
>
> IMO, wystarczyłoby wywołanie metody webserwisowej ubrać w try...catch. Jeśli
> w momencie gdy webserwis wywołuje instrukcję return nie ma połączenia z
> klientem, to powinno rzucić wyjątkiem. Wówczas można byłoby sprawdzać czy
> zamówienie dotarło.
> yamma
Faktycznie masz rację, nie ma sensu sprawdzać takiego zamówienia,
jeżeli odrazu mamy pewność że wszystko przebiegło ok.
|
|
|
Łączny czas generowania strony wyniósł 0,00646 sekund.