jaka jest różnica między XSD a WSDL

178

Jaka jest różnica między XML Schemai WSDL?

Różnica, którą zauważyłem, polega na tym, że WSDLzawiera XSDi w WSDLmożemy zadeklarować operacje, ale nie w XSD. Czy to jest poprawne?

make
źródło

Odpowiedzi:

177

XSD definiuje schemat, który jest definicją struktury dokumentu XML. Możesz go użyć do sprawdzenia, czy dany dokument XML jest prawidłowy i czy jest zgodny z regułami określonymi w schemacie.

WSDL to dokument XML opisujący usługę WWW. Pokazuje, które operacje są dostępne i jak należy zorganizować dane, aby były wysyłane do tych operacji.

Dokumenty WSDL mają skojarzony plik XSD, który pokazuje, co można umieścić w dokumencie WSDL.

Paolo
źródło
15
Odpowiedź Paolo jest poprawna. Po prostu to ulepszam. Ponieważ WSDL jest w rzeczywistości XML i może, ale nie musi, mieć XSD do walidacji swojej struktury. Powiązany XSD może być oddzielnym plikiem i zaimportowany w WSDL lub pełny XSD może być osadzony bezpośrednio w pliku WSDL za pomocą tagu <WSDL: types>. Więcej szczegółów ibm.com/developerworks/webservices/library/ws-tip-imports
supernova
Jeśli są to w zasadzie dwie oddzielne rzeczy, dlaczego podczas tworzenia usługi internetowej, na przykład w Netbeans, automatycznie otrzymuję ?xsd=1w adresie URL?
CodyBugstein,
212

WSDL (Web Services Description Language) opisuje twoją usługę i jej operacje - jak nazywa się ta usługa, jakie metody oferuje, jakie parametry i wartości zwracane mają te metody?

To opis zachowania usługi - to funkcjonalność.

XSD (Xml Schema Definition) opisuje statyczną strukturę złożonych typów danych wymienianych przez te metody usługi. Opisuje typy, ich pola, wszelkie ograniczenia dotyczące tych pól (takie jak maksymalna długość lub wzorzec wyrażenia regularnego) i tak dalej.

To opis typów danych, a więc statycznych właściwości usługi - chodzi o dane.

marc_s
źródło
25
To znacznie lepsza odpowiedź wyjaśniająca XSD w kontekście WSDL, a nie tylko różnica między nimi. Aby dodać, definicje XSD są częścią WSDL w tagu <wsdl: types>.
airboss
Więc mógłbym mieć WSDL bez XSD, jeśli nie potrzebuję złożonej definicji danych?
esseara
61

XSD: Definicja schematu XML.

XML: eXtensible Markup Language.

WSDL: język definicji usługi sieci Web.

Nie mam zamiaru odpowiadać w kategoriach technicznych. To wyjaśnienie kieruję do początkujących.

Nie jest łatwo komunikować się między dwiema różnymi aplikacjami, które są tworzone przy użyciu dwóch różnych technologii. Na przykład firma w Chicago może opracować aplikację internetową przy użyciu języka Java, a inna firma w Nowym Jorku może opracować aplikację w języku C #, a kiedy te dwie firmy zdecydują się udostępniać informacje, pojawia się XML. Pomaga w przechowywaniu i transporcie danych między dwiema różnymi aplikacjami, które zostały opracowane przy użyciu różnych technologii. Uwaga: nie ogranicza się do języka programowania, zapoznaj się z transportem informacji między dwiema różnymi aplikacjami.

XSD to definicja schematu. Rozumiem przez to, że mówi użytkownikom, aby rozwijali swój XML w takim schemacie. Proszę spojrzeć na poniższe obrazy i uważnie obserwować element „load-on-startup” i jego typ, który jest liczbą całkowitą. Na obrazie XSD widać, że ma to być wartość całkowita dla "ładowania przy uruchomieniu", a zatem, gdy użytkownik utworzył swój XML, przekazał wartość int do tego konkretnego elementu. Przypominamy, że XSD to schemat i styl, podczas gdy XML to forma komunikacji z inną aplikacją lub systemem. Trzeba zobaczyć XSD i stworzyć XML w taki sposób, bo inaczej nie będzie się komunikował z inną aplikacją lub systemem, który został opracowany w innej technologii. Firma z Chicago dostarcza szablon XSD dla firmy w Teksasie, który umożliwia zapisanie lub wygenerowanie XML w podanym formacie XSD. Jeśli firma w Teksasie nie zastosowała się do tych zasad lub schematu, o których mowa w XSD, nie można oczekiwać poprawnych informacji od firmy w Chicago. Po powyższej historii jest tak wiele do zrobienia, które amator lub nowicjusz musi wiedzieć, kodując coś, co powiedziałem powyżej. Jeśli naprawdę chcesz wiedzieć, co stanie się później, lepiej porozmawiaj ze starszymi inżynierami oprogramowania, którzy faktycznie opracowali usługi internetowe. Następnie pojawia się WSDL, proszę postępować zgodnie z obrazkami i spróbować dowiedzieć się, gdzie będzie pasował WSDL. Jeśli naprawdę chcesz wiedzieć, co stanie się później, lepiej porozmawiaj ze starszymi inżynierami oprogramowania, którzy faktycznie opracowali usługi internetowe. Następnie pojawia się WSDL, proszę postępować zgodnie z obrazkami i spróbować dowiedzieć się, gdzie będzie pasował WSDL. Jeśli naprawdę chcesz wiedzieć, co stanie się później, lepiej porozmawiaj ze starszymi inżynierami oprogramowania, którzy faktycznie opracowali usługi internetowe. Następnie pojawia się WSDL, proszę postępować zgodnie z obrazkami i spróbować dowiedzieć się, gdzie będzie pasował WSDL.

