Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

SQL Server Native XML Web Services

Podobne prezentacje


Prezentacja na temat: "SQL Server Native XML Web Services"— Zapis prezentacji:

1 SQL Server 2005 - Native XML Web Services
MS SQL Server 2005 SQL Server Native XML Web Services

2 Sposób dostępu do bazy danych
Przed MS SQL Server 2005 – Tabular Data Stream (TDS) MS SQL Server 2005 – SOAP via HTTP Język T-SQL z wykorzystaniem parametrów Procedury składowane, rozszerzone procedury, funkcje użytkownika

3 MS SQL Server 2005 – SOAP via HTTP
Otwarty protokół Szerokie możliwości podłączenia zróżnicowanych klientów – wyeliminowanie konieczności posiadania przez klienta komponentów MDAC Wykorzystanie technologii XML i HTML SQL Server dostępny dla każdego środowiska, które potrafi przetwarzać język XML oraz wysłać żądania HTTP Wyeliminowanie konieczności wykorzystywania driver’ów ODBC/JDBC przy łączeniu się z bazą danych

4 Jak stworzyć Native XML Web Service?
Zdefiniować funkcje lub procedury składowane, które chcemy udostępnić Utworzyć ENDPOINT, który udostępni zdefiniowane funkcje lub procedury (tzw. Web services) Aplikacje, które potrafią wysłać i odbierać komunikaty SOAP mogą się łączyć z ENDPOINTEM i wysłać lub pobierać dane Wszystkie udostępnione obiekty (Web services) opisane są za pomocą języka WSDL (web services description language)

