Tworzenie Serwisów Sieci WWW

background image

Tworzenie serwisów sieci
WWW

W poprzednim rozdziale przedstawione zostały sposoby tworzenia komponentów
wykorzystywanych w aplikacjach ASP.NET. Z komponentów tych można korzystać za
pośrednictwem Internetu, aby zapewnić możliwości funkcjonalne stronom ASP.NET. Co się
jednak stanie, jeśli będziemy chcieli udostępnić te komponenty bez konieczności korzystania z
nich za pośrednictwem stron ASP.NET?

Serwisy sieci WWW są nowym sposobem uruchamiania aplikacji. Dzięki wykorzystaniu XML-a
oraz innych standardowych technologii serwisy sieci WWW umożliwiają aplikacjom oraz
komponentom na porozumiewanie się z innymi aplikacjami, niezależnie od miejsca w którym są
uruchamiane.

W tym rozdziale poznasz zasady tworzenia serwisów sieci WWW. Są one rewolucyjnym
sposobem myślenia o aplikacjach internetowych i stanowią niezwykle ważne zagadnienie dla
programistów ASP.NET. W kolejnym rozdziale dowiesz się, jak można wykorzystywać serwisy
sieci WWW we własnych aplikacjach.

W tym rozdziale omówione zostaną następujące zagadnienia:

Czym są serwisy sieci WWW.

Jak działają serwisy sieci WWW.

Kiedy należy ich używać.

Sposoby tworzenia serwisów sieci WWW.

Sposoby tworzenia serwisów sieci WWW przy wykorzystaniu istniejących obiektów
biznesowych.

Sposób działania WWW w nowym uj

ę

ciu

Gdy na początku niniejszej książki zaczynałeś swoje spotkanie z ASP.NET, poznałeś podstawowy
sposób działania sieci WWW — chodzi konkretnie o model operacji żądanie – odpowiedź. Klient
(na przykład, przeglądarka WWW) przesyła na serwer żądanie dotyczące wybranej strony, a
serwer, w odpowiedzi, przesyła klientowi tę stronę.

Później poznałeś rozwiązania programistyczne związane z siecią WWW. ASP.NET oraz inne
technologie pozwalające na wykonywanie określonych czynności w momencie odebrania żądania.
Udostępniając na serwerze możliwości programistyczne, można zwracać dane w sposób
dynamiczny. Choć ASP.NET rozszerza ten model o mechanizm działania sterowany zdarzeniami,
to jednak podstawowa zasada działania WWW pozostaje taka sama — wciąż jest to żądanie i
odpowiedź.

Strony ASP.NET udostępniają interfejs, pozwalający użytkownikom na interakcję z witryną
WWW. Poza tym interfejsem, zapewne pod postacią obiektów biznesowych, może się kryć
potężna logika działania aplikacji. Ale co można zrobić jeśli możliwości funkcjonalne jednej
aplikacji są tak potężne, że inni programiści chcą korzystać z nich w swoich aplikacjach? Albo co

background image

zrobić jeśli ktoś chce wykorzystać możliwości funkcjonalne, lecz nie może użyć interfejsu
użytkownika; co może się zdarzyć, na przykład, gdy pracuje z poziomu wiersza poleceń? Jak
można wykorzystać model żądanie – odpowiedź w takich sytuacjach?

To całkiem proste. Przeanalizuj sposób w jaki strony ASP.NET wykorzystują obiekty biznesowe.
Otóż używają one metod i właściwości tych obiektów do wykonywania określonych operacji, a
obiekty mogą, lecz nie muszą zwracać informacji. W rezultacie strona wysyła żądanie wykonania
pewnych czynności, a następnie czeka na otrzymanie wyników.

Dlaczego inna aplikacja nie mogłaby wykorzystywać obiektów w taki sam sposób — wysłać
żą

danie przez Internet i poczekać na otrzymanie wyników? Idea ta została zilustrowana na rysunku

16.1. Sam pomysł jest bardzo prosty, choć aż do tej pory nie istniała żadna technologia, która
pozwoliłaby na jego realizację.

A oto nieco bardziej praktyczny przykład — jedna witryna WWW powinna być w stanie przesłać
żą

danie do innej witryny i poczekać na odpowiedź. Pierwsza z witryn mogłaby wykorzystywać

metody i właściwości udostępniane przez drugą. Pomysł ten został zilustrowany na rysunku 16.2,
na przykładzie witryny prezentującej notowania giełdowe. Użytkownik przesyła żądanie do
witryny WWW, która z kolei przesyła żądanie do witryny obsługującej operacje giełdowe. Druga
z witryn zwraca odpowiednie informacje pierwszej witrynie, która może je zaprezentować w
dowolnej formie.

Prezentacja serwisów sieci WWW

Nowe określenie

Zanim poznasz serwisy sieci WWW warto określić czym jest normalny „serwis”. Gdy ktoś
wykonuje dla Ciebie jakąś czynność, to świadczy na Twoją rzecz pewną usługę. Na przykład, na
pewno jeździsz na stację benzynową aby zatankować lub naprawić samochód. Te usługi świadczy
stacja benzynowa i znajdujący się przy niej warsztat, dzięki czemu nie musisz samemu
wykonywać określonych czynności. Wyobraź sobie co by było, gdyby każdy posiadacz
samochodu musiał mieć własny dystrybutor z paliwem. Bez wątpienia nie byłaby to idealne
rozwiązanie. Na pewno chodzisz także do restauracji, które świadczą usługi gastronomiczne. Są to
wszystko zadania, które możesz wykonać samodzielnie, choć możesz nie mieć ochoty tego robić.
A zatem usługa (

serwis

) jest dodatkową operacją świadczoną przez pewną osobę lub firmę, dzięki

której nie musisz samodzielnie wykonywać określonych czynności.

Dokładnie tym samym są serwisy sieci WWW. Witryna WWW może udostępniać takie serwisy, z
których mogą korzystać użytkownicy a nawet inne witryny WWW. Wyobraź sobie portal, który
prezentuje informacje lokalne i ogólnokrajowe, prognozę pogody, serwis sportowy oraz stronę
zawierającą informacje wybrane przez użytkownika. Serwis udostępniany przez ten portal, polega
na gromadzeniu, przetwarzaniu i zapisywaniu informacji pochodzących z wielu różnych źródeł.
Niemniej jednak, jeśli portal nie dysponuje ogromnym budżetem oraz rzeszą pracowników, to
gromadzenie i tworzenie aktualnych informacji dla wszystkich tych działów jest niemal
niemożliwe.

Jednak portal może wykorzystać inne rozwiązanie — użyć treści pochodzącej z innych witryn
zapewniając jedynie mechanizm ich prezentacji. W takim przypadku wciąż będzie on udostępniał
usługi dla swych użytkowników lecz jednocześnie jego działanie będzie zależne od usług
udostępnianych przez inne witryny.

Rozwiązanie takie jest bardzo często wykorzystywane w witrynach informacyjnych. Na przykład,
Polska Agencja Prasowa udostępnia taki serwis, z którego mogą korzystać wydawcy gazet.
Następnym razem gdy będziesz czytać gazetę, poszukaj w niej doniesień dostarczanych przez
PAP. Zostały one pobrane właśnie z tego serwisu.

Systemy tego typu nie były zbyt popularne na Internecie ze względu na problemy dotyczące,
między innymi, sposobów komunikacji poszczególnych serwisów. Wiele firm podejmowało próby
stworzenia własnych, opatentowanych systemów komunikacyjnych, które umożliwiłyby wymianę
informacji z serwisami; rozwiązania te są jednak przeważnie zbyt drogie i skomplikowane, aby
mogła z nich korzystać większość użytkowników Internetu. Występowały także problemy innego

background image

