Đị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
63 trang |
Chia sẻ: lylyngoc | Lượt xem: 1886 | Lượt tải: 2
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