01.02.2013 Views

Download lab3_part2 - Khoa Khoa học và Kỹ thuật Máy tính

Download lab3_part2 - Khoa Khoa học và Kỹ thuật Máy tính

Download lab3_part2 - Khoa Khoa học và Kỹ thuật Máy tính

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Thương mại điện tử – Bài thực hành số 4 2012<br />

Mô tả<br />

Yêu cầu<br />

BÀI THỰC HÀNH SỐ 4: WEB SERVICES<br />

Mục đích của bài thực hành:<br />

- Cung cấp các kiến thức cơ bản về Web services.<br />

- Xây dựng <strong>và</strong> sử dụng Web services trong ASP.NET.<br />

Nội dung bài thực hành:<br />

- Phần 1: Giới thiệu tổng quan về Web services.<br />

- Phần 2: Xây dựng Web services.<br />

- Bài tập.<br />

Đọc <strong>và</strong> tìm hiểu lý thuyết liên quan.<br />

Thực hành <strong>và</strong> làm bài tập.<br />

Phần 1. Giới thiệu tổng quan về Web Services<br />

1. Web Services là gì?<br />

Web Services 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<br />

các máy <strong>tính</strong> trên mạng (theo World Wide Web Consortium – W3C). Nó cung cấp một<br />

interface được mô tả theo một định dạng chung thường gọi là ngôn ngữ mô tả dịch vụ web<br />

(Web Service Description Language – WSDL). Các hệ thống khác thực hiện tương tác với<br />

Web Services thông qua giao thức SOAP (Simple Object Access Protocol). Đây là giao thức<br />

giúp trao đổi thông tin sử dụng HTTP kết hợp với việc sử dụng đặc tả XML cùng với một số<br />

chuẩn khác.<br />

Như vậy, mục đích chính của việc phát triển của Web Services là cho phép giao tiếp <strong>và</strong><br />

trao đổi các chức năng, thông tin, dữ liệu giữa các ứng dụng một cách dễ dàng mà không cần<br />

quan tâm đến môi trường phát triển, ngôn ngữ lập trình bởi tất cả đã được quy về một định<br />

dạng chung. Bản chất của Web Services là một tập hợp các đối tượng, các phương thức được<br />

thực thi <strong>và</strong> cung cấp trên mạng để có thể được triệu gọi từ xa thông qua các ứng dụng khác.<br />

Đ ạ i h ọ c B á c h K h o a T P . H C M – K h o a K H & K T M á y<br />

T í n h<br />

Trang 1


Thương mại điện tử – Bài thực hành số 4 2012<br />

Web Services kế thừa <strong>và</strong> khắc phục những điểm yếu của các công nghệ phân tán trước đó<br />

như CORBA, DCOM <strong>và</strong> RMI. Ngày nay, Web Services được sử dụng trong nhiều lĩnh vực<br />

phát triển phần mềm khác nhau như các dịch vụ cung cấp giá cổ phiếu, hỗ trợ thanh toán trực<br />

tuyến, chuyển đổi ngoại tệ, tìm kiếm thông tin liên quan đến sản phẩm, đặc biệt là các Web<br />

Services của các website bán hàng trực tuyến như Amazon, eBay. Web Services ra đời là một<br />

sự phát triển có vai trò quan trọng trong lĩnh vực ứng dụng phân tán trên internet.<br />

2. Kiến trúc Web Services<br />

Web Services là sự tích hợp các ứng dụng dựa trên web sử dụng các chuẩn mở như<br />

XML, SOAP, WSDL, UDDI. Trong đó, XML được sử dụng để mô tả dữ liệu, SOAP đóng vai<br />

trò giao thức truyền tải dữ liệu, WSDL mô tả cho dịch vụ web <strong>và</strong> UDDI liệt kê danh sách các<br />

dịch vụ web đang hoạt động.<br />

a. XML – Extensible Markup Language<br />

XML là một ngôn ngữ đánh dấu mở rộng với cấu trúc do người dùng định nghĩa. Về hình<br />

thức, XML có cú pháp tương tự HTML, nhưng không tuân theo một đặc tả quy ước như<br />

HTML. Người sử dụng hay các chương trình có thể quy ước định dạng các thẻ XML, ngoài ra<br />

không chứa bất cứ thông tin nào khác về cách sử dụng hay hiển thị những thông tin ấy.<br />

Web Services là sự kết hợp của nhiều thành phần khác nhau, <strong>và</strong> nó hỗ trợ tương tác giữa<br />

các hệ thống được cài đặt trên các môi trường khác nhau. Do đó, cần sử dụng một dạng tài<br />