typu — związane ze strukturą systemów bezpieczeństwa wykorzystywanych na Internecie. Wiele
spośród tych specjalistycznych systemów komunikacyjnych miało poważne trudności z
przekazywaniem informacji przez zapory ogniowe, które zostały zaprojektowane w celu
blokowania nieupoważnionych transmisji sieciowych.

Serwisy sieci WWW dostępne w środowisku .NET stanowią rozwiązanie wymienionych powyżej,
oraz wielu innych problemów. Serwis sieci WWW jest programowalnym obiektem
(przypominającym nieco obiekt biznesowy) udostępniającym możliwości funkcjonalne, z których
można korzystać za pośrednictwem Internetu. Serwisy sieci Web działają, gdyż wykorzystują
standardowe technologie zapewniające możliwość wymiany informacji pomiędzy obiektami. Ani
specjalistyczne systemy ani opatentowane mechanizmy nie są konieczne do zapewnienia
poprawnego funkcjonowania serwisów sieci WWW. Jedynym niezbędnym elementem jest
połączenie z Internetem.

Działanie serwisów sieci WWW opiera się na założeniu, że każdy system oraz aplikacja może
korzystać z protokołu HTTP (standardowego protokołu komunikacyjnego wykorzystywanego na
Internecie) oraz jest w stanie wykorzystywać informacje zapisane w języku XML (stanowiącym
standardowy sposób dostarczania danych za pośrednictwem Sieci). Serwisy sieci WWW
wykorzystują język XML do przesyłania poleceń oraz przesyłania danych do oraz z obiektów
dostępnych na serwerze. Aplikacje korzystające z tych danych i wysyłające polecenia, mogą być
tworzone w dowolnym języku, na komputerach o dowolnej architekturze i mogą być całkiem
proste lub bardzo złożone. Jedyna informacją jaką taka aplikacja musi posiadać, jest lokalizacja
serwisu sieci WWW (czyli jego internetowy adres).

Serwisy sieci WWW stanowią nowy poziom przetwarzania. Na tej samej zasadzie, która
pozwalała programistom gromadzić różne obiekty i na ich podstawie tworzyć aplikację, teraz
można wykorzystać grupę serwisów działających w dowolnym miejscu i wykorzystać je w swojej
aplikacji. Dzięki serwisom sieci WWW różne platformy komputerowe mogą teraz bez przeszkód
wymieniać informacje, łącząc i zapewniając możliwość współpracy zupełnie niezależnych
systemów działających w miejscach kuli ziemskiej.

Scenariusze wykorzystania serwisów sieci WWW

Załóżmy, że stworzyliśmy komponent udostępniający podstawowe funkcje obliczeniowe, takie jak
te, zaimplementowane w kalkulatorze przedstawionym w rozdziale 2., pt.: „Tworzenie stron
ASP.NET”. Przypominasz sobie zapewne, że kalkulator wykonuje podstawowe operacje
arytmetyczne. Na potrzeby innej witryny, działającej w innym miejscu kuli ziemskiej, został
stworzony komponent umożliwiający składanie zamówień dla sklepu z materiałami budowlanymi
i remontowymi. Zakładając, że oba te komponenty są serwisami sieci WWW, przezorny i sprytny
programista, może je połączyć i wykorzystać do stworzenia witryny umożliwiającej
użytkownikom zaprojektowanie i obliczenie kosztów budowy lub remontu mieszkania lub domu.
Jeśli użytkownik będzie musiał określić wymiary i przeprowadzić obliczenia, będzie mógł
skorzystać z serwisu udostępniającego funkcje obliczeniowe. Po zgromadzeniu wszystkich
potrzebnych informacji, może on złożyć zamówienie przy użyciu drugiego z serwisów. Wszystkie
te czynności mogą być wykonane z poziomu jednej aplikacji, a użytkownik nie musi wiedzieć
skąd pochodzą wykorzystywane możliwości funkcjonalne. Przykład ten został zilustrowany na
rysunku 16.3.

Serwisy sieci WWW mogą być wykorzystywane nawet przez aplikacje internetowe. Wyobraź
sobie witrynę zajmującą się handlem elektronicznym, która musi obliczać koszty wysyłki towarów
zamawianych przez użytkowników. W normalnym przypadku, witryna taka musiałaby posiadać
tabelę z aktualnymi informacjami na temat stawek usług kurierskich w zależności od wielkości i
ciężaru przesyłki, jej miejsca docelowego, priorytetu oraz wielu innych czynników. W przypadku
wykorzystania serwisów sieci WWW, witryna taka mogłaby przesłać odpowiednie „żądanie”
bezpośrednio do witryny firmy kurierskiej używając w tym celu poleceń zapisanych w języku
XML i bezzwłocznie otrzymać wyliczoną kwotę określającą kosz konkretnej przesyłki. Serwisy
WWW pozwalają na bardzo proste połączenie aplikacji, których połączenie nastręczyłoby
wcześniej bardzo dużych problemów.

background image

Model programistyczny serwisów sieci WWW

Jak już wcześniej wspominałem, serwisy sieci WWW komunikują się przy wykorzystaniu języka
XML. Jednak jakie informacje są wymieniane?

Nowe określenie

Pierwszy wysyłany komunikat zazwyczaj wiąże się z procesem określanym jako „

odkrywanie

”,

który umożliwia klientowi odszukanie i zdobycie informacji na temat serwisu sieci WWW. Proces
ten wiąże się z wymianą komunikatów zawierających informacje opisujące możliwości
konkretnego serwisu sieci WWW. Klient musi znać te informacje, nim będzie w stanie skorzystać
z serwisu. Serwis informuje równocześnie klienta o innych rodzajach komunikatów jakie można
do niego przesyłać.

Proces odkrywania nie musi być wykonywany. Na przykład, jeśli autorzy serwisu nie chcą, aby
ktokolwiek niepowołany mógł się dowiedzieć o jego istnieniu i możliwościach, mogą wyłączyć
obsługę tego procesu. Jest to jeden ze środków zabezpieczających, dzięki którym nie każdy będzie
mógł korzystać z utworzonych serwisów sieci WWW.

Po fazie „odkrycia”, serwis powinien poinformować klienta o informacjach jakie spodziewa się
otrzymać (czyli o poleceniach, które akceptuje) oraz o postaci zwracanych danych. Ten etap musi
być koniecznie wykonany, gdyż dzięki niemu zarówno serwis jak i klient wiedzą jak mogą się
wzajemnie komunikować. Informacje wymieniane podczas tego etapu określane są mianem

opisu

serwisu sieci WWW

. W przypadku obiektów biznesowych programista zazwyczaj zawczasu wie

jaki polecenia obsługuje wykorzystywany obiekt (na przykład, na podstawie jego dokumentacji).
W zasadzie, opis serwisu sieci WWW jest dokumentacją tego serwisu zapisaną w języku XML.

I w końcu ostatni etap polega na wymianie pomiędzy klientem i serwisem, komunikatów
zawierających polecenia i wyniki; przy czym klient przesyła polecenia, a serwis odpowiedzi
zawierające wyniki. Także w tym przypadku, wszystkie wymieniane informacje są zapisane w
języku XML. Cały ten proces został przedstawiony na rysunku 16.4.

Na szczęście ASP.NET zapewnia niemal całą infrastrukturę konieczną do wykonania wszystkich
tych czynności. W końcu środowisko to jest w stanie obsługiwać żądania i odpowiedzi, operować
na danych zapisanych w języku XML, korzystać z obiektów biznesowych — przez co doskonale
się nadaje do tworzenia serwisów sieci WWW.

Protokoły umo

ż

liwiaj

ą

ce korzystanie z serwisów

sieci WWW

