1 / 32

Równoległość w środowisku rozproszonym

Jarosław Kuchta Programowanie Współbieżne. Równoległość w środowisku rozproszonym. Zagadnienia. WebServices WCF RIA. WebServices. WebService – technologia wywołania zdalnego funkcji na oddalonych komputerach dane przekazywane przez protokół HTTP z wykorzystaniem XML.

adora
Download Presentation

Równoległość w środowisku rozproszonym

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Jarosław Kuchta Programowanie Współbieżne Równoległość w środowisku rozproszonym

  2. Zagadnienia • WebServices • WCF • RIA Równoległość rozproszona

  3. WebServices • WebService – technologia wywołania zdalnego funkcji na oddalonych komputerach • dane przekazywane przez protokół HTTP z wykorzystaniem XML. • usługi zdefiniowane za pomocą języka WSDL • opublikowane i wyszukane w rejestrze usług za pomocą mechanizmu UDDI • wywołane zdalnie przez protokół SOAP Równoległość rozproszona

  4. HTTP • protokół przesyłania dokumentów hipertekstowych w sieci WWW • określa sposób komunikacji między klientem a serwerem • klientem jest oprogramowanie na komputerze użytkownika (najczęściej przeglądarka WWW) • serwer jest oprogramowanie na komputerze oddalonym, tu serwer WWW (np. IIS, Apache) • klient wysyła żądania do serwera, serwer wysyła odpowiedzi do klienta • wykorzystywany jest standardowo port 80 TCP • żądanie jest formułowane na podstawie URL w pasku przeglądarki, który zawiera adres serwera, nazwę zasobu (strony, usługi) na serwerze i parametry. • żądania i odpowiedzi mają postać komunikatów tekstowych z rozbudowanymi nagłówkami • protokół HTTP jest bezstanowy, tzn. nie zapamiętuje stanu klienta • gdy potrzeba zapamiętać stan klienta, to wykorzystuje się mechanizm: • ciasteczek po stronie klienta • sesji po stronie serwera Równoległość rozproszona

  5. Przykład URL Równoległość rozproszona

  6. Przykład żądania HTTP • GET / HTTP/1.1 (prośba o zwrócenie dokumentu o URI / zgodnie z protokołem HTTP 1.1) • Host: host.com (wymagany w HTTP 1.1 nagłówek Host służący do rozpoznania hosta, jeśli serwer na jednym IP obsługuje kilka VirtualHostów) • User-Agent: Mozilla/5.0 (X11; U; Linux i686; pl; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7 (nazwa aplikacji klienckiej) • Accept: text/xml,application/xml,application/xhtml+xml,text/html; q=0.9,text/plain;q=0.8 (akceptowane/nieakceptowane przez klienta typy plików) • Accept-Language: pl,en-us;q=0.7,en;q=0.3 (preferowany język strony) • Accept-Charset: ISO-8859-2,utf-8;q=0.7,*;q=0.7 (preferowane kodowanie znaków) • Keep-Alive: 300 (czas, następnego żądania w przypadku połączenia stałego) • Connection: keep-alive (chęć nawiązania połączenia stałego serwerem) • znak powrotu karetki i nowej linii (CRLF) Równoległość rozproszona

  7. Przykład odpowiedzi HTTP • HTTP/1.1 200 OK (kod odpowiedzi HTTP) • Date: Thu, 20 Dec 2001 12:04:30 GMT (czas serwera) • Server: Apache/2.0.50 (Unix) DAV/2 (opis aplikacji serwera) • Set-Cookie: PSID=d6dd02e9957fb162d2385ca6f2829a73; path=/ (ciasteczko) • Expires: Thu, 19 Nov 1981 08:52:00 GMT (czas wygaśnięcia zawartości) • Cache-Control: no-store, no-cache, must-revalidate (wykorzystanie pamięci podręcznej) • Pragma: no-cache (j.w. - stara, niestandardowa metoda.) • Keep-Alive: timeout=15, max=100 • Connection: Keep-Alive (akceptacja połączenia stałego) • Transfer-Encoding: chunked (typ kodowania zawartości stosowanej przez serwer) • Content-Type: application/xhtml+xml; charset=utf-8 (MIME i strona kodowa dokumentu) • znak powrotu karetki i nowej linii (CRLF) • zawartość dokumentu Równoległość rozproszona

  8. XML • XML (Extensible Markup Language) • uniwersalny język formalny przeznaczony do wymiany różnych danych w strukturalizowany sposób. • standard W3C w Internecie Równoległość rozproszona

  9. Przykład dokumentu XML • <?xml version="1.0" encoding="UTF-8"?> • <ksiazka-telefoniczna kategoria="bohaterowie książek"> • <!-- komentarz --> • <osoba charakter="dobry"> • <imie>Ambroży</imie> • <nazwisko>Kleks</nazwisko> • <telefon>123-456-789</telefon> • </osoba> • <osoba charakter="zły"> • <imie>Alojzy</imie> • <nazwisko>Bąbel</nazwisko> • <telefon/> • </osoba> • </ksiazka-telefoniczna> Równoległość rozproszona

  10. WSDL • Web Services Description Language • oparty na XML język definiowania usług sieciowych Równoległość rozproszona

  11. Struktury XML w WSDL • Service/Service – definicja usługi jako zbioru funkcji • Port/Endpoint – port TCP umieszczany w URL żądania wywołania • Binding/Binding – sposób podłączenia (protokół i interfejs) • PortType/Interface – operacje, które mogą być wykonane i komunikaty wykorzystywane do wywołania • Operation/Operation – opis pojedynczej operacji • Message/N.A. – komunikat odpowiadający operacji • Types/Types – typy danych wykorzystywanych w usługach Równoległość rozproszona

  12. Przykład WSDL (1)definicja przestrzeni nazw • <?xml version="1.0" encoding="UTF-8"?> • <description xmlns="http://www.w3.org/ns/wsdl" • xmlns:tns="http://www.tmsws.com/wsdl20sample" • xmlns:whttp="http://schemas.xmlsoap.org/wsdl/http/" • xmlns:wsoap="http://schemas.xmlsoap.org/wsdl/soap/" • targetNamespace="http://www.tmsws.com/wsdl20sample"> • <types> • <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" • xmlns="http://www.tmsws.com/wsdl20sample" • targetNamespace="http://www.example.com/wsdl20sample"> Równoległość rozproszona

  13. Przykład WSDL (2)definicja typu żądania • <xs:element name="request"> • <xs:complexType> • <xs:sequence> • <xs:element name="header" maxOccurs="unbounded"> • <xs:complexType> • <xs:simpleContent> • <xs:extension base="xs:string"> • <xs:attribute name="name" type="xs:string" use="required"/> • </xs:extension> • </xs:simpleContent> • </xs:complexType> • </xs:element> • <xs:element name="body" type="xs:anyType" minOccurs="0"/> • </xs:sequence> • <xs:attribute name="method" type="xs:string" use="required"/> • <xs:attribute name="uri" type="xs:anyURI" use="required"/> • </xs:complexType> • </xs:element> Równoległość rozproszona

  14. Przykład WSDL (3)definicja typu odpowiedzi • <xs:element name="response"> • <xs:complexType> • <xs:sequence> • <xs:element name="header" maxOccurs="unbounded"> • <xs:complexType> • <xs:simpleContent> • <xs:extension base="xs:string"> • <xs:attribute name="name" type="xs:string" use="required"/> • </xs:extension> • </xs:simpleContent> • </xs:complexType> • </xs:element> • <xs:element name="body" type="xs:anyType" minOccurs="0"/> • </xs:sequence> • <xs:attribute name="status-code" type="xs:anySimpleType" use="required"/> • <xs:attribute name="response-phrase" use="required"/> • </xs:complexType> • </xs:element> • </xs:schema> • </types> Równoległość rozproszona

  15. Przykład WSDL (4)definicja interfejsu • <interface name="RESTfulInterface"> • <fault name="ClientError" element="tns:response"/> • <fault name="ServerError" element="tns:response"/> • <fault name="Redirection" element="tns:response"/> • <operation name="Get" pattern="http://www.w3.org/ns/wsdl/in-out"> • <input messageLabel="In" element="tns:request"/> • <output messageLabel="Out" element="tns:response"/> • </operation> • <operation name="Post" pattern="http://www.w3.org/ns/wsdl/in-out"> • <input messageLabel="In" element="tns:request"/> • <output messageLabel="Out" element="tns:response"/> • </operation> • <operation name="Put" pattern="http://www.w3.org/ns/wsdl/in-out"> • <input messageLabel="In" element="tns:request"/> • <output messageLabel="Out" element="tns:response"/> • </operation> • <operation name="Delete" pattern="http://www.w3.org/ns/wsdl/in-out"> • <input messageLabel="In" element="tns:request"/> • <output messageLabel="Out" element="tns:response"/> • </operation> • </interface> Równoległość rozproszona

  16. Przykład WSDL (5)definicja wiązania przez HTTP • <binding name="RESTfulInterfaceHttpBinding" interface="tns:RESTfulInterface" • type="http://www.w3.org/ns/wsdl/http"> • <operation ref="tns:Get" whttp:method="GET"/> • <operation ref="tns:Post" whttp:method="POST" • whttp:inputSerialization="application/x-www-form-urlencoded"/> • <operation ref="tns:Put" whttp:method="PUT" • whttp:inputSerialization="application/x-www-form-urlencoded"/> • <operation ref="tns:Delete" whttp:method="DELETE"/> • </binding> Równoległość rozproszona

  17. Przykład WSDL (6)definicja wiązania SOAP • <binding name="RESTfulInterfaceSoapBinding" interface="tns:RESTfulInterface" • type="http://www.w3.org/ns/wsdl/soap" • wsoap:protocol="http://www.w3.org/2003/05/soap/bindings/HTTP/" • wsoap:mepDefault="http://www.w3.org/2003/05/soap/mep/request-response"> • <operation ref="tns:Get" /> • <operation ref="tns:Post" /> • <operation ref="tns:Put" /> • <operation ref="tns:Delete" /> • </binding> Równoległość rozproszona

  18. Przykład WSDL (7)definicja punktu końcowego • <service name="RESTfulService" interface="tns:RESTfulInterface"> • <endpoint name="RESTfulServiceHttpEndpoint" • binding="tns:RESTfulInterfaceHttpBinding" • address="http://www.example.com/rest/"/> • <endpoint name="RESTfulServiceSoapEndpoint" • binding="tns:RESTfulInterfaceSoapBinding" • address="http://www.example.com/soap/"/> • </service> • </description> Równoległość rozproszona

  19. UDDI • UDDI (Universal Description, Discovery and Integration) • uniwersalny rejestr usług sieciowych • pozwala oprogramowaniu automatycznie wykrywać i integrować usługi sieciowe w sieci Internet Równoległość rozproszona

  20. SOAP • SOAP (Simple Object Access Protocol) • protokół zdalnego wywołania dostępu do obiektów • wykorzystuje XML do kodowania wywołań • wykorzystuje HTTP lub RPC do przenoszenia wywołań i odpowiedzi • jest standardem W3C. Równoległość rozproszona

  21. Przykład dokumentu SOAP • POST /InStock HTTP/1.1 • Host: www.example.org • Content-Type: application/soap+xml; charset=utf-8 • Content-Length: nnn • <?xml version="1.0"?> • <soap:Envelope • xmlns:soap="http://www.w3.org/2001/12/soap-envelope" • soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> • <soap:Body xmlns:m="http://www.example.org/stock"> • <m:GetStockPrice> • <m:StockName>IBM</m:StockName> • </m:GetStockPrice> • </soap:Body> • </soap:Envelope> Równoległość rozproszona

  22. Architektura WebService Równoległość rozproszona

  23. WCF • WCF (Windows Communication Foundation) • następna generacja usług sieciowych • współpracuje z webserwisami przez SOAP • zwiększa szybkość wywołania • używa binarnej prezentacji struktury danych w XML'a Równoległość rozproszona

  24. WCF – pojęcia podstawowe • service operation – procedura udostępniana przez serwis dla klienta • service contract – wiele operacji usługowych powiązanych w interfejs • operation contract – parametry i typ operacji • message contract – format komunikatu (np. które elementy są przekazywane przez nagłówek) • fault contract – definicja komunikatów przesyłanych do klienta w przypadku błędu. • data contract – definicja struktury danych wykorzystywanej w usługach • data service – klasa usługowa umożliwiająca zdalny dostęp do danych przechowywanych w bazie danych Równoległość rozproszona

  25. namespace MeasurementService { [ServiceContract] public interface IMeasurement { [OperationContract] double GetValue(int prober); [OperationContract] Probe GetProbe(int prober); } [DataContract] public class Probe { [DataMember] public DateTime Time { get; set; } [DataMember] public double Value { get; set;} } } WCF – przykład usługi (interfejs) Równoległość rozproszona

  26. WCF – przykład usługi (klasa usługowa) • namespace MeasurementService • { • public class Measurement : IMeasurement • { • public double GetValue(int prober) • { • return prober; // tu powinno być wykonanie pomiaru • } • public Probe GetProbe(int prober) • { • Probe result = new Probe(); • result.Time = DateTime.Now; • result.Value = prober; // tutaj też powinno być wykonanie pomiaru • return result; • } • } • } Równoległość rozproszona

  27. WCF – Service Reference Widok klienta usługi pomiarowej Widok klasy danych Równoległość rozproszona

  28. Obsługa wielu żądań równocześnie przez jeden serwer Każde żądanie jest obsługiwane przez jeden wątek serwera żądanie HTTP Klient1 odpowiedź HTTP Klient2 Serwer Niebezpieczeństwo przeciążenia serwera przy zbyt dużej ilości żądań KlientN Równoległość rozproszona

  29. Zwiększenie wydajności przez farmę serwerów żądanie HTTP odpowiedź HTTP zapytanie DNS Serwer WWW1 Klient1 odpowiedź DNS Serwer DNS Serwer WWW2 Klient2 Serwer DNS dla kolejnych zapytań podaje inny kolejny fizyczny adres serwera WWW KlientN Równoległość rozproszona

  30. Zwiększenie wydajności przez architekturę wielopienną Serwer WWW rozpoznaje żądania HTTP i kieruje żądania WCF do serwera aplikacji. W tym czasie może zająć się obsługą kolejnego żądania HTTP żądanie HTTP żądanie WCF Klient1 odpowiedź HTTP odpowiedź WCF Serwer WWW Serwer aplikacji obiekty danych ADO.NET żądanie danych ADO.NET Klient2 Serwer aplikacji wysyła żądania danych do serwera danych. W oczekiwaniu na dane może w innym wątku obsługiwać inne żądanie WCF Serwer danych KlientN Równoległość rozproszona

  31. Architektura RIA • RIA (Rich Internet Application) – technologia podziału funkcjonalności między klienta a serwer. • w implementacji Microsoftu oparta o WCF i Silverlight • w implementacji Adobe oparta o FLASH Równoległość rozproszona

  32. Podział funkcjonalności w RIA Klient Serwer żądania RIA Funkcje RIA na kliencie Usługi na serwerze odpowiedzi RIA Część funkcjonalności jest realizowana po stronie klienta, a część przez usługi po stronie serwera. Dane wspólne dla wielu klientów są pamiętane po stronie serwera, dane indywidualne – po stronie klienta. Równoległość rozproszona

More Related