4. Kết luận
3.2.4.3. SOAP(Simple Object Access Protocol)
Là giao thức triệu gọi các đối tượng dựa trên nền giao thức HTTP và ngôn ngữ XML. Các đối tượng được cài đặt và chạy trên một web service nào đó trên Internet. Chúng ta lập trình và gọi phương thức, thuộc tính của nó trên chương trình và máy tính của chúng ta. Có khả năng tích hợp các chương trình trên Internet. SOAP định nghĩa cơ chế giao tiếp giữa các đối tượng thông qua 2 bước: SOAP request và SOAP response.
SOAP = XML + Một giao thức có thể hoạt động trên Internet (HTTP, FTP, SMTP) trong đó HTTP phổ biến hơn cả.
[30]
Hình 3.7: Trao đổi thông điệp SOAP
Thông điệp theo định dạng XML bình thường gồm các phần như hình sau:
Hình 3.8: Cấu trúc của thông điệp SOAP
- SOAP envelope: Phần tử gốc bao trùm nội dung thông điệp, khai báo văn bản XML như một thông điệp SOAP.
<?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"> ...
Message information goes here ... </soap:Envelope> SOAP envelope– Phần tử gốc header Body fault
[31]
- Xmlns: soap namespace. Thường có giá trị “url/soap-envelope”. Không gian tên xác định Envelope như là một SOAP Envelope. Nếu một không gian tên khác nhau được sử dụng, ứng dụng sẽ phát sinh ra lỗi và loại bỏ thông điệp.
Encoding Style là thuộc tính được sử dụng để xác định kiểu dữ liệu được sử dụng trong văn bản. Thuộc tính này có thể được xuất hiện trong bất kì phần nào của thông điệp. Cú pháp chuẩn : soap:encodingStyle=”URL”.
- Header: Phần tử đầu trang, chứa các tiêu đề cho trang. Nó có thể được khai báo hoặc không được khai báo và có thể mang những chữ kí số, thông tin mã hóa hay cài đặt cho giao dịch khác. Nếu khai báo phần Header trong thông điệp, nó phải là phần tử con đầu tiên của phần tử Envelope. <?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:Header> <m:Trans xmlns:m="http://www.w3schools.com/transaction/" soap:mustUnderstand="1">234 </m:Trans> </soap:Header> ... ... </soap:Envelope>
Thuộc tính mustUnderstand có thể được sử đụng để đưa ra để đưa ra nơi mà toàn bộ phần header là . Nếu mustUnderstand=”1”. Nó sẽ chỉ ra rằng những người nhận xử lý Header phải nhận các phần tử. Nếu người nhận thông điệp không nhận phần tử nó sẽ lỗi khi xử lý phần Header.
[32]
- Fault: Đưa ra thông tin về các lỗi xảy ra trong quá trình truyền thông điệp. Nếu có một lỗi xảy ra, nó phải nằm trong phần Body. Một lỗi có thể chỉ xuất hiện một lần trong thông điệp SOAP. Một SOAP đơn giản trong body sẽ lưu thông tin về các thông điệp, tham chiếu tới một thể hiện của dịch vụ, một hoặc nhiều tham số. Có 3 kiểu thông báo sẽ được đư ra khi truyền tin: request message (tham số gọi thực thi một thông điệp), response message (tham số trả về, được sử dụng khi yêu cầu được đáp ứng) và cuối cùng là fault message (thông báo tình trạng lỗi).
Một số đặc điểm của SOAP:
- Khả năng mở rộng (extensible): Cung cấp khả năng mở rộng phục vụ cho nhu cầu đặc thù của ứng dụng và nhà cung cấp. Các chức năng về bảo mậ, tăng độ tin cậy có thể đưa vào phần mở rộng của SOAP. Các nhà cung cấp dịch vụ khác nhau, tùy vào đặc điểm hệ thống của mình có thể định nghĩa them các chức năng mở rộng nhằm tăng thêm lợi thế cạnh tranh cũng như cung cấp thêm tiện ích cho người sử dụng.
- Có thể hoạt động dựa trên các network protocol đã được chuẩn hóa (HTTP, SMTP, FTP, TCP,…)
- Độc lập với platform, ngôn ngữ lập trình hay programming model được sử dụng.
Hình 3.9: Mô hình tương tác giữa các thành phần
[33]
Hình 3.10: Sơ đồ sử dụng web service
o Nhà cung cấp Web Service mô tả Web Service trong một tài liệu WSDL và đăng ký nó lên một UDDI bằng cách Publisher’s API
o Một người sử dụng UDDI Inquiry API để tìm thông tin về nhà cung cấp dịch vụ thích hợp. Nếu có, nó sẽ tìm kiếm tiếp tModel rồi từ đó lấy ra tài liệu mô tả WSDL.
o Một yêu cầu dạng SOAP được tạo ra dựa trên tài liệu mô tả WSDL o Yêu cầu SOAP trên sẽ được gửi đến nhà cung cấp dịch vụ và được xử lý.