5 Konfiguracja serwera SQL jako Web Service (1)
Zdefiniowanie procedury składowanej w języku T-SQL USE AdventureWorks GO CREATE FUNCTION INT) RETURNS nvarChar(MaX) AS BEGIN RETURN (SELECT Name FROM Sales.Store where END

6 Konfiguracja serwera SQL jako Web Service (2)
Definiowanie ENDPOINT’a CREATE ENDPOINT GetCustomerName STATE = STARTED AS HTTP ( PATH = '/Customer', AUTHENTICATION = (INTEGRATED), PORTS = (CLEAR), SITE = 'localhost' ) FOR SOAP WEBMETHOD 'CustomerName' (NAME='AdventureWorks.dbo.GetCustomerName'), BATCHES = DISABLED, WSDL = DEFAULT, DATABASE = 'AdventureWorks', NAMESPACE = 'http://AdventureWorks/Customer'

7 CREATE ENDPOINT– opis parametrów
STATE - poczatkowy stan endpoint’u (started,stopped,disabled) AS HTTP – uzywany protokol transportowy (np. AS TCP) PATH – URL na serwerze, który klienci będą uzywali do polaczenia się z Web servisem AUTHENTICATION – sposób autoryzacji (BASIC, DIGETS, NTLM, KERBEROS, INTEGRATED) PORTS – typ portu na którym serwis nasluchuje (CLEAR lub SSL) SITE – nazwa hosta dla komputera, który będzie odpowiadal na zadania FOR SOAP – informacja ze endpoint będzie uzywal protokolu SOAP WEBMETHOD – definuje Webmetode, mapuje nazwe procedury skladowanej na Webmetode BATCHES – okresla czy endpoint będzie przetwarzal zapytania SQL-owe WSDL - czy endpoint będzie wpieral WSDL DATABASE - nazwa wykorzystywanej bazy danych NAMESPACE - przstrzen nazw dla jezyka XML

8 WSDL Jezyk XML Opis Web services
Jeśli dla ENDPOINT’a parametr WSDL = DEFAULT wysyłając odpowiednie żądnie HTTP możemy uzyskać plik WSDL opisujący udostępnione Web services Rozbudowane środowiska (VS .NET, JBulider) wykorzystują WSDL do tworzenia klas proxy upraszczając wykorzystywanie Web services w aplikacjach

9 WSDL – opis procedury składowanej wraz z parametrami
- <xsd:element name="CustomerName"> - <xsd:complexType> - <xsd:sequence> <xsd:element minOccurs="1" maxOccurs="1" name="CustomerId" type="sqltypes:int" nillable="true" /> </xsd:sequence> </xsd:complexType> </xsd:element> - <xsd:element name="CustomerNameResponse"> <xsd:element minOccurs="1" maxOccurs="1" name="CustomerNameResult" type="sqltypes:int" nillable="true" />

10 Visual Studio 2005 – wykorzystanie Native XML Web services
Pobranie web referencji do udostępnionego serwisu (plik WSDL) Utworzenie klasy proxy Web service Klasa proxy udostępnia te wszystkie metody, które zdefiniowane zostały dla ENDPOINT’u Jeśli ENDPOINT zezwala na wykonywanie zapytań ad hoc udostępniona jest również metoda sqlbatch Klient wysyła do SQL Server 2005 komunikat SOAP SQL Server zwraca wynik żądanej metody do klienta

11 Visual Studio 2005 - przetwarzanie odpowiedzi
Rezultaty operacji mogą być zwracane jako tablica obiektów Kod powrotu procedury (return code) zwracany jest w tablicy jako obiekt typu int XMLElement( System.Xml.XmlElement) Wynik zapytania SELECT... FOR XML DataSet (System.Data.DataSet) Wynik zapytania SELECT… SqlMessage (a custom type defined by the WSDL) Komunikaty błędów, uwagi, dodatkowe informacje SqlRowCount (a custom type defined by the WSDL) Ilość wierszy wynikowych SqlParameter ( a custom type defined by the WSDL) Zawiera zbiór parametrów zwróconych przez SQL Server 2005

12 SOAP via RPC Żądanie SOAP udostępnionego Web service
Odpowiedź MS SQL 2005 <SOAP-ENV:Envelope xmlns:SOAP- ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP- ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <SOAP-ENV:Body> <m:CustomerName xmlns:m="http://AdventureWorks/Customer"> <m:CustomerId>0</m:CustomerId> </m:CustomerName> </SOAP-ENV:Body> </SOAP-ENV:Envelope> <SOAP-ENV:Envelope><SOAP-ENV:Body> <method:CustomerNameResponse> <method:CustomerNameResult>A Bike Store</method:CustomerNameResult> </method:CustomerNameResponse> </SOAP-ENV:Body></SOAP-ENV:Envelope>

13 Visual Studio 2005 – Web services w oparciu o klasy proxy tworzone na podstawie plików WSDL
Dodanie Web referenece Utworzenie i wykorzystanie klasy proxy do wywoływania Web service SQLHTTP.Customer ws = new SQLHTTP.Customer(); //create proxy class ws.Credentials = System.Net.CredentialCache.DefaultCredentials; MessageBox.Show(„Customer Name: „ + ws.customerName(1).toString());

14 Batches: AdHoc Queries
BATCHES=ENABLED ENDPOINT udostępnia metodę sqlbatch Sqlbatch pozwala na wykonywanie procedur T-SQL poprzez komunikaty SOAP Sqlbatch – parametry: <BatchCommands> - procedura T-SQL <Parameters> (opcjonalnie) – tablica parametrów, jeśli procedura ich wymaga

15 SOAP via RPC - sqlbatch (1)
Wywołanie metody sqlbatch wraz z parametrami <m:sqlbatch xmlns:m="http://schemas.microsoft.com/sqlserver/2004/SOAP"> <m:BatchCommands> SELECT LoginID,Title FROM HumanResources.Employee WHERE FOR XML AUTO; </m:BatchCommands> <m:Parameters> <m0:SqlParameter name="x" sqlDbType="Int" direction="Input" maxLength="1" precision="18" scale="0" clrTypeName="" sqlCompareOptions="Default" localeId="-1" sqlCollationVersion="0" sqlSortId="0" xmlSchemaCollection=""> <m0:Value>1</m0:Value> </m0:SqlParameter> </m:Parameters> </m:sqlbatch>

16 SOAP via RPC - sqlbatch (2)
Odpowiedź SQL Server 2005 <sqlresultstream:SqlXml xsi:type="sqlsoaptypes:SqlXml"> <SqlXml><HumanResources.Employee LoginID="adventure-works\guy1" Title="Production Technician - WC60"/></SqlXml> </sqlresultstream:SqlXml>

17 Visual Studio 2005 – metoda sqlbatch
SQLHTTP.Customer ws = new SQLHTTP.Customer; ws.Credentials = System.Net.CredentialCache.DefaultCredentials; WApp.localhost.SqlParameter[] p = new WApp.localhost.SqlParameter[1]; p[0] = new WApp.localhost.SqlParameter(); p[0].name = "x"; p[0].Value = "1"; p[0].maxLength = 20; p[0].sqlDbType = WApp.localhost.sqlDbTypeEnum.Int; p[0].direction = NativeSOAPApp1.server.ParameterDirection.Input; string s = "SELECT LoginID, Title " + "FROM HumanResources.Employee Where " + "FOR XML AUTO;"; object[] results = ws.sqlbatch(s, ref p);// proxy.sqlbatch(s); string wynik = ""; for (int j = 0; j < results.Length; j++) { object e1; System.Xml.XmlElement xmlResult; e1 = results[j]; switch (e1.ToString()) { case "System.Xml.XmlElement": xmlResult = (System.Xml.XmlElement)results[j]; wynik = wynik + xmlResult.OuterXml+"\n"; break; } MessageBox.Show(wynik);

18 SQL Server 2005 - Native XML Web Services
MS SQL Server 2005 SQL Server Native XML Web Services


Pobierz ppt "SQL Server Native XML Web Services"

Podobne prezentacje


Reklamy Google