Już wiesz, że serwisy sieci WWW przesyłają dane i otrzymują polecenia przy użyciu
komunikatów zapisanych w języku XML. Konkretnie rzecz biorąc, dane XML są wykorzystywane
przy „odkrywaniu” serwisu oraz do jego opisania. Natomiast komunikaty zawierające polecenia
kierowane do serwisu nie muszą być zapisywane w języku XML. Można je przesyłać przy użyciu
dwóch dodatkowych metod — Http-Get oraz Http-Post. Metody te są używane przez strony
ASP.NET do przesyłania łańcuchów zapytań oraz informacji wpisywanych w polach formularzy.

Http-Get

Http-Get jest standardowym protokołem umożliwiającym klientom komunikację z serwerami przy
użyciu protokołu HTTP. To właśnie w ten sposób są zazwyczaj przesyłane żądania dotyczące
stron WWW. Operację Http-Get można sobie wyobrazić jako pobranie przez klienta strony z
serwera WWW. Ogólnie rzecz biorąc klient przesyła na serwer żądanie HTTP dotyczące zasobu o
konkretnym adresie URL, a serwer w odpowiedzi zwraca odpowiedni kod HTML. Wszelkie
parametry konieczne do prawidłowego obsłużenia żądania są dołączone do adresu URL jako, tak
zwany, łańcuch zapytania. Oto przykład:

http://www.serwer.com.pl/default.aspx?id=Chris&plec=M

Parametry

id

oraz

plec

są przesyłane na serwer jako dane wejściowe i zostają dopisane na końcu

adresu URL. Strona ASP.NET może pobrać te wartości przy użyciu poniższego fragmentu kodu:

background image

Request.Querystring("id")
Request.Querystring("plec")

Serwisy sieci WWW mogą wykorzystywać żądania Http-Get i łańcuch zapytania do przesyłania
poleceń i zwracania wyników, zamiast komunikatów zapisanych w języku XML. Warto zwrócić
uwagę, że informacje przesyłane w ten sposób stanowią część adresu URL. Metoda ta ma jednak
ograniczone możliwości, gdyż umożliwia przesyłanie wyłącznie par nazwa-wartość.

Http-Post

Protokół ten przypomina Http-Get, lecz różni się od niego tym, iż informacje nie są przekazywane
w formie łańcucha zapytania, lecz zapisywane w nagłówkach żądania HTTP. Gdy klient przesyła
żą

danie przy użyciu tego protokołu, generuje on żądanie HTTP zawierające dodatkowe informacje

zapisane w formie par nazwa-wartość. Serwer odbierając takie żądanie musi je przetworzyć, aby
określić nazwy parametrów oraz ich wartości. Protokół ten jest najczęściej wykorzystywany przy
przesyłaniu formularzy HTML.

Na przykład, wyobraź sobie formularz HTML zawierający pola tekstowe o nazwach

id

oraz

plec

, którego kod przedstawiony został na poniższym przykładzie:

<form method="post">
<input type="text" id="id">
<input type="text" id="plec">

<input type="submit" id="idSubmit" value="Wy

ś

lij" />

</form>

W momencie wysyłania tego formularza przeglądarka pobiera wartości wprowadzone w polach
tekstowych i dopisuje je do nagłówków żądania HTTP przesyłanych na serwer. Na serwerze,
wartości te można pobrać przy użyciu poniższego fragmentu kodu:

Request.Form("id")
Request.Form("plec")

Możliwości tego protokołu, podobnie jak poprzedniego, ograniczają się jedynie do przesyłania par
nazwa-wartość.

Notatka
Zwró

ć

uwag

ę

,

ż

e informacje podawane w polach formularzy mo

ż

na przesyła

ć

tak

ż

e przy u

ż

yciu

protokołu Http-Get. Aby to zrobi

ć

, atrybutowi

METHOD

znacznika

<FORM>

nale

ż

y przypisa

ć

warto

ść

GET

. W tym przypadku, przy wysyłaniu formularza na serwer informacje podane w jego

polach zostan

ą

dopisane do ła

ń

cucha zapytania i nie b

ę

d

ą

umieszczane w nagłówkach HTTP.

Oto przykład:

<form method="get">

SOAP

SOAP — prosty protokół dostępu do obiektów (ang: Simple Object Access Protocol) — jest
stosunkowo nowym standardem przesyłania informacji z klienta na serwer. W odróżnieniu od
dwóch poprzednich protokołów, SOAP przesyła informacje w formie XML a nie przy użyciu
żą

dań HTTP. Oznacza to, że przy jego użyciu można przesyłać nie tylko proste pary nazwa-

wartość, lecz także znacznie bardziej skomplikowane obiekty, takie jak złożone typy danych,
klasy, obiekty, itp.

Wysyłania komunikatów SOAP różni się nieco od sposobów przesyłania komunikatów do których
jesteśmy przyzwyczajeni. W przypadku użycia protokołu Http-Get informacje były przekazywane
w formie łańcucha zapytania, a w razie zastosowania protokołu Http-Post — poprzez przesyłanie
formularzy (przy czym informacje były zapisywane w nagłówkach żądania HTTP). Protokół
SOAP także przesyła dane przy wykorzystaniu HTTP, jednak jego działanie nie ogranicza się do
modelu żądanie – odpowiedź. Za jego pomocą można przesyłać dowolne komunikaty dowolnych

background image

typów, niezależnie od tego czy klient zażądał ich czy nie. Dzięki temu, protokół SOAP jest
niezwykle elastycznym medium przesyłu danych.

Ponieważ protokół ten bazuje na języku XML, można go wykorzystywać do przesyłania
informacji za pośrednictwem WWW. Dane zapisane w języku XML to zwyczajny tekst, który
można przesyłać dokładnie tak samo jak strony WWW, w tym także poprzez zapory ogniowe.
SOAP jest standardowym protokołem wykorzystywanym przez serwisy sieci WWW do
komunikacji z klientami.

Notatka
Wiele osób mo

ż

e si

ę

pogubi

ć

porównuj

ą

c SOAP i XML. Je

ś

li protokół SOAP jest tak

doskonałym sposobem przesyłania komunikatów, to dlaczego nie wykorzysta

ć

go zamiast

XML? Ró

ż

nica jednak polega na tym,

ż

e XML słu

ż

y do okre

ś

lania formatu danych, podczas gdy

SOAP okre

ś

la protokół u

ż

ywany do ich przesyłania. Protokół SOAP wykorzystuje XML do

zapisu przesyłanych komunikatów. J

ę

zyk XML jest idealnym sposobem przesyłania wi

ę

kszo

ś

ci

istniej

ą

cych typów danych. Protokół SOAP u

ż

ywany jest wył

ą

cznie w przypadkach, gdy trzeba

przesyła

ć

takie elementy jak polecenia b

ą

d

ź

instrukcje.

Dlaczego warto u

ż

ywa

ć

serwisów sieci WWW?

Teraz kiedy już wiesz czym są serwisy sieci WWW, możesz się zastanawiać dlaczego warto ich
używać.

Spróbuj przypomnieć sobie świat 10 lub 15 lat temu, zanim pojawił się Internet. W tamtych
czasach systemu komputerowe były zupełnie niezależnymi „bytami”, które nie dysponowały
ż

adnym dostępem do innych systemów. Aplikacje były projektowane w celu wykorzystania na

jednym komputerze i nie miały żadnych możliwości dzielenia się i wspólnego korzystania z
informacji. Także możliwości wymiany informacji wewnątrz firmy lub pomiędzy firmami przy
wykorzystaniu komputerów, były w tamtych czasach bardzo ograniczone. Nawet prywatne
wiadomości były przeważnie dostarczane ręcznie.

