Bạn hiểu gì về Web services ?

LAMP Jun 09, 2021

Nhắc đến website thì hẳn là ai trong chúng ta cũng biết rồi. Trang blog bạn đang đọc cũng chính là một ví dụ điển hình cho website. Còn web service thì sao ? Đây là một khái niệm hoàn toàn mới đối với nhiều người nếu RESTful không trở thành một keyword phổ biến.

Có bao giờ bạn tự hỏi làm sao để các ứng dụng desktop có thể khai thác dữ liệu trực tiếp từ các website được viết bằng nhiều ngôn ngữ khác nhau ? Hay làm sao để các trang website khác nhau có thể trao đổi dữ liệu được cho nhau ? Từ đó nảy sinh một yêu cầu là cần có một tài nguyên thống nhất để tất cả mọi hệ thống có thể sử dụng ở mọi lúc mọi nơi. Và web service ra đời đã giải quyết được mọi vấn đề trên. Web service ra đời đã mở ra một hướng mới cho việc phát triển các ứng dụng trên Internet giải quyết vấn đề chuyển đổi dữ liệu trong quy trình thương mại của các doanh nghiệp.

Vậy web service là gì ?

Web service là cách giao tiếp giữa hai hoặc nhiều ứng dụng được phát triển cho các nền tảng khác nhau. Hiểu đơn giản thì nó cũng giống như một ứng dụng web hoạt động tương tự như website, tức là để truy cập vào web service bạn cũng có thể mở trình duyệt lên, gõ vào thanh địa chỉ url của web service đó. Tuy nhiên khác với website – web để cho người đọc còn web service sinh ra để cho các cỗ máy hoặc các ứng dụng khác đọc.

Các service này độc lập với các trình duyệt và hệ điều hành do đó dễ dàng giao tiếp và nâng cao hiệu suất để phù hợp với nhiều người dùng. Service này có thể như một hàm, một bộ sưu tập các tiêu chuẩn hoặc các giao thức được triển khai trên server. Hoặc có thể hiểu nó như là một cách thức giao tiếp giữa một client và server hoặc thông tin liên lạc giữa hai thiết bị thông qua kết nối mạng.

Web service hoạt động một cách độc lập không phụ thuộc bất kỳ ngôn ngữ nào. Các ứng dụng PHP, Java, .Net… có thể giao tiếp với các ứng dụng khác thông qua web service.

Tại sao lại cần đến webservice?

Có một câu chuyện mình lượm được trên mạng kể về 2 nhân vật Quang và Bình chơi thân với nhau từ hồi nhỏ. Lớn lên, Quang mở một công ty giới thiệu việc làm cho nhân sự IT, Bình thì mở một công ty đào tạo nhân sự IT. Một hôm, Quang nói với Bình "mày ơi, công ty tao có mấy job PHP lương cao lắm, mày đặt quảng cáo cho tao trong mấy khóa học về PHP của máy nhé", Bình nghe vậy liền đồng ý luôn, vì tốt cho cả hai mà. Nhưng vấn đề là website tuyển dụng của Quang và website đào tạo của Bình chạy ở trên 2 con server khác nhau, không có một “cây cầu” nào kết nối giữa hai website này cả.

Quang nghĩ đến cách sẽ chèn “cứng” quảng cáo của mình trong các khóa học của Bình, nhưng Bình gạt đi. Vì chèn cứng như vậy, lỡ job PHP của Quang hết hạn tuyển dụng thì sao, lại gỡ xuống à? Mà một job thì không sao, chứ 100 job thì chỉ có chèn lên với gỡ xuống cũng hết ngày. Bình bèn nghĩ ra cách này và bảo Quang, “bên website tuyển dụng của mày, mày tạo cho tao một trang riêng chỉ hiển thị các job PHP mà mày muốn quảng cáo, bên website của tao sẽ đọc nội dung trang web này rồi hiển thị lên“.

Vậy là Quang tạo một trang web riêng cho Bình ở địa chỉ http://webtuyendungit.com/job-php, khi truy cập vào đây sẽ chỉ nhìn thấy nội dung khó hiểu như sau

{
    "jobs": [
        {
            "url": "http://webtuyendungit.com/tuyen-lap-trinh-vien-php-luong-1000-dollar",
            "title": "Tuyển dụng lập trình viên PHP lương 1000 dollar"
        },
        {
            "url": "http://webtuyendungit.com/tuyen-lap-trinh-vien-php-khong-kinh-nghiem",
            "title": "Tuyển dụng lập trình viên PHP không kinh nghiệm"
        },
    ]
}

Sau đó, Bình sử dụng CURL để lấy nội dung trên website của Quang, phân tích thành dữ liệu và hiển thị ngon lành lên website đào tạo của mình. Giờ đây Quang muốn thay đổi nội dung quảng cáo thì chỉ cần thay đổi nội dung của trang web trên, vô cùng tiện lợi và chủ động.

Trên chính là một ví dụ điển của web service. Khi các ứng dụng không liên quan tới nhau, nhưng vẫn muốn trao đổi dữ liệu với nhau thì người ta sẽ nghĩ ngay tới việc sử dụng web service. Một web service sẽ trả về dữ liệu theo một cấu trúc nào đó (XML hoặc JSON,…) để các ứng dụng khác có thể đọc, phân tích và sử dụng được. Như ví dụ trên thì http://webtuyendungit.com/job-php chính là endpoint của một web service.

