2016-08-11 40 views
8

Mam autorstwo WSDL i klienta/klienta, który implementuje operację AddCar, która ma dane dla modelu i koloru. Teraz jeden producent/serwer WS chce mieć również dane dotyczące długości. Zakładam, że inni producenci mają trudności z dostosowaniem się do tej zmiany z powodu outsourcingu wdrażania. Moje opcje to:Jak dodać element do operacji WS po stronie klienta dla 1 dostawcy, gdy są inni dostawcy?

  1. Marka nowa operacja AddCarWithLength
  2. zrobić 2 wersje WSDL i kodu konsumentów z tej samej operacji
  3. Wystarczy zaktualizować WSDL z opcjonalnym długości i obejmuje ona dane pracy tylko dla producenta, który chce to.
  4. Wystarczy zaktualizować plik WSDL za pomocą elementów 0-N nazwa-zestaw elementów vaue i uwzględnić dane operacji tylko dla producenta, który tego chce.
  5. Żądaj od klientów, że dostali firmę, która wdrożyła producenta WS, aby go zaktualizować.

Opcje:

  1. jest wykluczone
  2. Mam generowanego C# zajęcia w konsumenta/klienta, więc nie byłoby dwa zestawy kodu. Nadal musiałbym wiedzieć (być może z parametrem konfiguracyjnym lub smthn), którego wersja producent/serwer używa
  3. Oznacza, że ​​muszę tylko wiedzieć, z którym producentem/serwerem rozmawiam.
  4. samo jak 3, ale pozwoliłoby przyszłość rozciągliwość
  5. może być problematyczne

Pytanie: Jaki jest poprawny/najlepszy sposób to zrobić, gdy wymagający wszystkich producentów mają być aktualizowane mogą być nierealne?

Odpowiedz

0

WSDL znane są z cennych definicji. Na początku usługi powinny być zawsze zaprojektowane z jasnym obrazem użytkowania i przyszłości. W każdym razie, teraz rozumiem, że dodałem atrybut (element danych - długość) do istniejącej usługi WCF. Moja sugestia byłoby,

  1. Analizować i dodać klasę niestandardową Ciebie i nazwij go jako umowa danych i dodać do operacji WCF i narazić go jako nowego kontraktu/interfejs obsługi.

Np. w samochodzie klasy, mają członka danych jako właściwości. Dzięki właściwościom wim zdefiniuj wszystkie elementy wyników analizy, takie jak: długość, szerokość, kolor, waga itp. Dodaj również Dictionary<string,string> CustomAttributes;, aby w przyszłości można było z niego korzystać.

  1. Podobny do powyższego, ale jeśli nie masz dużo czasu. bez żadnej analizy wystarczy dodać Dictionary<string,string> Parameters; i ujawnić nową umowę i wykorzystać to.
+0

dzięki! Używam Top-> Down Development, więc dokonuję zmian w WSDL i generuję kod po. Sugerujesz moją opcję: "4. Zaktualizuj WSDL z elementami 0-N name-vaue i dołącz dane dotyczące działania tylko dla producenta, który tego chce." Jednak nie zajmiesz się głównym pytaniem, tj. Jak powinienem obsłużyć producentów A.K.A.Usługi internetowe, które nie mogą się dostosować do zmian. –