CHƯƠNG 1. TỔNG QUAN VỀ WEB SERVICE 1. Các công nghệ hỗ trợ trước web service Sự ra đời của phƣơng pháp lập trình hƣớng đối tƣợng đã đem lại nhiều hứa hẹn về khả năng tái sử dụng mã nguồn trên nhiều hệ thống và kiến trúc. Để giúp giảm thiểu thời gian và công sức cho các lập trình viên, các kho mã nguồn ra đời nhằm cung cấp các thƣ viện thực hiện các chức năng cơ bản cho lập trình viên (Ví dụ nhƣ các thƣ viện thƣơng mại C++ chứa các phƣơng thức tao tác chuẩn trên ngày và giờ,.
Tuy nhiên, các thƣ viện thƣơng mại này chỉ có thể cung cấp các chức năng cơ bản và các lớp tổng quát cần thiết, còn đối với một số nghiệp vụ đặc biệt, nhƣ nghiệp vụ của ngân hàng, đòi hỏi phải xây dựng các gói thƣ viện riêng phù hợp với từng nghiệp vụ của mỗi công ty. Ban đầu, các công ty xây dựng các gói thƣ viện nghiệp vụ dƣới dạng các thƣ viện liên kết động DLL (Dynamic Link Library). Các thƣ viện này chứa thông tin cho các ứng dụng khác dùng để tạo các đối tƣợng và chỉ có thể lập trình để chạy trên cùng một máy (nhƣ các tập tin DLL). Tuy nhiên, nếu trong một tập đoàn lớn, với yêu cầu phải bảo trì hàng trăm ngàn máy trạm và các ứng dụng trên mỗi hệ thống, việc có những thƣ viện này trên mỗi hệ thống sẽ gây ra rất nhiều khó khăn khi phải tiến hành bảo trì.Do đó, việc dùng các đối tƣợng từ xa là một cách tối ƣu để sử dụng lại mã nguồn ở mức ứng dụng trên một máy cục bộ.
Các đối tƣợng từ xa là các đối tƣợng đƣợc tạo ra ở trên một máy chủ trung tâm và có thể đƣợc truy cập từ máy trạm thông qua mạng, kể cả Internet.Trƣớc khi web service ra đời, ngƣời ta thƣờng sử dụng ba công nghệ dùng để gọi các đối tƣợng từ xa là RMI, DCOM (COM) và CORBA. RMI (Remote Method Invocation): Là phƣơng thức do công ty JavaSoft đƣa ra và đƣợc xây dựng trên ngôn ngữ Java. RMI là các hàm thƣ viện hỗ trợ các lời gọi phƣơng thức từ xa và trả về giá trị cho các ứng dụng tính toán phân tán. Chúng ta giả sử rằng ngôn ngữ Java đƣợc sử dụng ở cả phía gọi và phía bên phƣơng thức đƣợc gọi.RMI là một tập các hàm thƣ viện đơn giản vì cả 2 bên đều sử dụng cùng môt ngôn ngữ lập trình và kiến trúc máy.
Điều này sẽ làm cho vấn để triệu gọi phƣơng thức từ xa dễ giải quyết hơn.Tuy nhiên sử dụng RMI đòi hỏi các ứng dụng của client-server phải đƣợc viết trong ngôn ngữ Java.Các đối tƣợng trong RMI không thể giao tiếp với các đối tƣợng không phải là đối tƣợng Java.Chính vì vậy, RMI chỉ thích hợp cho các ứng dụng đƣợc viết trên ngôn ngữ Java[19]. TIEU LUAN MOI download : skknchat@gmail. DCOM đƣợc phát triển bởi Microsoft cho những hệ điều hành Windows.Nó hỗ trợ những đối tƣợng đƣợc phân tán qua một mạng gần giống nhƣ giao thức DSCOM của IBM (là một thực thi của CORBA)[17]. Tuy nhiên DCOM chỉ dùng tốt cho hệ thống phân bố dành cho destop khó mở rộng trong cấp độ enterprise,và các ứng dụng của DCOM chỉ tốt trên các ứng dụng của Microsoft.CORBA là một trong những giao thức đƣợc sử dụng khá phổ biến để phát triển các ứng dụng phân tán (distributed) hƣớng đối tƣợng (object-oriented).
CORBA là một chuẩn công nghiệp cho phép gọi các phƣơng thức từ xa và nhận kết quả trả về, nhƣng không giống nhƣ RMI, nó có thể đƣợc sử dụng khi bên phía gọi và bên phía phƣơng thức đƣợc gọi có thể sử dụng các ngôn ngữ lập trình khác nhau, bao gồm cả trƣờng hợp là cả 2 bên đều không sử dụng ngôn ngữ Java. CORBA sử dụng ORB (Object Request Broker) đóng vai trò nhƣ một middleware cho việc gọi một chƣơng trình từ xa.ORB sử dụng một ngôn ngữ CORBA IDL để định nghĩa giao diện (interface) và cái này tách biệt với sự hiện thực của một đối tƣợng[18].Tuy nhiên các hệ thống của CORBA cũng chỉ giao tiếp đƣợc với các hệ thống khác cùng sử dụng chuẩn CORBA. Một đặc điểm chung của các giao thức trên đó là nó chỉ hoạt động đƣợc trên cùngcác hệ thống sử dụng công nghệ hoặc ngôn ngữ giống nhau, chính vì vậy vấn đề đặt ra là: Làm sao để các hệ thống phân tán đƣợc phát triển trên các công nghệ khác nhau, đƣợc xây dựng bằng các ngôn ngữ khác nhau có thể giao tiếp với nhau?Microsoft đã tạo ra một giao thức chuẩn dựa trên XML gọi là SOAP (Simple Object Access Protocol – Giao thức truy cập đối tƣợng đơn giản). Giao thức này là sự kết hợp việc lƣu trữ dữ liệu dƣới định dạng XML và một giao thức chuẩn cho phép truyền tải dữ liệu qua Internet.Những giao thức mà SOAP thƣờng sử dụng để truyền tải bao gồm SMTP (Simple Mail Transfer Protocol), FTP (File Transfer Protocol) và HTTP (Hypertext Transfer Protocol).Các nhà phát triển thƣờng xem những giao thức này nhƣ là chồng các giao thức của Web Service.Sự ra đời của web service cung cấp khả năng chia sẻ dữ liệu giữa các ứng dụng và cơ chế giao tiếp giữa các đối tƣợng một cách linh hoạt và dễ dàng, độc lập với ngôn ngữ phát triển, hệ điều hành và các công nghệ mà đối tƣợng đó sử dụng[13].
Web service là gì. Ta hãy xem một số tổ chức định nghĩa nhƣ thế nào về web service TIEU LUAN MOI download : skknchat@gmail.com 13 Theo Tổ chức W3C [13]: o Web service là một hệ thống phần mềm đƣợc thiết kế để hỗ trợ các tƣơng tác từ máy này tới máy khác (machine to machine) thông qua mạng internet.Web service là các web API có thể truy cập đƣợc thông qua mạng Internet, và đƣợc thực hiện tại hệ thống từ xa có chứa các dịch vụ đƣợc yêu cầu. Các hệ thống khác tƣơng tác với web service thông qua việc sử dụng các thông điệp XML tuân theo chuẩn SOAP … Theo IBM[15] o ―Web service là một giao diện mô tả một tập các thao tác mà có thể truy xuất đến các thao tác này thông qua các thông điệp dạng XML‖ Theo SUN [16] o ―Web service là Các thành phần phần mềm có thể tự khai thác, kết hợp với nhau để cung cấp một giải pháp cho các vấn đề/yêu cầu của ngƣời dùng….‖ Nhƣ vậy ta có thể hiểu khái niệm Service ở đây là chỉ những ứng dụng mà mình muốn cho bên ngoài sử dụng. Ví dụ: Chƣơng trình của bạn chỉ có 1 lớp Java đơn giản nhƣ sau: Class HelloWorld { public HelloWorld() { super(); } public String sayHello(String str) { Return ―Hello, ― + str; }} Khi ngƣời khác sử dụng chƣơng trình của chúng ta và họ truyền vào 1 chuỗi str, thì chúng ta sẻ trả lại cho họ chuổi ―Hello, ― + str.Nhƣ vậy, cần phải có một cách thức để bên ngoài có thể tƣơng tác đƣợc với chƣơng trình của chúng ta, và cách thức đó chính là web service.
Ta có thể hình dung khái niệm về web service qua sơ đồ sau: Client<------->network<---->webservice<=>myservice TIEU LUAN MOI download : skknchat@gmail. Lợi ích của việc sử dụng web service Việc sử dụng Web Service có những lợi ích sau[10,14]: Chia sẻ dữ liệu: Web Service cho phép các ứng dụng chia sẻ dữ liệu, cung cấp khả năng gọi đến các ứng dụng khác mà không cần quan tâm đến các ứng dụng đó đƣợc phát triển bằng ngôn ngữ nào, chạy trên hệ điều hành hoặc môi trƣờng nào, v.v… Mặc dù các ứng dụng Web Service là độc lập với nhau, nhƣng chúng có thể liên kết với nhau để thực hiện một công việc cụ thể. Do đó, ngƣời dùng có thể sử dụng bất kỳ chƣơng trình phía khách nào để gọi đến các phƣơng thức của các Web Service, tƣơng tác và lấy kết quả vềtheoyêu cầu để xử lý. Chi phí thấp: Web Service đƣợc xây dựng trên công nghệ XML.
Nhƣ vậy dữ liệu có thể đƣợc truyền qua các môi trƣờng và hệ điều hành khác nhau mà không bị phụ thuộc vào các ngôn ngữ lập trình đƣợc sử dụng. Do đó, giảm đƣợc chi phí và thời gian để xây dựng một môi trƣờng giao tiếp dữ liệu linh hoạt giữa các hệ thống khác nhau. Thông tin đƣợc cập nhật thƣờng xuyên và linh hoạt: Web Service không chỉ cho phép các hệ thống kết nối với nhau mà còn cho phép kết nối thông tin giữa ngƣời sử dụng thông tin và các thông tin mà họ cần khai thác. Sau đó thông tin có thể đƣợc sử dụng theo bất cứ một khuôn dạng nào mà ngƣời sử dụng thông tin mong muốn.
Ngƣời sử dụng thông tin có thể yêu cầu bất cứ thông tin nào, tại một thời điểm bất kỳ từ địa điểm cung cấp các dịch vụ Web mà không phải đợi thông tin đƣợc chuyển lên theo định kỳ [8]. Lƣợng thông tin phong phú: Tăng khả năng thu thập và trao đổi thông tin từ nhiều nguồn khác nhau thông qua việc liên kết thông tin giữa các Web Service. Do đó, giảm đƣợc gánh nặng lƣu trữ dữ liệu tại trung tâm lƣu trữ (khả năng lƣu trữ phân tán). Khả năng bảo mật cao: Các phƣơng thức của Web Service có thể yêu cầu một số thông tin từ phía ngƣời dùng trong các yêu cầu đƣợc gửi đến cho chúng.
Các thông tin trao đổi (mô tả bằng XML) có thể đƣợc mã hóa theo chuẩn mã hóa XML. Nếu các Web Service sử dụng các phƣơng thức trao đổi dữ liệu dƣới dạng nhị phân (thông qua cơ chế gọi thủ tục từ xa – Remote Procedure Call), chúng sẽ đƣợc tăng cƣờng bảo mật bởi chính các công nghệ RPC của từng nhà cung cấp dịch vụ. Kiến trúc tổng quan của web service [20] Web Service bao gồm nhiều tầng. Về cơ bản, đó là một cơ chế chuẩn liên quan đến việc nhận biết, mô tả, và tìm kiếm các chức năng đƣợc cung cấp bởi một ứng dụng TIEU LUAN MOI download : skknchat@gmail.com 15 Web Service.Kiến trúc của web service đƣợc mô tả trong hình dƣới đây: Hình 1.1:Kiến trúc của Web Service Trong đó bao gồm các tầng [9]: Tầng vận chuyển với những công nghệ chuẩn là HTTP , SMTP và JMS Tầng giao thức tƣơng tác dịch vụ (Service Communication Protocol) với công nghệ chuẩn là SOAP.
SOAP là giao thức nằm giữa tầng vận chuyển và tầng mô tả thông tin về dịch vụ, SOAP cho phép ngƣời dùng triệu gọi một service từ xa thông qua một message XML. Tầng mô tả dịch vụ (Service Description) với công nghệ chuẩn là WSDL và XML.WSDL là mô ̣t ngôn ngƣ̃ mô tả giao tiế p và thƣ̣c thi dƣ̣a trên XML. Web service sƣ̉ du ̣ng ngôn ngƣ̃ WSDL để truyề n các tham số và các lo ại dữ liệu cho các thao tác, các chức năng mà web service cung cấ p .