Tài liệu Bài giảng Phát triển ứng dụng web - Bài 8: Web service - Lê Đình Thanh: 1Lê Đình Thanh
Bộ môn Mạng và Truyền thông Máy tính
Khoa Công nghệ Thông tin
Trường Đại học Công nghệ, ĐHQGHN
E-mail: thanhld@vnu.edu.vn, thanhld.vnuh@gmail.com
Mobile: 0987.257.504
Bài giảng
PHÁT TRIỂN ỨNG DỤNG WEB
2Web service
Bài 8
Lê Đình Thanh, Bài giảng Phát triển ứng dụng web.
3Nội dung
• Web service (WS) là gì?
• Vì sao dùng WS?
• Tạo WS
• Triệu gọi phương thức của WS
– Sử dụng PHP
– Sử dụng AJAX
– Sử dụng jQuery
Lê Đình Thanh, Bài giảng Phát triển ứng dụng web.
Web service (WS)
• WS là thành phần phần mềm cung cấp các phương thức
(hàm) có thể triệu gọi qua mạng
– Tài liệu WSDL (Web Services Description Language) xác định
các phương thức mà WS cung cấp
– Các hệ thống khác triệu gọi phương thức của WS bằng cách
gửi cho WS thông báo WS Request và nhận kết quả (giá trị
trả về của phương thức) trong thông báo WS Response
f(x)
g(x, y)
h(z)
v = f(10)
Web ServiceApplication
WS Request
WS Response
Lê Đình Thanh, Bài giảng Phát triển ứng dụng web.
...
27 trang |
Chia sẻ: putihuynh11 | Lượt xem: 580 | Lượt tải: 0
Bạn đang xem trước 20 trang mẫu tài liệu Bài giảng Phát triển ứng dụng web - Bài 8: Web service - Lê Đình Thanh, để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
1Lê Đình Thanh
Bộ môn Mạng và Truyền thông Máy tính
Khoa Công nghệ Thông tin
Trường Đại học Công nghệ, ĐHQGHN
E-mail: thanhld@vnu.edu.vn, thanhld.vnuh@gmail.com
Mobile: 0987.257.504
Bài giảng
PHÁT TRIỂN ỨNG DỤNG WEB
2Web service
Bài 8
Lê Đình Thanh, Bài giảng Phát triển ứng dụng web.
3Nội dung
• Web service (WS) là gì?
• Vì sao dùng WS?
• Tạo WS
• Triệu gọi phương thức của WS
– Sử dụng PHP
– Sử dụng AJAX
– Sử dụng jQuery
Lê Đình Thanh, Bài giảng Phát triển ứng dụng web.
Web service (WS)
• WS là thành phần phần mềm cung cấp các phương thức
(hàm) có thể triệu gọi qua mạng
– Tài liệu WSDL (Web Services Description Language) xác định
các phương thức mà WS cung cấp
– Các hệ thống khác triệu gọi phương thức của WS bằng cách
gửi cho WS thông báo WS Request và nhận kết quả (giá trị
trả về của phương thức) trong thông báo WS Response
f(x)
g(x, y)
h(z)
v = f(10)
Web ServiceApplication
WS Request
WS Response
Lê Đình Thanh, Bài giảng Phát triển ứng dụng web.
Vì sao dùng web service
• Cho phép tích hợp qua mạng giữa các ứng
dụng được viết bằng các ngôn ngữ khác
nhau trên các nền khác nhau
– Tích hợp trong cùng host (thường yêu cầu
cùng nền, cùng ngôn ngữ lập trình)
● Bao hàm tệp mã nguồn: .h, .inc,
● Thư viện liên kết tĩnh: .lib
● Thư viện liên kết động: .dll
– Tích hợp qua mạng
● Remote Procedure Call (RPC)
● Web service
Lê Đình Thanh, Bài giảng Phát triển ứng dụng web.
WSDL
• Tài liệu WSDL (Web Service Definition
Language) được sử dụng để xác định
các phương thức mà WS cung cấp, có
thể triệu gọi qua mạng
• Mỗi WS cần có một tài liệu WSDL để
mô tả về nó
Lê Đình Thanh, Bài giảng Phát triển ứng dụng web.
Triệu gọi phương thức của WS bằng
SOAP
• SOAP (Simple Object Access Protocol) là giao thức được sử dụng
nhiều nhất để triệu gọi phương thức của WS
– Ngoài ra có thể dùng XML+RPC, REST+JSON,
• SOAP = HTTP + XML (thông báo SOAP là thông báo HTTP với nội
dung là tài liệu XML có cấu trúc được SOAP quy định)
f(x)
g(x, y)
h(z)
r = f(10)
SOAP WSApplication
=
SOAP client
SOAP WS request
SOAP WS response
Lê Đình Thanh, Bài giảng Phát triển ứng dụng web.
Thông báo SOAP WS
Request
POST /labs/webapp-development/ws/name-service.php
HTTP/1.0
Host: localhost
Content-Type: text/xml; charset=ISO-8859-1
Content-Length: 526
<SOAP-ENV:Envelope SOAP-
ENV:encodingStyle="
encoding/" xmlns:SOAP-
ENV=""
xmlns:xsd=""
xmlns:xsi="
instance" xmlns:SOAP-
ENC=""><S
OAP-ENV:Body><ns2820:normalizeName
xmlns:ns2820=""><name
xsi:type="xsd:string"> hoang THu
</SOAP-
ENV:Body>
HTTP header
HTTP body
Lê Đình Thanh, Bài giảng Phát triển ứng dụng web.
Thông báo SOAP WS
Response
HTTP/1.1 200 OK
Date: Wed, 27 Mar 2013 15:00:17 GMT
Server: Apache/2.2.21 (Win32)
Content-Length: 531
Connection: close
Content-Type: text/xml; charset=ISO-8859-1
<SOAP-
ENV:Envelope SOAP-
ENV:encodingStyle="
p/encoding/" xmlns:SOAP-
ENV=""
xmlns:xsd=""
xmlns:xsi="
instance" xmlns:SOAP-
ENC="">
<ns1:normalizeNameResponse
xmlns:ns1=""><return
xsi:type="xsd:string">Hoang
Thu</SOA
P-ENV:Body>
HTTP header
HTTP body
Lê Đình Thanh, Bài giảng Phát triển ứng dụng web.
Tạo SOAP WS
• Cho phép mở rộng php_soap
• Tạo thư viện các hàm cho WS
• Tạo tài liệu WSDL mô tả về WS
• Tạo SOAP WS
Lê Đình Thanh, Bài giảng Phát triển ứng dụng web.
Cho phép mở rộng php_soap
– Cấu hình trong php.ini
● extension=php_soap.dll
Lê Đình Thanh, Bài giảng Phát triển ứng dụng web.
Tạo thư viện các hàm cho
WS
<?php
function normalizeName($name, $type) {
$ss = explode(" ", $name);
$ret = "";
for ($i = 0; $i < count($ss); $i++) {
if (strcmp($ss[$i], "") != 0) {
if (strcmp($ret, "") != 0) $ret .= " ";
$ret .= $ss[$i];
}
}
if ($type == "UCW") return ucwords(strtolower($ret));
return ucfirst(strtolower($ret));
}
function ageFromDoB($vd) { //$vd: dd/mm/yyyy
$ss = explode("/", $vd); //tach xau
$age = intval(date("Y")) - intval($ss[2]);
return $age;
}
?>
Lê Đình Thanh, Bài giảng Phát triển ứng dụng web.
Tạo tài liệu WSDL mô tả WS
(1/5)
<definitions name=“myws"
targetNamespace=""
xmlns:tns=""
xmlns:soap=""
xmlns:xsd=""
xmlns:soapenc=""
xmlns:wsdl=""
xmlns="">
Lê Đình Thanh, Bài giảng Phát triển ứng dụng web.
Tạo tài liệu WSDL mô tả WS
(2/5)
Lê Đình Thanh, Bài giảng Phát triển ứng dụng web.
Tạo tài liệu WSDL mô tả WS
(3/5)
Lê Đình Thanh, Bài giảng Phát triển ứng dụng web.
Tạo tài liệu WSDL mô tả WS (4/5)
<soap:body use="encoded"
encodingStyle="" />
<soap:body use="encoded"
encodingStyle=""/>
<soap:body use="encoded"
encodingStyle="" />
<soap:body use="encoded"
encodingStyle=""/>
Lê Đình Thanh, Bài giảng Phát triển ứng dụng web.
Tạo tài liệu WSDL mô tả WS
(5/5)
<soap:address location="
development/ws/mywebservice.php"/>
Lê Đình Thanh, Bài giảng Phát triển ứng dụng web.
Tạo SOAP WS
<?php
require_once("lib.php");
ini_set("soap.wsdl_cache_enabled", "0");
$server = new
SoapServer("mywebservice.wsdl");
$server->addFunction("normalizeName");
$server->addFunction("ageFromDoB");
$server->handle();
?>
Lê Đình Thanh, Bài giảng Phát triển ứng dụng web.
Xem WSDL của WS
Lê Đình Thanh, Bài giảng Phát triển ứng dụng web.
Triệu gọi phương thức của WS bằng
PHP
<?php
$client = new SoapClient("mywebservice.wsdl", array('trace' => 1));
$response = $client->normalizeName(" trịnh tố nHư ", "UCW");
if (is_soap_fault($response)) {
echo "".$response->faultcode."";
echo "".$response->faultstring."";
} else echo $response;
$r = $client->ageFromDoB("23/5/1992");
if (is_soap_fault($r)) {
echo "".$r->faultcode."";
echo "".$r->faultstring."";
} else echo " $r";
?>
Lê Đình Thanh, Bài giảng Phát triển ứng dụng web.
Triệu gọi phương thức của WS bằng
PHP
• Xem SOAP WS Request vừa gửi
echo $client->__getLastRequestHeaders();
echo htmlentities($client->__getLastRequest());
• Xem SOAP WS Response vừa nhận
echo $client->__getLastResponseHeaders();
echo htmlentities($client->__getLastResponse());
Lê Đình Thanh, Bài giảng Phát triển ứng dụng web.
Triệu gọi phương thức của WS bằng
AJAX
var httpRequest = getAjaxEngine();
var url = “url-of-web-service”;
var soapMessage = ' <SOAP-
ENV:Envelope ';
httpRequest.open("POST", url, true);
if (httpRequest.overrideMimeType)
{ httpRequest.overrideMimeType("text/xml"); }
httpRequest.setRequestHeader("Man", url + " HTTP/1.1")
httpRequest.setRequestHeader("MessageType", "CALL");
httpRequest.setRequestHeader("Content-Type", "text/xml");
httpRequest.onreadystatechange= function() {
if (httpRequest.readyState == 4) {
if (httpRequest.status == 200) {
document.write( httpRequest.responseText);
}
}
};
httpRequest.send(soapMessage);
Lê Đình Thanh, Bài giảng Phát triển ứng dụng web.
Triệu gọi phương thức của WS bằng
jQuery
• Sử dụng thư viện jQuerySOAP tại
https://github.com/zachofalltrades/jquery.soap
$.soap({
url: '
development/ws/mywebservice.php/',
method: 'normalizeName',
params: { name: ' hoàng tHANH tÙNG ', type: 'UCW’ },
returnJson: false,
success: function (data) {
//data là thân của SOAP response.
},
error: function (string)
{ document.write(""+string+""); }
});Lê Đình Thanh, Bài giảng Phát triển ứng dụng web.
Triệu gọi phương thức của WS bằng
jQuery
Phân tích SOAP Response
success: function (data) {
var xmlDoc = null;
if (window.DOMParser) {
xmlDoc = new DOMParser().parseFromString(data,"text/xml");
} else {
xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async = false;
xmlDoc.loadXML(data);
}
if (xmlDoc != null) {
document.write(xmlDoc.getElementsByTagName("normalizedName")
[0].childNodes[0].nodeValue);
}
document.write(""+data+"");
}
Lê Đình Thanh, Bài giảng Phát triển ứng dụng web.
NuSOAP
• Là SOAP toolkit dùng cho phát triển
SOAP server và SOAP client
• Có thể được sử dụng để phát triển
SOAP WS.
Tự
học
Lê Đình Thanh, Bài giảng Phát triển ứng dụng web.
Công bố và sử dụng WS
Kiến trúc WS
Nguồn:
Nhà cung cấp
WS cần quảng
cáo về WS của
mình cho khách
hàng biết
Nhà môi giới tạo
danh bạ WS
UDDI (Universal
Description,
Discovery and
Integration)
Khách hàng cần
sử dụng WS tìm
WS trên danh bạ
Ví dụ:
Lê Đình Thanh, Bài giảng Phát triển ứng dụng web.
Hết
Lê Đình Thanh, Bài giảng Phát triển ứng dụng web.
Các file đính kèm theo tài liệu này:
- 08_web_service_0779_1995473.pdf