1.4. Cơ sở lý thuyết và công nghệ
1.4.3 Công nghệ dịch vụ Web Restful
REST (Representational State Transfer) là một kiểu kiến trúc được định nghĩa bởi Roy Fielding. Mục đính của REST là thiết kế các ứng dụng mạng phân tán sử dụng HTTP như là một giao thức tầng ứng dụng và nó là một mô hình kiến trúc thực sự cho web. Nó định nghĩa các quy tắc kiến trúc để bạn thiết kế Web services chú trọng vào tài nguyên hệ thống, bao gồm các trạng thái tài nguyên được định dạng như thế nào và được chuyển tải qua HTTP thông qua số lượng lớn người dùng và được viết bởi những ngôn ngữ khác nhau [8]. Nếu tính theo số dịch vụ mạng sử dụng, REST đã nổi lên trong vài năm qua như là một mô hình thiết kế dịch vụ chiếm ưu thế. Trong thực tế, REST đã có những ảnh hưởng lớn và gần như thay thế SOAP và WSDL vì nó đơn giản và dễ sử dụng hơn rất nhiều.
1.4.3.2 Nguyên tắc của REST
Như một hệ quả tất yếu của quá trình phức tạp ngày càng lớn của các dịch vụ web lớn nên RESTful đã được đưa ra như là một giải pháp để thay thế việc thực hiện triệu gọi từ xa (RPC) thông qua web. Web dựa vào tài nguyên, nhưng các dịch vụ web lớn lại không dựa vào tài nguyên. Web dựa vào URI và liên kết nhưng các dịch vụ web lớn lại không dựa vào chúng. Web dựa vào HTTP và các tính năng của nó, nhưng các dịch vụ web hầu như không dựa vào bất kỳ tính năng nào của HTTP. Vấn đề này không phải là các dịch vụ web lớn không nhận ra mà nó cảm thấy không nhận được lợi ích gì từ dịch vụ web hướng tài nguyên. Chúng không có khả năng đánh địa chỉ, không cache, kết nối không tốt. Chúng cũng không cần giao diện đồng nhất. Chúng không được rõ ràng, hiểu được một vấn đề không giúp mình hiểu được vấn đề
42
tiếp theo, trong thực tế chúng cũng có vấn đề khi tương tác với nhiều khách hàng cùng một lúc.
REST là một kiểu kiến trúc cho hệ thống phân tán như World Wide Web. Để thực thi kiến trúc RESTful ta cần phải tuân thủ theo hướng dẫn của ROA, kiến trúc hướng tài nguyên, trong tài liệu này sẽ có các quy tắc cho phép ta thiết kế dịch vụ RESTful.
Kiến trúc REST cũng phải dựa vào các nguyên tắc [7, 12, 13] như mô tả trong các tài liệu, đó là Tài Nguyên(Resources), Khả năng đánh địa chỉ(Addressability),Phi trạng thái(statelessness),Kết nối(Connectedness),Giao diện đồng nhất(Uniform Interface) và Khả năng lưu cache(Cacheability). Chi tiết các nguyên tắc trong kiến trúc như sau:
Hệ thống hoạt động theo mô hình client-server: trong đó server là tập hợp các service nhỏ lắng nghe các request từ client. Với từng request khác nhau thì có thể một hoặc nhiều service xử lý. Ứng với hệ thống đặt vé xe khách đi ngay là ứng dụng hành khách, ứng dụng nhà xe gửi request tới server để sử lý. Vậy nên mô hình này tương ứng và phù hợp với hệ thống triển khai.
Stateless (phi trạng thái). Đơn giản server và client không lưu trạng thái của nhau -> mỗi request lên server thì client phải đóng gói thông tin đầy đủ để thằng server hiểu được. Điều này giúp hệ thống của bạn dễ phát triển,bảo trì, mở rộng vì không cần tốn công CRUD trạng thái của client . Hệ thống phát triển theo hướng này có ưu điểm nhưng cũng có khuyết điểm là gia tăng lượng thông tin cần truyền tải giữa client và server. Hệ thống tra cứu đặt vé xe khách đi ngay được xây dựng và đưa vào hoạt động với lượng request và reponse rất lớn từ hành khách và nhà xe gửi lên do đó dựa trên cấu trúc này thì hệ thống dễ dàng mở rộng, bảo trì khi có lưu lượng, và số lượng request đột biến.
43
Khả năng caching : Các response có thể lấy ra từ cache. Bằng cách cache các response , server giảm tải việc xử lý request, còn client cũng nhận được thông tin nhanh hơn. Ở đây ta đặt 1 thằng cache vào giữa : client- cache- server. Với khả năng cache này thì rất tiện lợi, và giảm tải cho hệ thống mới này rất nhiều vì quy trình hiện tại hệ thống tra cứu đặt vé xe khách đi ngay thực hiện theo quy trình là trên App hành khách tiến hành chọn điểm đi + điểm đến, chọn số vé gửi request tới Server API từ server này gửi tới App hành khách, và sau đó App Driver tiến hành reponse lại, do đó nếu có khả năng này sẽ rất tiện lời, hỗ trợ hệ thống sử lý nhanh chóng.
Chuẩn hóa các interface(sử dụng các phương thức HTTP rõ ràng):
Đây là một trong những đặc tính quan trọng của hệ thống REST. Bằng cách tạo ra các quy ước chuẩn để giao tiếp giữa các thành phần trong hệ thống, bạn đã đơn giản hóa việc client có thể tương tác với server. Các quy ước này áp dụng cho toàn bộ các dịch vụ giúp cho người sử dụng hệ thống của bạn dễ dụng hơn. Dễ hiểu hơn trên hệ thống bạn đặt ra 1 chuẩn API để người dùng dù là mobile, web đều có thể kết nối vào được. Hệ thống REST có yếu điểm ở đây vì khi chuẩn hóa rồi ta không thế tối ưu từng kết nối.
Một đặc tính quan trọng của dịch Web service RESTful là sử dụng một cách rõ ràng các phương thức HTTP theo cách một giao thức được xác định bởi RFC 2616. Ví dụ HTTP GET được xác định như là một phương thức sinh ra số liệu được sử dụng có chủ đích bởi các ứng dụng người dùng để thu thập tài nguyên, dữ liệu từ một máy chủ, hoặc thực thi một truy vấn mà máy chủ sẽ tìm kiếm và phản hồi cùng với một gói thông tin tương thích.
REST yêu cầu các nhà phát triển sử dụng phương thức HTTP một cách rõ ràng theo cách tương thích với giao thức chuẩn. Nguyên lý thiết kế REST cơ bản này thiết lập một ánh xạ 1-1 giữa các hành động tạo, đọc, cập nhật và
44
xoá (CRUD) các quá trình vận hành và các phương thức HTTP. Theo cách ánh xạ này thì:
Để tạo một tài nguyên trên máy chủ, bạn cần sử dụng phương thức POST.
Để truy xuất một tài nguyên, sử dụng GET.
Để thay đổi trạng thái một tài nguyên hoặc để cập nhật nó, sử dụng PUT.
Để huỷ bỏ hoặc xoá một tài nguyên, sử dụng DELETE.
Hình 1. 12 Các phương thức REST API
Phân lớp hệ thống : trong hệ thống REST bạn chia tách các thành phần hệ thống theo từng lớp, mỗi lớp chỉ sử dụng lớp ở dưới nó và giao tiếp với lớp ở ngay trên nó mà thôi. Điều này giúp bạn giảm độ phức tạp của hệ thống,giúp các thành phần tách biệt nhau từ đó dễ dàng mở rộng từng thành phần[1].
Cụ thể mô hình tổng thể kiến trúc Web Restful:
45
Hình 1. 13 Mô hình tổng thể kiến trúc Web RESTful
Kết luận dựa trên kiến trúc, phương pháp tiếp cận triển khai ứng dụng theo mô hình SOA và công nghệ Web Restful thì tác giả quyết định lựa chọn và sử dụng kiến trúc và công nghệ để xây dựng và tích hợp các dịch vụ vào trong hệ thống.
46
CHƯƠNG 2. ĐỀ XUẤT MÔ HÌNH TÍCH HỢP DỊCH VỤ ĐẶT VÉ ĐI NGAY CHO HỆ THỐNG TRA CỨU ĐẶT VÉ XE KHÁCH ĐƯỜNG
DÀI TRỰC TUYẾN HLINKBUS TẠI VIỆT NAM
Dựa trên cơ sở nền tảng lý thuyết kiến trúc hướng dịch vụ SOA và công nghệ dịch vụ Web Restful đã được tìm hiểu trong chương 1, tác giả đề xuất mô hình dịch vụ tra cứu đặt vé đi ngay dành cho hành khách bắt xe dọc đường. Từ đó xây dựng xây dựng dịch vụ tra cứu đặt vé đi ngay nhằm mục đích hỗ trợ, phục vụ, tiếc kiêm thời gian đón xe, đặt vé cho hành khách có nhu cầu bắt xe.