Internet całkowicie zmienił sposób komunikacji. Zmienił także sposób tworzenia aplikacji.
Aktualnie bardzo trudno spotkać aplikacje, które w żaden sposób nie wykorzystują jego
możliwości. Istnieje natomiast wiele aplikacji, takich jak internetowe komunikatory, w których
dostarczanie danych użytkownikom jest w całości zależne od Internetu.

Kolejnym etapem zapewniania łączności pomiędzy użytkownikami, jest dostarczanie aplikacji za
pośrednictwem Internetu. Już teraz firmy starają się łączyć tradycyjne aplikacje tak, aby tworzyły
ś

ciśle zintegrowane, wieloelementowe pakiety. Wziąwszy pod uwagę ilość wciąż używanych

starych aplikacji, jest to ogromne i przerażające zadanie.

Serwisy sieci WWW udostępniają bardzo prosty mechanizm służący do wzajemnej wymiany
informacji pomiędzy aplikacjami. Umożliwiają one współdzielenie komponentów i udostępniają
możliwości funkcjonalne, z których mogą korzystać wszyscy niezależnie od swego położenia.
Wyobraź sobie, że już nigdy nie będziesz musiał instalować na swoim komputerze jakiegokolwiek
oprogramowania — wystarczy, że nawiążesz połączenie z Internetem i skorzystasz z
odpowiedniego serwisu.

Wszystko dobrze, ale w jaki sposób serwisy sieci WWW są w stanie poprawić metody tworzenia
aplikacji internetowych? Jednym ze sposobów jest ułatwienie wielokrotnego wykorzystywania
kodu. Przypomnij sobie, że jednym z powodów przemawiających za stosowaniem obiektów
biznesowych była możliwość wielokrotnego wykorzystywania kodu, bez konieczności jego
powtórnego tworzenia. Nawet logika rozgałęziania — czyli funkcje i procedury — ułatwiają
wielokrotne wykorzystywanie tego samego kodu (więcej informacji na ten temat znajdziesz w
rozdziale 3., pt.: „Stosowanie Visual Basic.NET”). Dzięki serwisom sieci WWW można korzystać
z kodu napisanego przez inne osoby bez konieczności kopiowania i instalowania czegokolwiek. W
ten sposób można zaoszczędzić czas i energię, i uprościć dodawanie nowych możliwości
funkcjonalnych do tworzonych aplikacji ASP.NET.

Kolejną cenną zaletą serwisów sieci WWW jest łatwość wdrażania i utrzymania. Dzięki nim już
nigdy nie będzie trzeba instalować własnych komponentów i aplikacji na wielu różnych systemach
komputerowych. Zamiast tego użytkownicy będą dysponować standardowym środowiskiem

background image

zapewniającym możliwość korzystania z aplikacji — za pośrednictwem Internetu. Co więcej, w
razie konieczności wprowadzenia jakichś zmian, nie będzie trzeba udostępniać żadnych poprawek
ani nowych wersji programów. W zupełności wystarczy wprowadzenie modyfikacji w jednym
miejscu — serwisie sieci WWW — a wszystkie korzystające z niego klienty automatycznie będą
mogły z nich skorzystać. (Chyba że usuniesz możliwości funkcjonalne od których zależy działanie
tych klientów, gdyż w takim przypadku konieczna będzie ich modyfikacja. Niemniej jednak, w
obu przypadkach proces ten jest znacznie łatwiejszy z punktu widzenia programisty.)

Tworzenie serwisów sieci WWW

Tworzenie serwisów sieci WWW składa się z kilku etapów, do których można zaliczyć
implementację możliwości funkcjonalnych oraz tworzenie opisu serwisu. W kolejnych częściach
rozdziału zostaną opisane poszczególne etapy tworzenia prostego serwisu sieci WWW.

Implementacja mo

ż

liwo

ś

ci funkcjonalnych

Pliki serwisów sieci WWW są w zasadzie zwyczajnymi plikami zawierającymi kod źródłowy
napisany w języku VB.NET, którym nadano rozszerzenie

.asmx

. Sam serwis jest natomiast

reprezentowany przez klasę potomną klasy

WebService

. Przykład bardzo prostego serwisu sieci

WWW został przedstawiony na listingu 16.1.

Listing 16.1.

Prosty serwis sieci WWW.

1

<%@ WebService Language="VB" Class="Calculator" %>

2

3

Imports System.Web.Services

4

5

public Class Calculator : Inherits WebService

6

<WebMethod()> Public Function Add(intA As Integer, _

7

intB As Integer) As Integer

8

Return(intA + intB)

9

End Function

10

End Class

Analiza

Zapisz powyższy kod w pliku o nazwie

Calculator.asmx

. Jak widać, w 1. wierszu powyższego

przykładu została umieszczona dyrektywa

WebService

; przypomina ona nieco dyrektywę

Page

lecz informuje, iż plik reprezentuje serwis sieci WWW. Dyrektywa ta umożliwia użycie znanego
już atrybutu

Language

, który w naszym przypadku informuje, że serwis został napisany w języku

VB. Dyrektywa obsługuje także inny atrybut —

Class

. Określa on nazwę klasy tworzonego

serwisu sieci WWW. I faktycznie, w wierszu 5. można się przekonać, że nazwa klasy naszego
serwisu to

Calculator

. W dalszej części rozdziału poznasz interesujące i przydatne możliwości

tego atrybutu.

Następnie, w wierszu 3. jest importowana przestrzeń nazw

System.Web.Services

. Dzięki temu,

będzie można korzystać ze wszystkich koniecznych klas i metod serwisów sieci WWW. Klasa
definiowana w wierszu 5. musi dziedziczyć po klasie

WebService

zdefiniowanej w przestrzeni

nazw

System.Web.Services

.

Notatka
W jednym pliku

.asmx

mo

ż

e zdefiniowa

ć

dowoln

ą

ilo

ść

klas, jednak tylko jedna z nich mo

ż

e by

ć

u

ż

ywana jako serwis sieci WWW. Mo

ż

e nim by

ć

tylko ta klasa, której nazwa została podana w

dyrektywnie

WebService

umieszczanej na samym pocz

ą

tku pliku.

background image

Przeanalizujmy teraz jedyną metodę zdefiniowaną w klasie

Calculator

. Deklarację metody

Add

można by uznać za całkiem standardową gdyby nie dwa wyróżniające ją elementy. Po pierwsze
metoda ta musi zostać zadeklarowana jako publiczna (

public

); w przeciwnym razie klienty nie

będą w stanie uzyskać dostępu to tej metody serwisu.

Drugim czynnikiem wyróżniającym metodę

Add

, jest wykorzystanie atrybutu

<WebMethod()>

,

który informuje ASP.NET, że metoda ta ma być dostępna dla innych aplikacji w formie serwisu
sieci WWW. Jest to niezwykle ważny atrybut, który musi zostać podany jeśli klienty mają mieć
możliwość dostępu do tej metody. W dalszej części rozdziału, pt.: „Atrybut WebMethod”
atrybut ten zostanie omówiony bardziej szczegółowo.

Podsumowując, metoda która ma być dostępna dla klientów korzystających z serwisu musi zostać
zadeklarowana jako

Public

(publiczna) i musi używać atrybutu

<WebMethod()>

.

Oglądnijmy teraz tę stronę przy użyciu przeglądarki WWW. Jej wygląd przedstawiony został na
rysunku 16.5.

Rysunek 16.5.

Wyświetlanie plików

.asmx

w przeglądarce WWW

To niezwykle interesujące! Co się stało z kodem naszego przykładowego serwisu sieci WWW? I
skąd się wziął sposób prezentacji wyświetlonej strony?

Podobnie jak strony ASP.NET, także pliki

.asmx

są kompilowane w momencie obsługi

