Trong bài này, chúng ta sẽ cùng tìm hiểu về Web service là gì, các thành phần của một web service, các loại web service, so sánh SOAP với REST web service.
Đang xem: Restful web services là gì, tìm hiểu về web service cho người mới
Bài này khá nặng về lý thuyết, mình xin phép tổng hợp lại từ các tài liệu mình tham khảo được từ các trang khác cũng như kinh nghiệm thực tế của mình để giúp các bạn có cái nhìn đầy đủ nhất về web service.
Web service – Dịch vụ web là gì?
Web service (dịch vụ web) là tập hợp các giao thức và tiêu chuẩn mở được sử dụng để trao đổi dữ liệu giữa các ứng dụng hoặc giữa các hệ thống.
Các ứng dụng phần mềm được viết bằng các ngôn ngữ lập trình khác nhau hoặc chạy trên các nền tảng khác nhau, chúng có thể sử dụng các web service để trao đổi dữ liệu qua lại theo cách tương tự như liên lạc giữa các quá trình trên một máy tính.
Như vậy, các thành phần Server phi trạng thái ít phức tạp hơn để thiết kế, viết và phân bổ thông qua Server được cân bằng tải. Dịch vụ phi trạng thái không chỉ hoạt động tốt hơn, nó còn chuyển hầu hết vai trò duy trì trạng thái sang ứng dụng ở Client. Trong một dịch vụ mạng RESTful, Server chịu trách nhiệm đưa ra các phản hồi và cung cấp một cách thức cho phép Client duy trì trạng thái ứng dụng của chính nó.
Đưa ra cấu trúc thư mục giống các URI
REST đưa ra một cấu trúc để người dùng có thể truy cập vào tài nguyên của nó thông qua các URL, tài nguyên ở đây là tất cả những cái mà bạn có thể gọi tên được (Video, ảnh, báo cáo thời tiết,..) Bạn cần tạo ra các REST serivce để nó trả về cho người dùng các nguồn tài nguyên tương ứng.
Các địa chỉ REST service cần phải thật trực quan đến mức người dùng dễ đoán. Hãy nghĩ về một địa chỉ (URI) giống như một gợi ý rõ ràng, dễ đoán rằng nó đang trỏ tới cái gì và cung cấp tài nguyên gì. Tóm lại, cấu trúc của một URI nên được đơn giản, có thể dự đoán, và dễ hiểu.
Hãy xem một URL dưới đây, nó cung cấp danh sách bài viết của một ngày cụ thể, và nó dễ hiểu đối với người dùng.
Xem thêm: Stock Photo Là Gì ? Các Trang Web Stock Photo Miễn Phí
Giấu các đuôi tài liệu mở rộng của bản gốc trong máy chủ (.jsp, .php, .asp), nếu có, vì vậy bạn có thể giấu một số thứ mà không cần thay đổi địa chỉ Urls.Để mọi thứ là chữ thường.Thay thế các khoảng trống bằng gạch chân hoặc hoặc gạch nối (một trong hai loại).Tránh các chuỗi yêu cầu càng nhiều càng tốt.Thay vì sử dụng mã (404 Not Found) khi yêu cầu địa chỉ cho một phần đường dẫn, luôn luôn cung cấp một trang mặc định hoặc tài nguyên như một phản hồi.Truyền tải XML, JSON hoặc cả hai
Khi Client gửi một yêu cầu tới web service nó thường được truyền tải dưới dạng XML hoặc JSON và thông thường nhận về với hình thức tương tự.
Đôi khi Client cũng có thể chỉ định kiểu dữ liệu nhận về mà nó mong muốn (JSON, hoặc XML,..), các chỉ định này được gọi là các kiểu MINE, nó được gửi kèm trên phần HEADER của request.
Dưới đây là các kiểu MIME phổ biến thường sử dụng với REST service:
Extention | Content-Type |
.json | application/json |
.xml | application/xml |
Tham khảo thêm các MIME type khác: https://www.freeformatter.com/mime-types-list.html
Ví dụ: Client gửi một yêu cầu để lấy thông tin danh sách bài viết, và yêu cầu dữ liệu trả về là định dạng XML.
GET https://gocnhintangphat.com/postsauthority: gocnhintangphat.comAccept: application/xml;q=0.9Và dữ liệu nhận được:
WS-Security : SOAP không chỉ hỗ trợ SSL (giống như REST) mà còn hỗ trợ WS-Security, bổ sung thêm một số tính năng enterprise security. Hỗ trợ nhận dạng thông qua các trung gian, không chỉ là point-to-point như SSL. Nó được dùng khi muốn xây dựng những web service đảm bảo và tin cậy. Web Service Security đảm bảo cho tính an toàn, sự toàn vẹn thông điệp và tính tin cậy của thông điệp.WS-AtomicTransaction : Khi muốn có các giao dịch ACID qua một dịch vụ, bạn sẽ phải cần SOAP. Mặc dù REST có hỗ trợ các transactions, nhưng nó không toàn diện và cũng không phù hợp với ACID. REST bị hạn chế bởi HTTP nên không thể cung cấp cam kết hai pha trên các tài nguyên giao dịch phân tán, nhưng SOAP lại có thể àm được điều này. Thật may mắn các giao dịch ACID gần như không có ý nghĩa nhiều đối với các dịch vụ internet thông thường. Nhưng đôi khi các ứng dụng doanh nghiệp lại cần mức độ tin cậy giao dịch này.WS-ReliableMessaging : REST không có hệ thống báo lỗi chuẩn và mong muốn khách hàng giải quyết các lỗi communicate bằng cách retry và … retry … SOAP đã thành công trong việc xử lý những tình huống này và cung cấp end-to-end một cách tin cậy thông qua các trung gian SOAP
SOAP rõ ràng là hữu ích và quan trọng. Ví dụ, Nếu bạn viết một ứng dụng để giao tiếp với ngân hàng chắc chắn bạn sẽ cần phải sử dụng SOAP. Tất cả ba tính năng trên là bắt buộc đối với các giao dịch ngân hàng. Ví dụ: nếu tôi chuyển tiền từ tài khoản này sang tài khoản khác, tôi cần phải chắc chắn rằng nó đã hoàn tất. Việc cứ cố gắng retry thực sự là quá kinh dị nếu giao dịch thành công lần đầu tiên nhưng thông báo tôi nhận được lại là thất bại.
Xem thêm: Faq 7C: Xin Zulassung Là Gì ? Zulassung Là Gì: Kinh Nghiệm Và Cách Xin Zu Ở Đức
Bài viết khá dài và nặng về lý thuyết, có thể các bạn chưa hiểu được khi lần đầu tiên tìm hiểu về web service. Trong các bài viết tiếp theo, chúng ta sẽ cùng tìm hiểu cách xây dựng về SOAP / RESTful web service và cách sử dụng nó, khi đó các bạn sẽ hiểu rõ hơn về các vấn đề đã được trình bày trong bài viết này.