2008-10-16 18 views
5

Klienty pulpitu będą przesyłać dane przy użyciu WCF do centralnego serwera.Obsługa wersji dla klientów korzystających z WCF

Gdy schemat zmienia się itp., Powiedzmy, że 100 komputerów ma starą wersję klienta pulpitu, podczas gdy reszta korzysta z najnowszej wersji.

Co muszę zrobić po stronie serwera, aby obsłużyć obie wersje? Czy mogę utworzyć 2 punkty końcowe w WCF lub pojedynczy inteligentny punkt końcowy, który będzie określał wersję i działał zgodnie z nią?

uwaga: będzie przekazując informacje o wersji z klientem (jeśli jest wymagane to jest)

Odpowiedz

4

Masz do wyboru:

Po pierwsze należy się wersjami swoich umów serwisowych w każdym razie, z ich nazw; na przykład. http://idunno.org/2008/10/numpty zmieni się na http://idunno.org/2008/11/numpty, jeśli operacje serwisowe ulegną zmianie.

Podobnie z umowami na dane; jeśli jednak wszystko, co robisz do umowy danych, jest addytywne, możesz oznaczyć nowe pola jako opcjonalne;

[DataMember(IsRequired="false")] 

I dawni klienci będą działać. Powinno to wskazywać, że parametry do usługi i parametry powinny być również umowami na dane; daje to taką elastyczność.

MSDN ma more

+0

Moje uczucia dokładnie! –

+0

To jest świetna odpowiedź, ale dla przyszłych poszukiwaczy chcę tylko wspomnieć, że IsRequired jest faktycznie fałszywe domyślnie, więc nie trzeba go ustawiać jawnie. Ważnym punktem do zapamiętania jest to, aby nigdy nie zmieniać flagi IsRequired istniejącego członka z false na true i nigdy nie ustawiać nowych członków na true! Co najważniejsze przeczytaj link MSDN :) – Joshua

Powiązane problemy