liệu có thể giúp giải quyết vấn đề tương thích <strong>và</strong> XML hoàn toàn phù hợp với yêu cầu trên.<br />

Nó đã trở thành nền tảng cho việc xây dựng các web service. XML có hai vai trò chính:<br />

� Trao đổi dữ liệu trong hệ thống sử dụng web services.<br />

� Mô tả các giao thức sử dụng trong web services.<br />

b. SOAP – Simple Object Access Protocol<br />

SOAP (Simple Object Access Protocol) là giao thức dùng để truy xuất thông tin từ web<br />

services thông qua một dạng thông điệp chung. SOAP là một giao thức dựa trên nền tảng<br />

XML, mô tả cách định dạng, đóng gói thông tin của các thông điệp <strong>và</strong> trao đổi chúng thông<br />

qua mạng mà không phụ thuộc <strong>và</strong>o bất kỳ ngôn ngữ hay môi trường thực thi nào. Đơn vị trao<br />

đổi thông tin cơ bản của giao thức SOAP là SOAP Message. Mỗi SOAP Message sẽ được chỉ<br />

định bởi một thẻ root chứa 2 thành phần là SOAP Header <strong>và</strong> SOAP Body. SOA<br />

Header chứa các thông tin cần thiết cho việc thực hiện chuyển thông điệp hay cơ chế định<br />

danh, bảo mật. SOAP Body chứa dữ liệu ứng dụng Cấu trúc của một thông điệp SOAP như<br />

hình sau:<br />

Đ ạ i h ọ c B á c h K h o a T P . H C M – K h o a K H & K T M á y<br />

T í n h<br />

Trang 2


Thương mại điện tử – Bài thực hành số 4 2012<br />

Dưới đây là 1 ví dụ SOAP Message.<br />

POST /InStock HTTP/1.1<br />

Host: www.example.org<br />

Content-Type: application/soap+xml; charset=utf-8<br />

Content-Length: 299<br />

SOAPAction: "http://www.w3.org/2003/05/soap-envelope"<br />

<br />

<br />

<br />

<br />

<br />

<br />

IBM<br />

<br />

<br />

<br />

c. WSDL – Web Services Description Language<br />

WSDL (Web Services Description Language) là một dạng tài liệu dựa trên cú pháp XML<br />

để mô tả Web Services. WSDL sẽ cung cấp tài liệu cho các hệ thống phân tán như mô tả chức<br />

năng của một Web Service, cách thức tương tác, các thông điệp tương ứng cho các thao tác<br />

request hay response. Một tài liệu WSDL bao gồm 2 thành phần chính: Phần trừu tượng<br />

(abstract definitions) <strong>và</strong> phần hiện thực (concrete definitions). Phần trừu tượng bao gồm các<br />

thông tin được chứa các thẻ types, message, operation, <strong>và</strong> port types. Phần hiện thực chứa<br />

thông tin trong các thẻ bindings <strong>và</strong> ports. Cấu trúc một tài liệu WSDL như sau:<br />

<br />

*<br />

?<br />

Đ ạ i h ọ c B á c h K h o a T P . H C M – K h o a K H & K T M á y<br />

T í n h<br />

Trang 3


Thương mại điện tử – Bài thực hành số 4 2012<br />

?<br />

?<br />

*<br />

*<br />

<br />

*<br />

?<br />

*<br />

<br />

*<br />

?<br />

*<br />

?<br />

?<br />

?<br />

<br />

?<br />

?<br />

<br />

*<br />

?<br />

<br />

<br />

<br />

*<br />

?<br />

*<br />

*<br />

?<br />

*<br />

?<br />

?<br />

<br />

<br />

?<br />

?<br />

*<br />

<br />

*<br />

?<br />

*<br />

<br />

<br />

<br />

*<br />

?<br />

*<br />

?<br />

<br />

<br />

<br />

<br />

Đ ạ i h ọ c B á c h K h o a T P . H C M – K h o a K H & K T M á y<br />

T í n h<br />

Trang 4


Thương mại điện tử – Bài thực hành số 4 2012<br />

*<br />

<br />

Mỗi thành phần có một chức năng riêng, cụ thể như sau:<br />

� Types: chỉ định kiểu dữ liệu cho các thông điệp gửi <strong>và</strong> nhận.<br />

� Messages: là một thành phần trừu tượng mô tả cách thức giao tiếp giữa client <strong>và</strong><br />

server.<br />

� PortTypes: mô tả ánh xạ giữa các thông điệp – được mô tả trong phần tử<br />

messages – <strong>và</strong> các phương thức (operations).<br />

� Binding: xác định giao thức nào được sử dụng khi giao tiếp với dịch vụ web.<br />