pierwszego dotyczącego ich żądania. Następnie, przy obsłudze każdego zgłaszanego żądania
dotyczącego tego pliku, ASP.NET zwraca klientowi opis serwisu. A zatem, na rysunku 16.5,
zostały przedstawione informacje jakie uzyska klient po przesłaniu żądania dotyczącego serwisu
sieci WWW. Informacje te są zapisywane w języku XML. Przekazana odpowiedź zawiera nazwę
klasy —

Calculator

— oraz jej publiczne metody i właściwości. Połączenie umieszczone w

prawym, górnym wierzchołku strony odwołuje się do niej samej, lecz dodatkowo w łańcuchu
zapytania przekazuje parametr

WSLD

:

http://localhost/aspnetdlakazdego/rozdzial16/Calculator.asmx?WSDL

Parametr ten informuje ASP.NET, iż użytkownik życzy sobie zobaczyć opis serwisu w formie
XML. Opis naszego przykładowego serwisu przedstawiony został na rysunku 16.6.

background image

Rysunek 16.6.

Opis naszego przykładowego serwisu sieci WWW zapisany w formie

dokumentu XML

Jak się okazuje, to całkiem spory dokument XML jak na taki mały serwis. Plik XML zapisywany
jest w standardowym formacie określanym jako Service Description Language (w skrócie SDL —
język opisu serwisów); a jego przeznaczeniem jest udostępnienie klientom informacji o
możliwościach serwisu. W ogóle nie będziemy się zajmować tym plikiem, lecz jeśli go
przeglądniesz, to powinieneś zauważyć kilka znajomych elementów. Na przykład, niemal na
samym początku pliku można znaleźć następujący fragment kodu:

1

<s:element name="Add">

2

<s:complexType>

3

<s:sequence>

4

<s:element minOccurs="1" maxOccurs="1" name="intA" type="s:int" />

5

<s:element minOccurs="1" maxOccurs="1" name="intB" type="s:int" />

6

</s:sequence>

7

</s:complexType>

8

</s:element>

9

<s:element name="AddResponse">

10

<s:complexType>

11

<s:sequence>

12

<s:element minOccurs="1" maxOccurs="1" name="AddResult"
type="s:int" />

13

</s:sequence>

14

</s:complexType>

15

</s:element>

Analiza

Pierwszy z dwóch elementów przedstawionych w powyższym fragmencie kodu opisuje metodę

Add

oraz jej argumenty; natomiast drugi — odpowiedź generowaną przez tę metodę, stosownie

określoną jako

AddResponse

. Pozostała część pliku zawiera informacje dotyczące sposobów

wykorzystania tego serwisu przy użyciu protokołów Http-Get, Http-Post oraz SOAP.

Ponownie wyświetl nasz przykładowy serwis sieci WWW w klasycznej postaci, a następnie kliknij
połączenie

Add

i przekonaj się czym jeszcze ASP.NET może Cię zaskoczyć. Wygląd strony

wyświetlanej po kliknięciu połączenia

Add

przedstawiony został na rysunku 16.7.

background image

Rysunek 16.7.

Szczegółowy opis metody Add

Jak widać, serwisy sieci WWW składają się z wielu elementów. Strona przedstawiona na
powyższym rysunku nazywana jest

stroną opisu

; podaje ona wiele szczegółowy informacji na

temat metody, a nawet pozwala ją przetestować. Podaj dwie liczby całkowite w polach
wyświetlonego formularza i kliknij przycisk

Invoke

. Na ekranie pojawi się nowe okno

przeglądarki, w którym zostanie wyświetlona odpowiedź przedstawiona w formie kodu XML.
Odpowiedź o identycznej postaci otrzyma klient po wywołaniu tej metody serwisu sieci WWW.
Kolejne trzy części strony — SOAP, HTTP GET oraz HTTP POST — pokazują przykłady
wywołania metody

Add

przy użyciu tych trzech protokołów.

Strona opisu pozwala przetestować działanie serwisu sieci WWW. Warto zauważyć iż dane do
metody Add są podawane w formularzu, a zatem sama metoda zostaje wywołana przy użyciu
protokołu Http-Post.

Umo

ż

liwienie odkrywania serwisów sieci WWW

Odkrywanie jest procesem za pomocą którego aplikacja kliencka odnajduje serwis sieci WWW i
określa jego możliwości. Wszystkie niezbędne informacje są podawane przez opis serwisu, jednak
większość klientów nie będzie (ani nie powinna) znać nazwy pliku do którego należy się odwołać,
aby uzyskać ten opis. A zatem, umożliwienie odkrywania serwisów sieci WWW oznacza
udostępnienie klientom połączeń do ich opisów.

Wykonanie procesu odkrywania jest możliwe dzięki plikom

.disco

udostępnianym na serwerze

WWW. Pliki te są dokumentami XML zawierającymi połączenia z opisami serwisów sieci WWW.

background image

A zatem, za pośrednictwem tych plików, klient może zdobyć więcej informacji dotyczących
dostępnych serwisów.

Stworzenie pliku

.disco

jest bardzo proste. Listing 16.2 przedstawia plik

.disco

dla naszego

przykładowego serwisu Calculator.

Listing 16.2.

Plik

.disco

dla serwisu Calculator.

1

<?xml version="1.0" ?>

2

<disco:discovery

3

xmlns:disco="http://schemas.xmlsoap.org/disco/"

4

xmlns:scl="http://schemas.xmlsoap.org/disco/scl">

5

<scl:contractRef ref="Calculator.asmx?WSDL"/>

6

</disco:discovery>

Analiza

Zapisz powyższy kod w pliku

Calculator.disco

. Jak widać powyższy plik jest bardzo prosty, gdyż

zawiera jedynie połączenie z opisem naszego przykładowego serwisu sieci WWW (w wierszu 5.).
Dodatkowe przestrzenie nazw określone przy użyciu znaczników

xmlns

wskazują adresy URL

dokumentów zawierających informacje o znacznikach których można używać wewnątrz
znaczników

scl

oraz

disco

. Innymi słowy, znaczniki

xmlns

zawierają połączenia ze

standardowymi definicjami znaczników

scl

oraz

disco

. Bez tych przestrzeni nazw nasza

aplikacja nie widziałaby co należy zrobić z tymi dodatkowymi znacznikami.

Znacznik

disco:discovery

zawiera połączenia, których klient może użyć jeśli chce zdobyć

więcej informacji na temat serwisu sieci WWW. Połączenia te mogą wskazywać inne pliki

.disco

lub opis serwisów. Połączenia wskazujące na pliki opisu serwisów są definiowane przy użyciu
znaczników

scl

. Przykład takiego znacznika, można zobaczyć w 5. wierszu powyższego listingu.

Aby podać połączenie z innym plikiem

.disco

, należy użyć następującego znacznika:

<disco:discoveryRef ref="adres" />

Jeśli zażądamy wyświetlenia tego pliku w przeglądarce, powinien się w nim pojawić ten sam plik
XML.

Notatka
Plik

.disco

nie jest elementem koniecznym do zapewnienia poprawnego działania serwisu sieci

WWW. Je

ś

li znany jest odpowiedni adres URL, to klienty mog

ą

uzyska

ć

bezpo

ś

redni dost

ę

p do

pliku serwisu. Odkrywanie dokumentów pomaga wył

ą

cznie anonimowych klientom, które dzi

ę

ki

temu procesowi s

ą

w stanie dowiedzie

ć

si

ę

o udost

ę

pnianych serwisach sieci WWW.

Atrybut WebMethod

Serwis sieci WWW może mieć metody, tak samo jak zwyczajna klasa lub obiekt biznesowy.
Jednak wyłącznie metody opatrzone atrybutem

WebMethod

(patrz wiersz 6. listingu 16.1) będą

