Ćwiczenie 14 Temat: Tworzenie i wykorzystanie usług sieciowych Cel ćwiczenia: W trakcie ćwiczenia student zapozna się z procedurą tworzenia usługi sieciowej w technologii ASP.NET oraz nauczy się tworzyć aplikację kliencką wykorzystującą usługę sieciową.
Tworzenie usług sieciowych WebService w ASP.NET Usługa sieciowa to komponent programistyczny udostępniający pewną funkcjonalność aplikacjom klienckim poprzez sieć internetową. Oparcie usług sieciowych o standardowe protokoły HTTP, SOAP, XML pozwoliło na wzajemną komunikację usługi i klienta stworzonych na dowolnych platformach systemowych i przy pomocy różnych narzędzi programistycznych. Tworzenie usług sieciowych w oparciu o ASP.NET nie wymaga bezpośredniej znajomości standardów HTTP, SOAP, XML skupiając uwagę programisty bezpośrednio na funkcjonalności usługi. Główna definicja usługi sieciowej umieszczona jest w pliku.asmx. Kod skryptu serwerowego odpowiedzialny za jej funkcjonalność może zostać umieszczony w pliku.asmx lub w osobnym pliku kodu (np. cs) składowanym w katalogu App_Code. Usługa sieciowa może być samodzielnym serwisem lub stanowić część standardowego serwisu ASP.NET dostarczającego stron HTML. W celu stworzenia samodzielnej usługi sieciowej w środowisku Visual Studio należy z głównego menu wybrać opcję File New Web Site. Z dostępnych typów serwisów należy wybrać ASP.NET Web Service. W nowoutworzonym serwisie automatycznie zostaje utworzona pierwsza usługa Service (pliki Service.asmx i App_Code/Service.cs). Plik Service.asmx zwiera jedynie definicję usługi: <%@ WebService Language="C#" CodeBehind="~/App_Code/Service.cs" Class="Service" %> Zasadniczy kod usługi zawiera plik App_Code/Service.cs: using System; using System.Web; using System.Web.Services; [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] public class Service : System.Web.Services.WebService { public Service () {} } [WebMethod] public string HelloWorld() { return "Hello World"; } Definiowanie funkcjonalności usługi polega na tworzeniu metod realizujących jego zadania. Metoda dostępna dla aplikacji zewnętrznych musi być publiczna (modyfikator public) i oznaczona 30
atrybutem [WebMethod]. Jedna usługa może udostępniać wiele metod. Wszystkie muszą być zdefiniowane wewnątrz klasy usługi. W jednym serwisie może znajdować wiele usług sieciowych. Dodajemy je przez wybranie w Solution Explorer opcji Add New Item a następnie pliku typu Web Service. Środowisko ASP.NET daje możliwość szybkiego przetestowania działania usługi. Wystarczy w Solution Explorer wskazać plik asmx usługi i wybrać opcję View in Browser. Zobaczymy wówczas interfejs WWW umożliwiający testowanie poszczególnych metod usługi. Zadanie 1 1. Utworzyć serwis typu ASP.NET Web Service o nazwie UslugaSieciowa 2. Zwrócić uwagę, że projekt serwisu został umieszczony w solucji o tej samej nazwie. 3. Zmienić nazwę solucji na AplikacjaRozporoszona. 4. W serwisie usunąć pliki domyślnej usługi Service (Service.asmx i App_Code/Service.cs). 5. Dodać do serwisu usługę JednostkiDlugosci wyłączając opcje rozdzielania kodu usługi na oddzielne pliki asmx i cs. 6. Wewnątrz usługi JednostkiMiary utworzyć dwie metody zwracające i przyjmujące wartość typu double: a. PrzeliczCentymetryNaCale b. PrzeliczCaleNaCenymetry 7. Dodać do serwisu usługę Kalkulator z opcją rozdziału kodu. 8. Wewnątrz usługi JednostkiObjetosci utworzyć dwie metody zwracające i przyjmujące wartość typu int: a. SumaTrzechLiczb 31
b. IloczynDwochLiczb 9. Przetestuj z poziomu Visual Studio działanie obu usług. Tworzenie aplikacji klienckiej dla usługi sieciowej Dowolny rodzaj aplikacji stworzonej w środowisku.net (konsolowa, okienkowa lub webowa) może w prosty sposób skorzystać z usługi sieciowej. W typ celu należy utworzyć tzw. referencje webową. W środowisku Visual Studio w Solution Explorer wybieramy opcję Add Web Reference a następnie wybieramy lokalizację usługi. Najprostszą opcją jest wybór usługi znajdującej się w tej samej solucji, zwykle jednak w polu URL podaje się adres internetowy pliku WSDL opisującego usługę. Po wczytaniu informacji o usłudze tworzymy referencje webową nadając jej własną nazwę. W efekcie w drzewie projektu pojawia się utworzona referencja. 32
Jej utworzenie oznacza zdefiniowanie klasy obiektu PROXY pośredniczącego pomiędzy aplikacją kliencką a usługą. Klasa PROXY znajduje się w przestrzeni nazw o takiej samej nazwie, jak nazwa utworzonej web referencji, a jej nazwa jest identyczna z nazwą usługi. Po utworzeniu tego obiektu wykorzystując jego metody wywołujemy metody udostępnione przez usługę. mojareferencja.service serv = new mojareferencja.service(); lbltekst.text = serv.helloworld(); Zadanie 2 1. Do solucji AplikacjaRozproszona w Solution Explorer wybierając opcję Add New Web Site dodaj serwis typu ASP.NET Web Site o nazwie Klient. 2. Oznacz projekt Klient jako projekt startowy wybierając opcję Set as StartUp Projekt. 3. Utwórz w serwisie Klient dwie referencje webowe do usług JednostkiDlugosci i Kalkulator. 4. Utwórz stronę Cale.aspx z następującym interfejsem: 5. Funkcjonalność strony ma być realizowana w oparciu i usługę JednostkiDlugosci. 6. Utwórz stronę Obliczenia.aspx z następującym interfejsem: 33
7. Funkcjonalność strony ma być realizowana w oparciu i usługę Kalkulator. 8. Przetestuj działanie tak zrealizowanej aplikacji rozproszonej. 34