Định nghĩa kiểu binding (RPC/Document) <strong>và</strong> giao thức vận chuyển. Binding cũng<br />

định nghĩa các operations.<br />

� Port: chỉ định địa chỉ hoặc điểm kết nối đến web service, nó thường là một chuỗi<br />

URL đơn giản.<br />

� Service: tập hợp các ports liên quan.<br />

d. UDDI – Universal Description, Discovery, and Integration<br />

UDDI (Universal Description, Discovery, and Integration) được xây dựng nhằm mục<br />

đích cung cấp khả năng cho phép công bố, tổng hợp <strong>và</strong> tìm kiếm Web Services.<br />

UDDI đưa ra một tập các hàm API được chia làm 2 phần: Inquiry API (dùng để tìm kiếm<br />

<strong>và</strong> truy xuất) <strong>và</strong> Publisher‟s API (công bố các web services).<br />

Thông tin tổ chức trong UDDI được chia thành 3 phần:<br />

� White pages: Liệt kê thông tin của các nhà cung cấp dịch vụ web bao gồm địa<br />

chỉ, thông tin liên lạc, <strong>và</strong> định danh.<br />

� Yellow pages: Phân loại dịch vụ theo tổ chức hay nhóm dịch vụ hoặc địa điểm<br />

đặt các dịch vụ.<br />

� Green pages: Cung cấp thông tin về Web Services, về cách thức truy xuất web<br />

services đó.<br />

Phần 2. Xây dựng Web Services<br />

Ta sẽ xây dựng một web services đơn giản, trả về giờ hiện tại của hệ thống.<br />

1. Tạo Web services trong VS 2008<br />

Mở VS 2008, chọn menu File � New � New WebSite. Cửa sổ New Web Site xuất hiện,<br />

ta thiết lập như hình dưới đây để tạo ứng dụng Web Service tên là CurrentTime.<br />

Đ ạ i h ọ c B á c h K h o a T P . H C M – K h o a K H & K T M á y<br />

T í n h<br />

Trang 5


Thương mại điện tử – Bài thực hành số 4 2012<br />

Nhấn OK, trong cửa sổ viết lệnh, có một phương thức mẫu được tạo sẵn là HelloWord.<br />

using System;<br />

using System.Linq;<br />

using System.Web;<br />

using System.Web.Services;<br />

using System.Web.Services.Protocols;<br />

using System.Xml.Linq;<br />

[WebService(Namespace = "http://tempuri.org/")]<br />

[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]<br />

// To allow this Web Service to be called from script, using ASP.NET AJAX,<br />

uncomment the following line.<br />

// [System.Web.Script.Services.ScriptService]<br />

public class Service : System.Web.Services.WebService<br />

{<br />

public Service () {<br />

}<br />

//Uncomment the following line if using designed components<br />

//InitializeComponent();<br />

Đ ạ i h ọ c B á c h K h o a T P . H C M – K h o a K H & K T M á y<br />

T í n h<br />

Trang 6


Thương mại điện tử – Bài thực hành số 4 2012<br />

}<br />

[WebMethod]<br />

public string HelloWorld() {<br />

return "Hello World";<br />

}<br />

Phương thức HelloWorld có sẵn từ khóa [WebMethod]. Chúng ta sẽ bổ sung <strong>và</strong>o<br />

phương thức GetCurrentTime(), như sau:<br />

[WebMethod]<br />

public string GetCurrentTime()<br />

{<br />

return DateTime.Now.ToString("hh:mm:ss");<br />

}<br />

2. Kiểm tra web services<br />

Sau khi xây dựng thành công Web Service, trước khi đưa <strong>và</strong>o sử dụng, chúng ta cũng nên<br />

tiến hành kiểm tra Web Service. Các Web Service được xây dựng trong VS.Net tự động phát<br />

sinh ra các trang kiểm tra tương ứng. Để thực hiện điều này, nhấn F5 để thi hành ứng dụng.<br />

Đ ạ i h ọ c B á c h K h o a T P . H C M – K h o a K H & K T M á y<br />

T í n h<br />

Trang 7


Thương mại điện tử – Bài thực hành số 4 2012<br />

Nhấp <strong>và</strong>o GetCurrentTime để gọi phương thức này.<br />

Nhấp <strong>và</strong>o button Invoke, ta được kết quả:<br />

Đ ạ i h ọ c B á c h K h o a T P . H C M – K h o a K H & K T M á y<br />

T í n h<br />

Trang 8


Thương mại điện tử – Bài thực hành số 4 2012<br />

Để sử dụng một Web Service, Client cần phải biết Web Service đó hỗ trợ những phương<br />

thức nào, phương thức cần có những tham số nào, kết quả trả về ra sao… Những thông tin<br />