dostępne dla klientów korzystających z serwisu. Przypomnij sobie, że wyłącznie publiczne
właściwości i metody obiektów biznesowych są dostępne dla stron ASP.NET, które używają tych
obiektów; natomiast metody i właściwości prywatne są dostępne wyłącznie dla samego obiektu. W
analogiczny sposób atrybut

WebMethod

ogranicza możliwość dostępu, jedynie do wybranych

metod serwisu.

Metody, w których definicjach pojawił się atrybut

WebMethod

, nazywane także metodami sieci

WWW, działają jak zwyczajne metody danej klasy. Mogą one prowadzić interakcję z obiektami

Session

oraz

Cache

ASP.NET (patrz rozdział 4., pt.: „Stosowanie obiektów ASP.NET w

językach C# i VB.NET” oraz 14., pt.: „Wykorzystanie ulepszonych mechanizmów obsługi
pamięci podręcznej ASP.NET”), podobnie jak stron ASP.NET dają możliwość buforowania
odpowiedzi (patrz rozdział 4.) oraz prowadzić wymianę informacji z bazami oraz innymi źródłami
danych. W zasadzie od zwyczajnych metod różnią się tylko pod jednym względem — można z
nich korzystać za pośrednictwem Internetu.

background image

To niezwykle ważne. W końcu, metody są jednymi z najważniejszych elementów klasy, gdyż to
właśnie one określają w jaki sposób użytkownicy będą z tych klas korzystać. Metody zawierające
w definicji atrybut

WebMethod

uważają, że wszystkie, ogólnie pojęte programy, które je

wywołują, działają w sposób lokalny. Oznacza to, że nie ma żadnej różnicy pomiędzy
wywołaniem takiej metody ze strony ASP.NET znajdującej się w tym samym folderze co plik

.asmx

, ani z serwera znajdującego się na drugim końcu świata. Atrybut

WebMethod

jest

kluczowym elementem zapewniającym możliwość wykorzystania serwisów sieci WWW; a zatem
przyjrzyjmy mu się dokładniej. Atrybut ten posiada wiele interesujących możliwości.
Reprezentuje on klasę

WebMethodAttribute

, która działa tak samo jak każda inna klasa

ś

rodowiska .NET i posiada swoje właściwości i metody. Oznacza to, że umieszczając w kodzie

poniższą deklarację metody z atrybutem

WebMethod

, de facto tworzona jest nowy obiekt klasy

WebMethodAttribute

:

<WebMethod()> Public Function Add(intA As Integer)

Przypisywanie wartości właściwościom tej metody odbywa się nieco inaczej niż to do czego
możesz być przyzwyczajony. Oto przykład:

<WebMethod(Description:="Dodaj dwie liczby ")> Public Function _
Add(intA As Integer,intB As Integer)

Właściwość oraz wartość podawane są w nawiasach bezpośrednio wewnątrz deklaracji funkcji.
Należy zwrócić szczególną uwagę na znak dwukropka umieszczony przed znakiem równości —
oznacza on inicjalizację właściwości a nie podanie argumentu wywołania metody. W przypadku
użycia następującego kodu:

<WebMethod(Description="Dodaj dwie liczby ")>
Public Function Add(intA As Integer,intB As Integer)

W przypadku użycia powyższego fragmentu kodu, wyrażenie

Description="Dodaj dwie

liczby "

zostałoby potraktowane jako nazwa zmiennej, która ma zostać użyta przy tworzeniu

obiektu

WebMethod

. Być może poprawny sposób zapisu jest nieco dziwny, lecz przynajmniej

umożliwia on określanie wartości właściwości obiektów

WebMethod

. Aby określić wartości kilku

różnych właściwości, należy je oddzielić od siebie przecinkami:

<WebMethod(Description:="Dodaj dwie liczby ", _
EnableSession:=False)> Add(intA As Integer, intB As Integer)

Właściwości jakich można używać w atrybucie

WebMethod

zostały opisane w tabeli 16.1.

Tabela 16.1.

Właściwości atrybutu WebMethod.

Właściwość

Opis

BufferResponse

Właściwość ta określa czy wyniki działania serwisu sieci WWW mają
być buforowane czy nie. Domyślną wartością tej właściwości jest

true

.

W tym przypadku wszystkie generowane odpowiedzi zanim zostaną
przesłane do klienta są buforowane na serwerze. Dane są przesyłane do
klienta w postaci niewielkich fragmentów.

W przypadku zwracania dużych ilości informacji warto przypisać tej
właściwości wartość

false

, dzięki czemu dane będą przesyłane w

sposób ciągły, co zapewni nieco lepszą efektywność działania. We
wszelkich innych przypadkach właściwość ta zawsze powinna mieć
wartość

true

.

CacheDuration

Wyniki zwracane przez metody sieci WWW, tak samo jak strony
ASP.NET, można przechowywać w pamięci podręcznej. Ta właściwość
podaje okres czasu (wyrażony w sekundach) jaki odpowiedź powinna być
przechowywana w pamięci podręcznej. Domyślnie właściwość ta ma
wartość 0, co oznacza, że wyniki działania metody sieci WWW nie są
buforowane.

Jeśli właściwości tej zostanie przypisana jakakolwiek wartość większa od
zera, to wyniki wykonania metody zostaną zapisane w pamięci

background image

podręcznej na podaną ilość sekund; a wszystkie kolejne odwołania do tej
metody nie będą powodowały jej wykonania, lecz spowodują pobranie
danych z pamięci podręcznej.

Z przechowywania wyników w pamięci podręcznej warto korzystać w
przypadkach gdy zwracanych jest dużo informacji. Więcej sugestii i
informacji na temat użycia pamięci podręcznej znajdziesz w rozdziale 14.

Description

Ta właściwość umożliwia podanie opisu metody, która będzie
przekazywana klientom. Opis podany za jej pośrednictwem będzie także
dostępny na stronie opisu serwisu sieci WWW. Domyślna wartość tej
właściwości to

String.Empty

.

EnableSession

Ta właściwość określa czy dla danej metody należy włączyć sesję czy nie.
Jeśli sesja jest używana (a tak się dzieje domyślnie) to w metodzie będzie
można zapamiętywać dane przy użyciu obiektu

Session

. Jeśli jednak nie

ma konieczności zapisywania danych w zmiennych sesyjnych, to można
wyłączyć tę opcję. Wyłączenie obsługi sesji umożliwia poprawienie
efektywności działania metody.

MessageName

Ta właściwość określa nazwę używaną przez dane przesyłane do oraz z
serwisu sieci WWW do wywołania tej metody. Domyślnie nazwa ta
odpowiada nazwie metody sieci WWW.

Właściwość ta jest przeważnie stosowana w celu zapewnienia unikalności
nazw metod. Na przykład, jeśli dysponujemy dwiema przeciążonymi
metodami

Add

, które różnią się typami pobieranych argumentów, to

dzięki właściwości

MessageName

można im nadać unikalne nazwy.

Wartość tej właściwości musi być unikalna w obrębie danego serwisu
sieci WWW.

TransactionOption

Podobnie jak operacje na bazach danych, także i wywołania metod sieci
WWW mogą być traktowane jako transakcje. Cały kod wykonywany
wewnątrz transakcji zostanie wykonany poprawnie, lub w ogóle nie
zostanie wykonany. Jeśli podczas wykonywania jednego z wierszy kodu
pojawi się błąd, to realizacja metody zostanie przerwana a wyniki
działania wszystkich wykonanych wiersz będą odtworzone. Więcej
informacji na temat transakcji znajdziesz w rozdziale 12., pt.:
„Zastosowanie zaawansowanych technik obsługi danych”.

Właściwość ta może przyjmować następujące wartości:

Disabled

— metoda jest wykonywana bez wykorzystania transakcji;