*************** ======== Poniżej znajduje się częściowy obraz XML ========== ************ *** Obraz XML częściowo

*************** ======== Poniżej znajduje się częściowy obraz XSD ========== ************ ***

Obraz XSD częściowy

*************** ======== Poniżej znajduje się częściowy obraz WSDL ======= *************

Obraz WSDL częściowy

Musiałem stworzyć przykładowy plik WSDL dla usługi WWW o nazwie Book. Zauważ, że jest to XSD, ale musisz nazwać go WSDL (język definicji usługi sieci Web), ponieważ jest bardzo specyficzny dla usług sieci Web. Powyższy WSDL (lub innymi słowy XSD) został utworzony dla klasy o nazwie Book.java i utworzył usługę SOAP. Sposób, w jaki usługa internetowa SOAP utworzyła tę usługę, to inny temat. Należy napisać klasę Javy i przed jej uruchomieniem stworzyć usługę sieciową, użytkownik musi upewnić się, że jest zainstalowany Axis2 API i że Tomcat do hostowania usługi sieciowej jest na miejscu.

Jako serwisant (ten, który umożliwia innym (klientom) dostęp do informacji lub danych z ich systemów) w rzeczywistości daje klientowi (temu, który musi korzystać z informacji lub danych usługodawcy) pełny dostęp do danych za pośrednictwem usługi internetowej, ponieważ żadna firma nie Ziemia chce udostępnić swoją bazę danych osobom postronnym. Podobnie jak moja firma, postanowiliśmy przekazać informacje o produktach poprzez Web Services, stąd musieliśmy stworzyć szablon XSD i przekazać go kilku naszym klientom, którzy chcą z nami współpracować. Muszą napisać kod, aby w pełni wykorzystać dane XSD i wykonywać wywołania usługi sieci Web w celu pobrania danych od usługodawcy i konwersji zwróconych danych na odpowiednie wymagania, a następnie wyświetlają lub publikują dane lub informacje o produkcie na swojej stronie internetowej. Prostym przykładem może być rezerwacja biletów lotniczych. Linia lotnicza zezwoli stronom trzecim na wykorzystanie danych lotów w ich witrynie do sprzedaży biletów. Ale znowu jest w tym znacznie więcej, po prostu nie zezwalamy zewnętrznemu agentowi biletów lotniczych na sprzedaż biletów, będzie synchronizacja i bezpieczeństwo. Jeśli nie ma synchronizacji, istnieje 100% szansa, że ​​więcej niż 1 klient kupi ten sam bilet lotniczy z różnych źródeł.

Mam nadzieję, że eksperci przyczynią się do mojej odpowiedzi. Nowicjuszowi lub nowicjuszowi bardzo trudno jest zrozumieć XML, XSD, a następnie pracować nad usługami sieciowymi.

MKod
źródło
przynajmniej dało mi to wskazówkę, jak działają te technologie
MbaiMburu
10

XSD służy do weryfikacji dokumentu i zawiera metadane dotyczące XML, podczas gdy WSDL ma opisywać lokalizację i operacje usługi sieciowej.

Priyank Bolia
źródło
3

XSD (definicja schematu XML) definiuje element w dokumencie XML. Może służyć do sprawdzenia, czy elementy w dokumencie xml są zgodne z opisem, w którym ma zostać umieszczona treść. Podczas gdy wsdl to specyficzny typ dokumentu XML, który opisuje usługę internetową. Sam WSDL jest zgodny z XSD.

vivyzer
źródło
1

WSDL - zawiera operację, taką jak metody, które zapewnia usługa sieciowa. I te metody mogą akceptować proste typy danych, takie jak int, float itp. Oraz złożone typy danych, takie jak obiekty, wektory, tablice itp., Więc mapowanie tego do typu danych xml xsd jest używany. i na podstawie xsd użytkownik, który chce uzyskać dostęp do usługi sieciowej z innej platformy, może odpowiednio dostarczyć dane.

Odwiedź: ayazroomy-java.blogspot.com, aby przeczytać o podstawach usług sieciowych.

ayaz
źródło
0

XSD to schemat pliku WSDL. XSD zawiera typy danych dla WSDL. Element zadeklarowany w XSD jest prawidłowy do użycia w pliku WSDL. Możemy sprawdzić WSDL względem XSD, aby sprawdzić, czy usługa sieciowa jest poprawna. WSDL jest prawidłowy lub nie.

Snehal Więcej
źródło
0

Jeśli ktoś szuka analogii, ta odpowiedź może być pomocna.

WSDL przypomina polecenie „SHOW TABLE STATUS” w mysql. Definiuje wszystkie elementy (typ żądania, typ odpowiedzi, format adresu URL do żądania trafienia itp.), Które powinny być częścią XML. Z definicji mam na myśli: 1) Nazwy zapytania lub odpowiedzi 2) Co powinno być traktowane jako wejście, co powinno być traktowane jako wyjście.

XSD działa jak polecenie DESCRIBE w mysql. Mówi, jakie są wszystkie zmienne i ich typy, żądanie i odpowiedź.

Sunny Gangisetti
źródło
Czy DESC w mysql nie jest używane do sortowania? DESCRIBE jest jednak bardziej do tego podobne.
Mangs