Zanurkuj w Pythonie/Wprowadzenie do WSDL

Z Wikibooks, biblioteki wolnych podręczników.

Wprowadzenie do WSDL[edytuj]

Klasa SOAPProxy przeźroczyście przekształca wywołania lokalnych metod na wywołania zdalnych metod SOAP. Jak mogliśmy zobaczyć, jest z tym dużo roboty, ale SOAPProxy wykonuje to szybko i niewidocznie. Jednak nie dostarcza on żadnych środków służących do introspekcji metod.

Rozważmy to: dwa poprzednie podrozdziały pokazały przykłady wywoływania prostych zdalnych metod SOAP z jednym argumentem i jedną zwracaną wartością, a obydwa były prostym typem danych. Wymagało to znajomości URL-a serwisu, przestrzeni nazw serwisu, nazwy funkcji, liczby argumentów i typu danych każdego argumentu. Jeśli coś z tego pominiemy lub popełnimy w czymś błąd, wszystko nawali.

Jednak nie powinno to być wielką niespodzianką. Jeśli chcemy wywołać lokalną funkcję, musimy znać pakiet lub moduł, w którym ona się znajduje (odpowiednik URL-a serwisu i przestrzeni nazw). Potrzebujemy także znać poprawną nazwę funkcji i poprawną liczbę argumentów. Python doskonale radzi sobie z typami danych bez wyraźnego ich określenia, jednak my nadal musimy wiedzieć, ile argumentów mamy przekazać i na ile zwróconych wartości będziemy oczekiwać.

Ogromna różnica tkwi w introspekcji. Jak zobaczyliśmy w Rozdziale 4, Python pozwala Tobie odkrywać moduły i funkcje podczas wykonywania programu. Możemy wypisać wszystkie funkcje dostępne w danym module, a także gdy trochę popracujemy dokopać się do deklaracji i argumentów pojedynczych funkcji.

WSDL pozwala robić to samo z serwisami internetowymi SOAP. W języku angielskim WSDL jest skrótem od "Web Services Description Language". Mimo że został elastycznie napisany, aby opisywać wiele rodzajów różnych serwisów sieciowych, jest często wykorzystywany do opisywania serwisów SOAP.

Plik WSDL jest właśnie... plikiem. A dokładniej, jest plikiem XML. Zazwyczaj znajduje się na tym samym serwerze, który wykorzystujemy do użycia serwisu SOAP. Później w tym rozdziale, pobierzemy plik opisujący API Google i wykorzystamy go lokalnie. Nie oznacza to, że będziemy wywoływać Google lokalnie, ponieważ plik WSDL nadal będzie opisywał zewnętrzne funkcje rezydujące gdzieś na serwerze Google.

Plik WSDL przechowuje opis wszystkiego, co jest związane z wywoływaniem serwisu SOAP, czyli:

  • URL serwisu i przestrzeń nazw
  • typ serwisu sieciowego (prawdopodobnie wywołania funkcji są wykonywane za pomocą SOAP, jednak, jak było powiedziane wcześniej, WSDL jest wystarczająco elastyczny, aby opisać całą gamę różnych serwisów)
  • listę dostępnych funkcji
  • argumenty każdej funkcji
  • typy danych każdego argumentu
  • zwracane wartości każdej funkcji i ich typy danych

Innymi słowy, plik WSDL mówi o wszystkim, co potrzebujemy wiedzieć, aby móc wywoływać serwisy SOAP.