NotSupported

— wykorzystanie transakcji nie jest możliwe;

Supported

— można korzystać z transakcji, lecz metoda nie jest

wykonywana wewnątrz żadnej transakcji;

Required

— użycie transakcji jest wymagane, należy utworzyć nową

transakcję;

RequiresNew

— użycie transakcji jest wymagane, należy utworzyć

nową transakcję.

TypeID

Unikalny identyfikator określający dany atrybut. Ta właściwość pomaga
w rozróżnianiu atrybutów o identycznych typach.

Uruchamianie serwisów sieci WWW

Uruchomienie serwisu sieci WWW jest bardzo prostym zadaniem. Ponieważ wirtualna maszyna
CLR w całości zarządza aplikacjami ASP.NET, wystarczy jedynie skopiować wybrane pliki

background image

.asmx

,

.disco

oraz potrzebne obiekty biznesowe do odpowiedniego folderu. Uruchamianie

aplikacji nigdy nie było prostsze!

Bardzo często w folderach zawierających serwisy sieci WWW tworzone są pliki konfiguracyjne

web.config

. Bardzo często twórcy serwisów będą chcieli wykorzystać jakieś mechanizmy

zabezpieczeń, które uniemożliwią niepowołanym osobom wykorzystanie efektów ich pracy.
Przykładowo, jeśli stworzyłeś serwis sieci WWW dla jakiejś firmy, to zapewne, będzie on
wykorzystywany przez nią do zarabiania pieniędzy. Gdyby wszyscy mieli nieograniczony dostęp
do tego serwisu, firma nigdy by nic nie zarobiła. Zabezpieczanie serwisów sieci WWW zapobiega
takim sytuacjom i pozwala na kontrolę dostępu do serwisu. Zagadnienia dotyczące zabezpieczania
serwisów sieci WWW zostaną omówione w kolejnym rozdziale.

Ostrze

ż

enie

Folder w którym zostanie umieszczony serwis sieci WWW musi zosta

ć

oznaczony jako folder

aplikacji Internet Information Servera (IIS). W przeciwnym razie, serwis nie b

ę

dzie mógł by

ć

wykonywany i nie b

ę

dzie dost

ę

pny dla klientów.

Wszystkie foldery, które pozwalaj

ą

na wykonywanie stron ASP.NET s

ą

folderami aplikacji IIS.

Tworzenie serwisów sieci WWW na
podstawie istniej

ą

cych obiektów

biznesowych

Serwisy sieci WWW można także tworzyć na podstawie istniejących obiektów biznesowych,
dzięki czemu nie trzeba ponownie implementować wszystkich możliwości funkcjonalnych.
Niemniej jednak, aby wykorzystać obiekty biznesowe w serwisach sieci WWW trzeba je będzie
nieco zmodyfikować.

Zobaczmy zatem, jak należy zmodyfikować obiekt biznesowy obsługujący bazę danych
(stworzony w poprzednim rozdziale), tak aby można go było wykorzystać z serwisie sieci WWW.
Aby zamienić nasz obiekt biznesowy w serwis należy wykonać trzy czynności: podać, że obiekt
ten jest klasą potomną klasy

System.Web.Services.WebService

, dodać atrybut

WebMethod

do deklaracji metod, które mają być udostępniane przez serwis oraz zastąpić wykorzystywany
obiekt

OleDbDataReader

obiektem

DataSet

, którego zawartość można przekazać w formie

danych XML (w dalszej części rozdziału dokładniej opiszę to zagadnienie). Zmodyfikowana
wersja naszego obiektu biznesowego, nosząca teraz nazwę

DatabaseSerivce

, została

przedstawiona na listingu 16.4.

Listing 16.4.

Przekształcenie obiektu biznesowego Database do postaci serwisu sieci WWW

(

DatabaseService.vb

).

1

Imports System

2

Imports System.Data

3

Imports System.Data.OleDb

4

Imports System.Web.Services

5

6

Namespace ASPNETDK

7

8

Public Class DatabaseService : Inherits WebService

9

private objConn as OleDbConnection

10

private objCmd as OleDbCommand

11

12

<WebMethod()> Public Function SelectSQL(strSelect as _

13

string) as DataSet

14

try

15

objConn = new OleDbConnection("Provider=" & _

16

"Microsoft.Jet.OLEDB.4.0;" & _

17

"Data Source=C:\ASPNET\data\banking.mdb")

18

dim objDataCmd as OleDbDataAdapter = new _

background image

19

OleDbDataAdapter(strSelect, objConn)

20

21

Dim objDS as new DataSet

22

objDataCmd.Fill(objDS, "tblUsers")

23

return objDS

24

catch ex as OleDbException

25

return nothing

26

end try

27

end function

28

29

<WebMethod()> Public Function ExecuteNonQuery(strQuery _

30

as string) as Boolean

31

try

32

objConn = new OleDbConnection("Provider=" & _

33

"Microsoft.Jet.OLEDB.4.0;" & _

34

"Data Source=C:\ASPNET\data\banking.mdb")

35

objCmd = new OleDbCommand(strQuery, objConn)

36

objCmd.Connection.Open()

37

objCmd.ExecuteNonQuery

38

objCmd.Connection.Close()

39

return true

40

catch ex as OleDbException

41

return false

42

end try

43

end function

44

45

End Class

46

47

End Namespace

W wierszu 4. importowana jest dodatkowa przestrzeń nazw —

System.Web.Services

.

Deklaracja umieszczona w wierszu 8. informuje, że klasą bazową naszego serwisu jest klasa

WebService

, zdefiniowana w przestrzeni nazw zaimportowanej w wierszu 4. Kolejną

modyfikacją wprowadzona w kodzie naszego obiektu biznesowego są atrybuty

<WebMethod()>

dodane do metod, które będzie udostępniał tworzony serwis. I w końcu, w metodzie

SelectSQL

obiekty

OleDbDataReader

i

OleDbCommand

zostały odpowiednio zastąpione obiektami

DataSet

oraz

OleDbDataAdapter

. I to wszystko. Teraz wystarczy ponownie skompilować plik

posługując się przy tym następującym poleceniem:

vbc /t:library /out:..\bin\ASPNETDK.dll /r:System.dll
/r:System.Data.dll /r:System.Web.Services.dll /r:System.Xml.dll
DatabaseService.vb ..\rozdzial15\User.vb

Powyższe polecenie kompiluje nowy plik

DatabaseService.vb

oraz plik

User.vb

z poprzedniego

rozdziału i generuje bibliotekę DLL o nazwie

ASPNETDK.dll

. W poleceniu zostały także

wykorzystane dwie nowe biblioteki —

System.Web.Services.dll

oraz

System.Xml.dll

. Powód

wykorzystania pierwszej z nich jest chyba oczywisty; odwołanie do drugiej zostało użyte gdyż
zawiera ona metody konieczne do przesłania zawartości obiektu

DataSet

w formie danych XML.

Więcej informacji na temat kompilator język VB.NET znajdziesz w poprzednim rozdziale, pt.:
„Zastosowanie obiektów biznesowych”.

Notatka !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Teraz nowe obiekty powinny już być zapisane w pamięci podręcznej komponentów .NET, gdzie
ASP.NET będzie w stanie je załadować i użyć. Teraz nadszedł czas, aby stworzyć plik

.asmx

,

który pozwoli klientom korzystać z naszego nowego obiektu. Został on przedstawiony na listingu
16.5.

Listing 16.5.

Plik

.asmx

umożliwiający wykorzystanie serwisu DatabaseService.

1

<%@ WebService Class="ASPNETDK.DatabaseService" %>

To naprawdę wszystko! Jedyną rzeczą jaką trzeba zrobić aby móc skorzystać z naszego nowego
serwisu sieci WWW, jest zmiana nazwy klasy. Teraz zapisz ten plik pod nazwą

