6

Właśnie napisałem nową wersję usługi internetowej WCF i chcę się upewnić, że nie wprowadzono żadnych zmian w zakresie łamania umów dotyczących usług i danych.Usługa WCF Service Backward Compatibility Check

Wracając do mych dni jako programista VB6 Com Api, przypominam sobie, jak łatwo było określić poprzednią wersję wersji komponentu podczas kompilacji, a kompilator powinien sprawdzić, czy zachowana jest zgodność binarna.

Przewiduję coś podobnego, nazywane (miejmy nadzieję) "sprawdzianem zgodności kontraktów". Używałby metadanych do wykonania podobnego czeku do tego, który zrobił program VB6 dev env. Można to zrobić jako osobny krok kompilacji, który wykonałby narzędzie.

Jestem gotów przyjąć, że nie istnieje taka użyteczność. Jeśli tak jest, czy ktoś ma jakieś pomysły na temat tego, jak wyglądałby algorytm, aby to osiągnąć?

  1. Pobieranie metadanych z obecnej wersji serwisu na żywo
  2. Pobieranie meta danych z nową wersją serwisu
  3. Sprawdź uslug i każdy kontrakt danych dla kompatybilności. Tylko zgłaszanie zmian łamiących.

Krok 3 Wygląda byłoby skomplikowane, ale z pewnością do zautomatyzowania ...

+2

Jeśli występują problemy ze zgodnością, można używać przestrzeni nazw umów serwisowych do przechowywania wersji i przechowywać obie wersje, dopóki nie będziesz mieć pewności, że stary nie jest już używany. –

Odpowiedz

1

Nic takiego nie istnieje Andy, ale jeśli coś się i działa zgodnie z którą masz 2 DLL (jeden stary i jeden nowy) możesz użyć czegoś takiego jak BitDiffer, aby je porównać.

Był projekt na Codeplex, który pomógł w wydaniach WCF, ale nie pamiętam, jak to się nazywa, przepraszam.

Powodzenia

-Keith

+0

Możesz również spróbować porównać 2 biblioteki DLL za pomocą narzędzi ApiChange, LibCheck lub NDepend. – aponomarenko

4

Sytuacje te są rozwiązywane przez testowanie integracja/regresji. Piszesz testy integracyjne dla wersji początkowej i po zmodyfikowaniu usługi do nowej wersji ponownie uruchamiasz testy integracyjne przy użyciu starego klienta. Jeśli odniosą sukces, nic nie złamiesz. Jeśli się nie uda, zobaczysz dokładnie, jakie połączenia powodowały problemy.

+1

Dobra uwaga. To by załatwiło sprawę. Jeśli sprawdzenie statyczne nie jest możliwe, to sprawdzanie w czasie wykonywania byłoby najlepszą rzeczą. Dzięki –

0

próby wygenerowania testy jednostkowe używając "Codeplex WCF Load Test" do starej umowy interfejsu i uruchomić je na nowe:

Narzędzie to plik śledzenia WCF i proxy klienta WCF lub umowę interfejsu WCF i generuje test jednostki C#, który odtwarza tę samą sekwencję wywołań, co w pliku śledzenia. Test jednostkowy można następnie wykorzystać do przetestowania obciążenia obiektu.