Hiện nay, ngày càng có nhiều hệ thống chạy đa nền tảng như Facebook, Youtube,.. ra đời. Đặc điểm của các hệ thống chạy đa nền tảng này là luôn yêu cầu khả năng đồng bộ dữ liệu. Ví dụ bạn like một status facebook trên web, thì trên app cũng phải được thể hiện, bạn đăng một bức ảnh lên facebook từ mobile, thì trên web cũng phải nhìn thấy. Để làm được điều này, người ta sẽ tạo ra một con web service, để khi bạn đăng ảnh, like hay thực hiện bất kỳ hành động gì đều phải gọi tới web service này cho dù hành động đó được thực hiện từ web hay mobile. Mặt khác, ứng dụng web và mobile sẽ kết nối vào chung web service để đọc dữ liệu, vì vậy sẽ đảm bảo được dữ liệu là giống nhau cho dù trên các nền tảng khác nhau. Vì vậy, web service ra đời như một sự hiển nhiên.

Tóm lại web service ra đời nhằm giải quyết một vấn đề sau

  1. Giúp các hệ thống không liên quan tới nhau vẫn có thể giao tiếp được với nhau
  2. Đồng bộ dữ liệu giữa các nền tảng
Web service nằm giữa

Các loại webservice

Dịch vụ web SOAP

Simple Object Access Protocol là một tiêu chuẩn mở, giao thức XML-based, trao đổi thông tin bằng cách truyền message giữa web service và client. Các thông điệp SOAP được viết bằng XML vì vậy nó trở nên độc lập với nền tảng và nó cung cấp một phương tiện hiệu quả để chuyển dữ liệu. Client và server bị ràng buộc với nhau thông qua Service Description Language (WSDL). Các dịch vụ web SOAP rất khó duy trì, bất cứ khi nào WSDL thay đổi, các nhà phát triển cần phải tạo lại từ đầu. Ta cần hiểu về WSDL dựa trên XML và client để hiểu webservice, vì vậy nó khó để học.

RESTful web service

REST là viết tắt của REpresentational State Transfer (dịch nôm na là chuyển trạng thái đại diện) là một kiểu kiến trúc lập trình. Nó định nghĩa các quy tắc để thiết kế các web service chú trọng vào tài nguyên hệ thống. Trong kiến trúc REST mọi thứ đều được coi là tài nguyên. Nó có thể ở dạng hiển thị, chẳng hạn như XML, JSON hoặc HTML. Trong RESTful web services, trạng thái của tài nguyên quan trọng hơn hành động được thực hiện đối với tài nguyên.

Ưu điểm của các dịch vụ web RESTful như sau:

  • Các RESTful web service nhanh khi chúng tiêu thụ ít tài nguyên và băng thông hơn. Nó chỉ là dựa trên HTTP, vì vậy có ít chi phí hơn.
  • Nó có thể được viết và thực hiện trên bất kỳ nền tảng nào.
  • Điều quan trọng nhất là nó cho phép các định dạng như HTML, XML, văn bản thuần túy và JSON.

Vậy REST không có 'ful' với có 'ful' khác gì nhau ?

Hiểu đơn giản là những ứng dụng nào tuân thủ toàn bộ theo nguyên lý REST thì gọi là RESTful, còn không thì chưa 'ful' thôi. Trong bài viết sau mình sẽ nói cụ thể hơn về RESTful.

Tại sao sử dụng web service?

Dưới đây là những lợi ích của việc sử dụng dịch vụ web.

Tính khả dụng

Nhiều ứng dụng đầu tư thời gian cho việc phát triển các hàm phức tạp mà đã có sẵn trong các ứng dụng khác. Thay vì phát triển lại nó, các web service cho phép các nhà phát triển khám phá các service như vậy trên Web. Nó cũng thúc đẩy phát triển logic tùy chỉnh phía client, tái sử dụng các web service và tiết kiệm thời gian.

Tái sử dụng ứng dụng đã phát triển

Các công nghệ và thị trường đang chuyển động nhanh yêu cầu các nhà phát triển phải tìm cách thích ứng với các yêu cầu từ khách hàng. Tái phát triển một ứng dụng là một trong những cách rất phổ biến bằng cách sử dụng một nền tảng mới để hỗ trợ các tính năng mới một cách dễ dàng. Hiện nay, thay vì phát triển một ứng dụng hoàn chỉnh từ đầu, các nhà phát triển có thể thêm các chức năng cho bất kỳ nền tảng nào họ muốn, sử dụng lại các module đã có bằng cách dùng web services.

Các module được ghép nối lỏng lẻo

Mỗi service được phát triển hoàn toàn độc lập với bất kỳ service nào khác, hỗ trợ dễ dàng sửa đổi chúng mà không ảnh hưởng đến một phần khác của ứng dụng.

Dễ triển khai

Các web service được triển khai trên các máy chủ để tạo thuận lợi cho việc sử dụng thông qua Internet. Web service có thể được triển khai trên tường lửa đến máy chủ thông qua Internet một cách dễ dàng vì chúng có thể được triển khai trong các máy chủ cục bộ.

Trên đây là vài điều sơ lược về web service mà mình tìm hiểu được. Mong mọi người đóng góp ý kiến để bài viết của mình hoàn thiện hơn nhé! Cảm ơn mọi người đã giành thời gian đọc đến đây ạ ❤️❤️❤️

Miichisoft mãi yêu 🥰

Tài liệu tham khảo

Web Services là gì? Tìm hiểu về Web Service cho người mới
Tech.vccloud.vn là trang thông tin dành cho dân công nghệ của Vccloud.vn luôn cập nhật 24/7 những tin tức và kiến thức mới nhất trên toàn thế giới.
RESTful API là gì? Cùng tìm hiểu về RESTful API

Tags

Great! You've successfully subscribed.
Great! Next, complete checkout for full access.
Welcome back! You've successfully signed in.
Success! Your account is fully activated, you now have access to all content.