Web Service - Phạm Hồng Phong

Định nghĩa theo W3C: dịch vụ web là một hệ thống phần mềm được thiết kế ñể hỗ trợ khả năng tương tác giữa các ứng dụng phân tán trên Internet  Công nghệ mang đến sự tốt nhất trong các mô hình thương mại điện tử B2B và B2C ngày nay  Sử dụng công nghệ XML làm giao diện trao đổi và gắn kết giữa các thành phần

pdf63 trang | Chia sẻ: lylyngoc | Lượt xem: 1818 | Lượt tải: 2download
Bạn đang xem trước 20 trang tài liệu Web Service - Phạm Hồng Phong, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Web Service Phạm Hồng Phong - SoICT – HUST Giới thiệu Web Service 2 Giới thiệu Web Service Định nghĩa theo W3C: dịch vụ web là một hệ thống phần mềm ñược thiết kế ñể hỗ trợ khả năng tương tác giữa các ứng dụng phân tán trên Internet  Công nghệ mang đến sự tốt nhất trong các mô hình thương mại điện tử B2B và B2C ngày nay  Sử dụng công nghệ XML làm giao diện trao đổi và gắn kết giữa các thành phần  Các thành phần được viết bằng các NNLT khác nhau trên các nền tảng khác nhau 3 Giới thiệu Web Service Kết hợp các công nghệ khác nhau: XML, SOAP, WSDL, UDDI, … Dịch vụ Web về bản chất là một tài nguyên phần mềm dựa trên Internet và có thể ñược xác ñịnh bằng một ñịa chỉ URL  Các chức năng (dịch vụ ) – phương thức được đóng gói lại sao cho các ứng dụng khác tìm được dịch vụ và truy xuất, sử dụng chúng 4 Giới thiệu Web Service UDDI SOAP SOAP 5 Any Client SOAP IIS Web Service Giới thiệu Web Service Hoạt ñộng của Web Service là ñộc lập giữa nhà cung cấp – provider và khách hàng – customer Dịch vụ web giúp tích hợp hệ thống  Các ứng dụng sẽ trao đổi với nhau và truy vấn CSDL để thực thi yêu cầu người dùng Giúp giảm chi phí và ñộ phức tạp trong các vấn ñề tích hợp hệ thống và phát triển hệ thống. 6 Giới thiệu Web Service  Dịch vụ web là tập hợp các phương thức của một ñối tượng mà các Client có thể gọi thực hiện  Là một Interface trừu tượng ñược thể hiện qua website HTML danh sách các chức năng ñược cung cấp  Chức năng trên Web hoạt động về bản chất vẫn là sự tương tác giữa Client và Web Server 7 Đặc ñiểm  Độc lập nền tảng  Nếu người dùng sử dụng HDH Window còn ứng dụng chạy web service trên Server dùng Linux, hệ thống vẫn chạy!  Một ứng dụng Desktop viết bằng Java vẫn có thể gọi Webservie viết bởi .Net  Công nghệ XML là xương sống 8 Đặc ñiểm Một dịch vụ web bao gồm nhiều Modun – phương thức, ñược công bố lên Internet  Ví dụ: dịch vụ gửi tiền vào tài khoản ngân hàng phải gồm có dịch vụ mở tài khoản …  Được công bố ở một nơi chung và được đặc tả tất cả các Modun Mô hình triển khai là Client – Server 9 Đặc ñiểm Lĩnh vực áp dụng rộng rãi  Dịch vụ phân loại tin tức – thông qua Web portal – chọn lọc thông tin cần thiết  Dịch vụ du lịch: cung cấp thông tin các địa điểm, giá vé (Vietnam Airline, giá tàu …)  Dịch vụ thông tin thời tiết  Dịch vụ thông tin thương mại như tỷ giá tiền tệ, chứng khoán … 10 Đặc ñiểm 11 Kiến trúc Web service Service DescriptionWSDL Service Discovery/PublicationUDDI APPLICATIONC#, Java, VB, Windows, Macintosh OS X, etc. 12 Network InfrastructureHTTP, TCP/IP, email, etc. XML-Based MessagingSOAP Kiến trúc Web service 13 Kiến trúc Web service  Tầng vận chuyển HTTP: sử dụng các giao thức mạng phổ biến như http, https, ftp, smtp  Truyền thông điệp – message một cách an toàn  HTTP – Hyper text transfer protocol POST /TheStockExchange/Trading/GetStockPrice.asp HTTP/1.1 Host: localhost 14 Content-Type: application/x-www-form-urlencoded Content-Length: 11 Symbol=MSFT HTTP Request HTTP/1.1 200 OK Content-Type: text/xml; charset=utf-8 Content-Length: 75 HTTP Response Kiến trúc Web service Tầng giải mã thông ñiệp – SOAP  Message được mã hóa dựa trên XML  Các công nghệ tương tự: • XML-RPC • REST Tầng mô tả dịch vụ - WSDL  WSDL: mô tả giao diện chung cho các chức năng mà dịch vụWeb cung cấp  Thực thi dựa trên XML  WSDL là một ngôn ngữ được dùng để truyền các tham số và các loại dữ liệu cho các chức năng mà dịch vụ web cung cấp 15 Kiến trúc Web service Tầng khám phá dịch vụ - UDDI  Tất cả các dịch vụ được tập hợp lại một nơi trung trên Internet, gọi là đăng ký dịch vụ  Giúp các ứng dụng dễ dàng tìm ra • Vị trí của dịch vụ web • Đặc tả về dịch vụ đó wsdl  Các dịch vụ web khác cũng tìm ra để tương tác 16 Kiến trúc Web service 17 XML Dùng ñể ñịnh nghĩa các thành phần dữ liệu cho các tài liệu trao ñổi giữa các doanh nghiệp B2B với nhau Dịch vụ web là sự kết hợp của rất nhiều các thành phần giao tiếp với nhau => XML là công cụ trung chuyển Tất cả dữ liệu ñược mã hóa dưới dạng thẻ XML  Các công nghệ SOAP, REST hay XML-RPC có thể đọc được thông điệp này  Mô tả giao diện các chức năng trong WSDL 18 WSDL Định nghĩa mô tả dịch vụ web – giao diện: làm thế nào ñể giao tiếp với dịch vụ web? WSDL là một tài liệu XML  Dùng để mô tả dịch vụ web  Dùng để xác định vị trí của dịch vụ web  Chưa phải là chuẩn W3C 19 WSDL Rất nhiều các ñặc tả dịch vụ web 20 WSDL Một tài liệu WSDL mô tả dịch vụ web sử dụng các phần tử sau Phần tử Định nghĩa Các phương thức ñược thực hiện bởi dịch vụ web 21 Các thông ñiệp ñược dùng bởi dịch vụ web Các kiểu dữ liệu Các giao thức truyền thông WSDL  Cấu trúc chung của một tài liệu WSDL ñịnh nghĩa các kiểu........ ñịnh nghĩa một thông ñiệp.... ñịnh nghĩa một port....... ñịnh nghĩa giao thức … 22 WSDL   Mô tả một dịch vụ web, các phương thức, cách hoạt động – operation được thực hiện và các thông điệp liên quan  Có thể được ví với một thư viện các hàm (module hay class) trong lập trình   Định nghĩa các phần tử dữ liệu của một operation  Mỗi một thông điệp có thể chứa một hoặc nhiều phần. Các phần này có thể được ví như các tham số - parameters của một lời gọi hàm trong lập trình 23 WSDL   Định nghĩa kiểu dữ liệu – data type được dùng bởi dịch vụ web   Định nghĩa khuôn dạng thông điệp – message format và chi tiết về giao thức cho mỗi một port 24 WSDL Ví dụ 25 WSDL <soap:binding style="document“ transport="" />  Phần tử binding có 2 thuộc tính: tên(name) và kiểu(type) trong ñó kiểu trỏ tới port của binding 26 WSDL Soap:binding  Thuộc tính Style: cho biết phương thức – operation là ở dạng RPC-oriented (thông điệp có chứa các tham số và giá trị trả về) hay Document-oriented (thông điệp chứa tài liệu), mặc định là tài liệu  Thuộc tính Transport: cho biết giao thức để truyền, ví dụ • (for HTTP) (for SMTP) 27 WSDL Soap:operation  Thuộc tính soapAction: xác định giá trị của SOAPAction header cho phương thức này Soap:body  Cung cấp cách thức lắp ráp các thành phần thông điệp khác nhâu bên trong phần tử Body  Được dùng cho cả các thông điệp hướng thủ tục và hướng tài liệu  Thuộc tính Use: là litera hoặc encoded 28 WSDL Thông ñiệp kiểu RPC và kiểu Document RPC DOCUMENT Lời gọi thủ tục Tài liệu nghiệp vụ business Khuông dạng lời gọi Khuôn dạng schema 29 hàm Truyền ñiểm – ñiểm Truyền phức tạp Bên trong một tổ chức Giữa các tổ chức Ví dụ WSDL <definitions name="StockQuote" targetNamespace=" e.wsdl" xmlns:tns="" xmlns:xsd1="" xmlns:soap=" ap/" xmlns=""> 30 Ví dụ WSDL <schema targetNamespace="" xmlns=""> 31 Ví dụ WSDL <part name="body“ element="xsd1:TradePriceRequest"/> <part name="body" element="xsd1:TradePrice"/> 32 Ví dụ WSDL 33 Ví dụ WSDL <binding name="StockQuoteSoapBinding" type="tns:StockQuotePortType"> <soap:binding style="document“ transport=""/> <soap:operation soapAction=" dePrice"/> 34 Ví dụ WSDL My first service <port name="StockQuotePort" binding="tns:StockQuoteBinding"> <soap:address location=""/> 35 UDDI Làm thế nào ñể Client tìm kiếm các Web Service trên Internet ? 36 UDDI UDDI: một framework ñộc lập platform dùng ñể miêu tả dịch vụ Web, khám phá các dịch vụ của các doanh nghiệp và tích hợp các dịch vụ bởi Internet  UDDI: Unversal Description, Discovery & Integration  Là một thư mực để lưu thông tin về các dịch vụ web  Là một thư mục của các giao diện dịch vụ web miêu tả bởi WSDL  Giao tiếp thông qua SOAP  Được xây dựng dựa trên nển tảng .NET 37 UDDI Trước UDDI, không có chuẩn Internet nào cho các tổ chức/doanh nghiệp quảng cáo cho các khách hàng và ñối tác về thông tin của các sản phẩm và dịch vụ của họ  Và cũng không có một phương thức nào để tích hợp chúng vào các hệ thống hay tiến trình của mỗi bên 38 UDDI  Đặc tả UDDI có thể giải quyết:  Tìm ra đúng dịch vụ/ công việc trên hàng triệu các bussiness online  Định nghĩa ra cách thức giao dịch khi mà dịch vụ đã được tìm thấy  Quảng bá được dịch vụ tới khách hàng và tăng được giao tiếp với khách hàng  Giải quyết được nhu cầu hướng khách hàng hơn và loại bỏ được rào cản cho phép tham gia một cách nhanh chóng vào kinh tế toàn cầu  Miêu tả các dịch vụ và các tiến trình doang nghiệp một cách chuẩn nhất trong một môi trường bảo mật, mở, và đơn nhất. 39 UDDI ñược sử dụng như thế nào? Ví dụ  Nếu có (publish) một chuẩn UDDI về việc kiểm tra giá vé máy bay & đặt chỗ, thì các hãng hàng không có thể đăng kí (register) dịch vụ của họ vào trong một thư mục UDDI  Các hãng du lịch khi đó có thể tìm kiếm (discover) thư mục UDDI để tìm ra các giao diện (interface) đặt chỗ của một hãng  Khi giao diện được tìm thấy, hãng du lịch đó có thể giao tiếp ngay với dịch vụ 40 UDDI UDDI là một nỗ lực tạo ra các chuẩn doanh nghiệp, và ñược ñược tạo ra bởi các nhà cung cấp phần mềm và nền tảng như: Dell, HP, IBM, Intel, Microsoft, Oracle, Sun … cũng như các lãnh ñạo của các doanh nghiệp thương mại ñiện tử UDDI Business Registry  Microsoft :  IBM :  Ariba : 41 UDDI White pages  Địa chỉ, liên lạc và các định danh Yello pages  Phân loại kĩ nghệ công nghiệp  Industry: NAICS  Sản phẩm/dịch vụ: UN/SPSC (ECMA)  Location: phân loại theo địa lý Green pages  Thông tin kĩ thuật về các dịch vụ 42 UDDI Kiểu dữ liệu thực thể doanh nghiệp Business Entity (white page):  Là cấu trúc dữ liệu cấp cao lưu thông tin đặc tả về một business entity  Các đặc tả về dịch vụ và thông tin kĩ thuật được miêu tả bên trong một businessEntity 43 SOAP Simple Object Access Protocol – SOAP: giúp Client truy xuất ứng dụng web khi ñã tìm thấy!  Truy xuất tới UDDI registry bằng các lệnh gọi theo định dạng của SOAP  Là một giao thức giao tiếp có cấu trúc như XML  Cấu trúc xương sống của các ứng dụng phân tán được xây dựng từ nhiều ngôn ngứ khác nhau và các HDH khác nhau 44 SOAP Là giao thức ñược Web Service sử dụng ñể truyền dữ liệu qua Internet SOAP = XML + một giao thức hoạt ñộng trên Internet (HTTP, FTP, SMTP) 45 SOAP Ví dụ lấy thông tin ñịnh giá cổ phần của một dịch vụ web 46 SOAP Khuôn dạng một thông ñiệp SOAP bao gồm  Envelop: phần tử gốc – chứa toàn bộ thông ñiệp  Header: chứa thông tin tiêu ñề trang, chứa các dữ liệu chứng thực, chữ kí số.  Body: chứa các thông tin yêu cầu và phản hồi • Tên thông ñiệp, tham chiếu tới một instance của dịch vụ, một vài tham số. 47 SOAP SOAP Message SOAP Envelope SOAP Header Headers encloses headers encloses payload Protocol binding headers The complete SOAP message 48 48 SOAP Body Message Name & Data Headers XML-encoded SOAP message name & data contains SOAP message name Individual headers Ví dụ SOAP Request POST /StockQuote HTTP/1.1 Host: www.stockquoteserver.com Content-Type: text/xml; charset="utf-8" Content-Length: nnnn SOAPAction: "Some-URI“ <SOAP-ENV:Envelope xmlns:SOAP ENV="" SOAP-ENV: encodingStyle = ""> DIS 49 Ví dụ SOAP Response HTTP/1.1 200 OK Content-Type: text/xml; charset="utf-8" Content-Length: nnnn <SOAP-ENV:Envelope xmlns:SOAP-ENV= "" SOAP-ENV: encodingStyle= ""/> 34.5 50 Ví dụ SOAP <env:Envelope xmlns:env=“ envelope” xmlns:xsd="" xmlns:xsi="" xmlns:SOAP-ENC="" xmlns:stockquote=""> <am:customer xmlns:route="" env:actor=" envelope/actor/next" env:mustUnderstand="true"> 51 4557799 12asd-34ccd-23cuden C GE DJI Ví dụ SOAP POST /stockquotes HTTP/1.1 Host: www.advocatemedia.com:80 Content-Type: text/xml; charset=utf-8 Content-Length: 482 SOAPAction: "" …. 52 HTTP/1.1 200 OK Connection: close Content-Length: 659 Content-Type: text/xml; charset=utf-8 Web Service 53 Xây dựng một dịch vụ Web Pha xây dựng, phát triển và chạy thử ứng dụng dịch vụ web  Xây dựng, mô tả các chức năng và định nghĩa các dịch vụ  Xây dựng từ đầu hoặc từ dịch vụ sẵn có Pha triển khai, công bố dịch vụ web  Xây dựng WSDL  Triển khai tới một ứng dụng phía server  Sử dụng UDDI để công bố 54 Xây dựng một dịch vụ Web Pha tìm kiếm và sử dụng dịch vụ Pha quản lý Có 3 cách tiếp cận ñể xây dựng lên một dịch vụ web  Từ một ứng dụng đã có  Từ một định nghĩa dịch vụ  Từ một nhóm các dịch vụ hiện có: kết hợp các chức năng: tối đa sử dụng lại các thành phần, modun 55 Một số Web service miễn phí Các quốc gia : asmx?WSDL Thời tiết : ather.asmx?WSDL Tỷ giá : Convertor.asmx?WSDL 56 Sử dụng Web Services ñược cung cấp miễn phí trên mạng  :cung cấp nhiều các Web Services hữu ích. Sử dụng các Web Services ñể lấy thông tin tỷ giá ngoại tệ, thông tin thời tiết, các thành phố chính của một quốc gia và các ñơn vị tiền tệ của các quốc gia trên thế giới. Thực hiện: chọn Add Web Reference… 57 Tạo một dịch vụ web ñơn giản -Tạo một Project web ñặt tên là: HelloWebService - Tạo một lớp Java có lời chào “Hello” bên trong gói “mypackage” package mypackage; import javax.jws.WebService; @WebService() /* Chỉ thị @WebService() trong lớp Hello sẽ cho tất cả các phương thức public của lớp Hello sẽ ñược xem như các phương thức mà dịch vụ web cung cấp */ public class Hello { public Hello() { } /* Phương thức nghiệp vụ mà sẽ xuất hiện như là phương thức của dịch vụ web */ public String sayHello(String name){ return "Hello " + name + "!"; } } 58 Tạo một dịch vụ web ñơn giản Kích chuột phải vào Project và chọn deploy ñể triển khai dự án Test the Web service : Mở rộng Web services và kích chuột phải vào nút Hello Web service và chọn “Test Web Service” Xem xét trang HelloService Web Service Tester Gõ một tên ñể test, vd “WS Programmer”. Kích vào nút sayHello ñể xem kết quả trong một trang mới 59 Tạo một dịch vụ web ñơn giản Hãy xem các thông ñiệp SOAP message request và response Kích vào biểu tượng lùi lại trang trước ñể xem nội dung trang trước ñó Kích vào liên kết tệp WSDL ñể xem nội dung Quan sát ñịa chỉ URL của tài liệu WSDL là rvice?WSDL URL này sẽ ñược sử dụng khi tạo một ứng dụng Web service client ñể sử dụng dịch vụ 60 Tạo một dịch vụ web ñơn giản Tạo một Client ñể sử dụng dịch vụ - Tạo một Project java đặt tên là “HelloWebServiceClient” - Kích chuột phải vào tên Project này và chọn Web Services và dưới kiểu File Types, chọn WebService Client. 61 Chọn WSDL URL và chỉ ra vị trí của WSDL Tạo gói Package, tên là mypackage. Tạo một dịch vụ web ñơn giản package hellowebserviceclient; public class Main { public static void main(String[] args) try { // Gọi phương thức dịch vụ web mypackage.HelloService service = new mypackage.HelloService(); mypackage.Hello port = service.getHelloPort(); java.lang.String result = port.sayHello(“niyaz rao”); System.out.println("Result = "+result); } catch (Exception ex) { } } } 62 Chạy ứng dụng Client ñể xem kết quả 63