này của một Web Service được mô tả bởi tài liệu WSDL (Web Service Description<br />

Language). Chúng ta có thể xem WSDL của một Web Service bằng cách thêm <strong>và</strong>o chuỗi<br />

tham số ?wsdl <strong>và</strong>o sau chuỗi URL.<br />

Ví dụ: http://localhost:64299/CurrentTime/Service.asmx?wsdl<br />

Đ ạ i h ọ c B á c h K h o a T P . H C M – K h o a K H & K T M á y<br />

T í n h<br />

Trang 9


Thương mại điện tử – Bài thực hành số 4 2012<br />

3. Sử dụng Web Services<br />

Bước 1: Tạo một trang ASP.NET đơn giản, sử dụng web services trên để hiện thị giờ<br />

hiện hành như sau:<br />

<br />

<br />

<br />

<br />

Untitled Page<br />

<br />

<br />

<br />

<br />

Current time is :<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

Bước 2: Thiết lập tham chiếu đến ứng dụng web service CurrentTime.<br />

Nhấp phải chuột tại tên project trong cửa sổ Solution Explorer, chọn Add Web<br />

Reference.<br />

Đ ạ i h ọ c B á c h K h o a T P . H C M – K h o a K H & K T M á y<br />

T í n h<br />

Trang 10


Thương mại điện tử – Bài thực hành số 4 2012<br />

Ta sẽ tham khảo tới Web Service cần sử dụng. Ở đây, có thể chọn mục Web Services in<br />

this solution để tìm web service đã tạo ở trên. (Do ta thiết lập trang ASP.NET <strong>và</strong> web<br />

services ở cùng 1 solution)<br />

Đ ạ i h ọ c B á c h K h o a T P . H C M – K h o a K H & K T M á y<br />

T í n h<br />

Trang 11


Thương mại điện tử – Bài thực hành số 4 2012<br />

kê.<br />

Nhấp chuột để chọn service cần tham khảo tới trong danh sách các web services được liệt<br />

Đ ạ i h ọ c B á c h K h o a T P . H C M – K h o a K H & K T M á y<br />

T í n h<br />

Trang 12


Thương mại điện tử – Bài thực hành số 4 2012<br />

Điền tên cho web service rồi nhấp chuột <strong>và</strong>o button Add Reference.<br />

Đ ạ i h ọ c B á c h K h o a T P . H C M – K h o a K H & K T M á y<br />

T í n h<br />

Trang 13


Thương mại điện tử – Bài thực hành số 4 2012<br />

Ta được kết quả như sau:<br />

Sử dụng Web Service do chúng ta xây dựng tương tự như việc sử dụng các lớp đối tượng.<br />

Ví dụ ta có thể viết code cho sự kiện click <strong>và</strong>o button Refresh như sau :<br />

Đ ạ i h ọ c B á c h K h o a T P . H C M – K h o a K H & K T M á y<br />

T í n h<br />

Trang 14


Thương mại điện tử – Bài thực hành số 4 2012<br />

protected void btnRefresh_Click(object sender, EventArgs e)<br />

{<br />

//declare Service object<br />

CurrentTimeService.Service curtime = new CurrentTimeService.Service();<br />

}<br />

//call service method<br />

lblCurrentTime.Text = curtime.GetCurrentTime();<br />

Ta có kết quả như sau:<br />

4. Web Services được cung cấp miễn phí trên mạng<br />

Ta có thể sử dụng các Web Services được cung cấp sẵn trên mạng. Sinh viên tự tìm hiểu<br />

<strong>và</strong> sử dụng các phương thức được hỗ trợ trong các web services sau :<br />

� Quốc gia: http://www.webservicex.net/country.asmx?wsdl<br />

� Thời tiết: http://www.webservicex.net/globalweather.asmx?wsdl<br />

� Tỷ giá: http://www.webservicex.net/CurrencyConvertor.asmx?wsdl<br />

Đ ạ i h ọ c B á c h K h o a T P . H C M – K h o a K H & K T M á y<br />

T í n h<br />

Trang 15


Thương mại điện tử – Bài thực hành số 4 2012<br />

Phần 3. Bài tập<br />

1. Tạo một web service tên là MiniCalculator thực hiện các phép <strong>tính</strong>: cộng, trừ, nhân, chia<br />

2 số.<br />

2. Tạo một web service cho thư viện, gồm các chức năng login; xem, thêm, xoá, sửa thông<br />

tin sách (được lưu dưới cơ sở dữ liệu).<br />

Đ ạ i h ọ c B á c h K h o a T P . H C M – K h o a K H & K T M á y<br />

T í n h<br />

Trang 16

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!