Dostęp do metody tylko przez jednego klinta.

0

Witam. Piszę aplikację w WCFie i mam pewien problem. Mam metodę w serwisie, do której chciałbym aby w danym momencie mógł wywołać tylko jeden klient a reszta czekała aż pierwszy skończy. Chodzi mi o taką synchronizację. Początkowo próbowałem czegoś takiego:

        [MethodImpl(MethodImplOptions.Synchronized)]
        public List<String> getDictionary() {

Ale widzę, że w WCFie to tak nie działa. Jak to zrealizować w WCFie?

1

Przeczytaj o slowie kluczowym "lock" i uzyj go wewn metody aby zapewnic wzajemne wykluczanie

0

Właśnie zastanawiałem się czy użyć lock czy tej adnotacji

[MethodImpl(MethodImplOptions.Synchronized)]

Gdzieś przeczytałem, że działają tak samo. To spróbuje z tym lockiem i zobaczymy.

Edit: Lock działa dzięki.

0

Czy jest to serwis wymagający sesji? Jak zdefiniowałeś właściwość InstanceContextMode atrybutu ServiceBehavior w implementacji kontraktu?
Po standardowym stworzeniu serwisu WCF w Visual Studio, przy każdym żądaniu obiekt serwisu tworzony jest na nowo, więc użycie lock nic nie da - chyba, że będzie lock na statycznej składowej, ale szczerze mówiąc nie wiem jak to się zachowa - lepiej unikać lock.

W poniższym linku masz opis jak możesz konfigurować zachowanie serwisu:
http://www.codeproject.com/Articles/86007/ways-to-do-WCF-instance-management-Per-call-Per

Wybierz odpowiedni w zależności od potrzeb.

0
gosc_z_pytaniem napisał(a):

Czy jest to serwis wymagający sesji? Jak zdefiniowałeś właściwość InstanceContextMode atrybutu ServiceBehavior w implementacji kontraktu?
Po standardowym stworzeniu serwisu WCF w Visual Studio, przy każdym żądaniu obiekt serwisu tworzony jest na nowo, więc użycie lock nic nie da - chyba, że będzie lock na statycznej składowej, ale szczerze mówiąc nie wiem jak to się zachowa - lepiej unikać lock.

W poniższym linku masz opis jak możesz konfigurować zachowanie serwisu:
http://www.codeproject.com/Articles/86007/ways-to-do-WCF-instance-management-Per-call-Per

Wybierz odpowiedni w zależności od potrzeb.

lock na statycznej skladowej zalatwi sprawe, Twoje rozwiazanie byloby odpowiednie gdyby caly serwis wymagal wzajemnego wykluczania (instancecontexmode odnosi sie do calego kontraktu). Koledze zalezy jednak jedynie na jednej, konkretnej metodzie.

0

True

1 użytkowników online, w tym zalogowanych: 0, gości: 1