Database.asmx

i

wyświetl go w przeglądarce. Na wyświetlonej stronie powinieneś przekonać się, że nasz serwis
udostępnia dwie metody —

SelectSQL

oraz

SelectNonQuery

.

background image

Ostrze

ż

enie

Je

ś

li w serwisie sieci WWW chcesz u

ż

ywa

ć

jakiegokolwiek prekompilowanego obiektu, to musi

on zosta

ć

umieszczony w pami

ę

ci podr

ę

cznej komponentów .NET (czyli folderze

/bin

). W

przeciwnym bowiem razie ASP.NET nie b

ę

dzie w stanie go odnale

źć

.

Kliknij połączenie z metodą

SelectSQL

i w testowym formularzu wyświetlonym na samym

początku strony wpisz następujące zapytanie SQL:

SELECT * FROM tblUsers

. Kliknij przycisk

Invoke

. Na ekranie powinno pojawić się nowe okno przeglądarki, a w nim nowa strona

przypominające tą przedstawioną na rysunku 16.8.

background image

Rysunek 16.8.

Informacje zwrócone przez serwis DatabaseService

Dokument XML przedstawiony na rysunku 16.8 definiuje strukturę obiektu

DataSet

zwróconego

przez nasz serwis sieci WWW. Przeglądając dalszą część strony można w niej znaleźć także
faktyczne informacje pobrane z bazy danych. Klient który pobierze ten dokument, w razie
konieczności nie będzie miał żadnych problemów z przekształceniem jego zawartości do postaci
obiektu

DataSet

.

Zwracanie informacji przez serwisy sieci
WWW

Jak pokazałem we wcześniejszej części rozdziału, serwisy sieci WWW mogą zwracać dane
przeróżnych typów. Możliwość ta jest dostępna gdyż serwisy zostały stworzone na podstawie
technologii wykorzystującej język XML, stanowiący niezwykle potężne narzędzie reprezentacji
danych. Choć XML jest językiem tekstowym, wykorzystywany w nim system nazewnictwa typów
sprawia, że inne aplikacje nie mają większych problemów z określenie typów przesyłanych
informacji.

Oto przykład. Doskonale wiemy, że obiekty

DataSet

są reprezentowane w pamięci komputera

głównie jaki dane XML, a zatem nie trudno domyślić się, że obiekty te mogą być przesyłane w
formie dokumentów XML. Język XML jest także w stanie reprezentować inne typy danych, takie
jak łańcuchy znaków, liczby całkowite, tablice, obiekty

DataTime

, itd. W tabeli 16.2 zostały

przedstawione różne typy danych, które mogą zwracać serwisy sieci WWW.

Tabela 16.2.

Typy danych, które mogą być zwracane przez serwisy sieci WWW.

Typ

Opis

Tablice

Serwisy sieci WWW są w stanie przesyłać tablice zawierające dane
dowolnych typów podanych w dalszej części tej tabeli, w tym: obiekty klas

DataSet

i

XmlNode

, podstawowe typy danych oraz klasy.

Klasy

Klasy posiadające publiczne właściwości.

Zbiory danych
(

DataSet

)

Informacje przechowywane w obiektach klasy

DataSet

są zapisane w

formie danych XML, a zatem serwisy sieci WWW nie mają żadnych
problemów ich wykorzystaniem.

Należy pamiętać, iż są to jedyne „zbiory danych” ADO.NET które można
przesyłać. Obiekty klasy

DataReader

nie dają już tych możliwości.

Typy podstawowe

Podstawowe typy danych to:

byte

,

Boolean

,

char

,

DateTime

,

Decimal

,

Double

,

GUID

,

int32

,

int64

,

uing16

,

uint32

,

uint64

oraz

XmlQualifiedName

.

Klasy

XmlNode

Obiekty klasy

XmlNode

środowiska .NET służą do reprezentacji danych

XML w pamięci komputera. Więcej informacji na ten temat znajdziesz w
rozdziale 11., pt.: „Użycie XML w ASP.NET”.

Serwisy sieci WWW mogą zwracać dane wszystkich typów przedstawionych w tabeli 16.2; jednak
ilość typów danych, których można użyć w celu przekazania informacji

do

serwisu, jest znacznie

bardziej ograniczona.

W przypadku przekazywania poleceń i parametrów z klienta do serwisu przy wykorzystaniu
protokołu SOAP, można stosować wszystkie typy danych podane w tabeli 16.2. Jest to możliwe
gdyż protokół ten bazuje na języku XML.

background image

Jednak w przypadku przekazywania danych przy użyciu protokołów Http-Get lub Http-Post
dostępne możliwości ograniczają się do typów danych obsługiwanych przez te protokoły. Są to
wybrane typy podstawowe oraz tablice zawierające dane tych typów. Oba te protokoły pozwalają
wyłącznie na wysyłanie par nazwa-wartość, co automatycznie wyklucza możliwość przesyłania
bardziej złożonych struktur danych, takich jak klasy orz zbiory danych.

To nie jest ASP!

Serwisy sieci WWW są całkowicie nowym zagadnieniem wprowadzonym w technologii
ASP.NET. A zatem, jeśli jesteś programistą, który do tej pory używał tradycyjnej technologii
ASP, to poznałeś coś zupełnie nowego. Niemniej jednak kluczowe założenia związane z
wykorzystaniem serwisów sieci WWW, jak na przykład wzajemna komunikacja całkowicie
niezależnych systemów, przypominają cele technologii COM (Component Object Model). (Więcej
informacji na temat obiektów COM znajdziesz w poprzednim rozdziale.)

Celem technologii COM było umożliwienie tworzenia aplikacji złożonych z różnych
komponentów. Dzięki temu, iż obiekty te komunikowały się przy wykorzystaniu protokołu COM,
można je było tworzyć w różnych językach programowania. Jednak technologia ta miała jedno
poważne ograniczenie — można ją było stosować tylko w systemach Windows.

Serwisy sieci WWW idą znacznie dalej, gdyż do komunikacji pomiędzy obiektami nie
wykorzystują żadnych firmowych protokołów ani nie przesyłają informacji w sposób binarny.
Serwisy sieci WWW bazują wyłącznie na otwartych standardach, takich jak XML i HTTP.
Oznacza to, iż zapewniają one niczym nie ograniczone możliwości wzajemnego współdziałania
całkowicie niezależnych systemów informatycznych.

Sam pomysł tworzenia aplikacji dostępnych i używanych za pośrednictwem Internetu, nie jest
jednak całkiem nowy. Wcześniejsze próby jego realizacji, podobne do technologii COM,
bazowały na wykorzystaniu złożonych, opatentowanych standardów, które w poważnym stopniu
ograniczały możliwości ich zastosowania. Niezwykła efektywność serwisów sieci WWW wynika
z prostoty protokołu HTTP i języka XML.


Wyszukiwarka

Podobne podstrony:
INTERNET Tworzenie serwisów WWW Dźwięk
Tworzenie serwisow WWW Standardy sieciowe
IT Tworzenie Serwisow Internetowych
PHP5 Tworzenie bezpiecznych stron WWW php5ww
Baptystyczny Serwis Informacyjny www baptysci pl Prymat Rzymu z perspektywy historycznej (część II)
PHP5 Tworzenie bezpiecznych stron WWW
tworzenie serwisu.6
tworzenie serwisu.5
[eBooks PL]Praca Magisterska Projekt serwisu informacyjnego WWW
Baptystyczny Serwis Informacyjny www baptysci pl Prymat Rzymu z perspektywy historycznej
Polecenia do konsoli, webmaster tworzenie stron internetowych www, Informatyka

więcej podobnych podstron