Web services là một khái niệm quan trọng trong ngành công nghiệp phần mềm, tuy nhiên nhiều người còn chưa thực sự hiểu rõ về web service. Bài viết này sẽ giải đáp các thắc mắc Web service là gì, nó bao gồm những gì? Tại sao web service quan trọng và những điều bạn cần biết về web service.
Web Service là gì?
1. Khái niệm Web Service là gì?
Một cách ngắn gọn thì web services (hay “dịch vụ web”) là một mô-đun phần mềm được thiết kế để thực hiện một nhóm các tác vụ nhất định. Các web services có thể được truy cập và sử dụng thông qua mạng internet dưới dạng dịch vụ. Khi đó, web service sẽ cung cấp các chức năng của nó cho máy khách để người dùng đạt được các mục tiêu sử dụng nhất định.
Trên mạng và trong các tài liệu chuyên ngành có rất nhiều định nghĩa khác nhau về web services. Tuy nhiên ta có thể hiểu, để một dịch vụ được coi là web service thì cần thỏa mãn các tiêu chí sau:
- Có sẵn trên internet hoặc mạng nội bộ,
- Sử dụng hệ thống XML messaging tiêu chuẩn,
- Không bị trói buộc vào một hệ điều hành hay ngôn ngữ lập trình nào,
- Có thể tự diễn tả chính nó thông qua một cấu trúc XML đơn giản,
- Có thể được tìm kiếm bằng những phương thức đơn giản (simple mechanism).
2. Web service hoạt động như thế nào?
Một web service cho phép giao tiếp giữa các ứng dụng khác nhau bằng cách sử dụng các tiêu chuẩn mở như HTML, XML, WSDL và SOAP. Thông thường, một dịch vụ web cơ bản sẽ sử dụng:
- XML để gắn thẻ dữ liệu
- SOAP để chuyển tin nhắn
- WSDL để mô tả sự sẵn có của dịch vụ.
Bạn có thể xây dựng một dịch vụ web Java-based trên Solaris, vốn có thể truy cập được từ Visual Basic chạy trên Windows.
Bạn cũng có thể sử dụng C # để xây dựng các dịch vụ web trên Windows có thể được gọi từ ứng dụng web của bạn dựa trên JavaServer Pages (JSP) và chạy trên Linux.
Ví dụ web service đơn giản
Hãy xem xét một hệ thống quản lý tài khoản và xử lý đơn hàng đơn giản. Nhân viên kế toán sử dụng một ứng dụng khách được xây dựng bằng Visual Basic hoặc JSP để tạo tài khoản mới và nhập đơn đặt hàng mới của khách hàng.
Logic xử lý cho hệ thống này được viết bằng Java và nằm trên máy Solaris, cũng tương tác với cơ sở dữ liệu để lưu trữ thông tin.
Các bước để thực hiện thao tác này như sau:
- Chương trình máy khách (client program) đóng gói thông tin đăng ký tài khoản thành một SOAP message.
- SOAP message này được gửi đến dịch vụ web dưới dạng POST HTTP request.
- Dịch vụ web giải nén yêu cầu SOAP và chuyển đổi nó thành một lệnh mà ứng dụng có thể hiểu được.
- Ứng dụng xử lý thông tin theo yêu cầu và phản hồi bằng số tài khoản duy nhất mới cho khách hàng đó.
- Tiếp theo, dịch vụ web đóng gói phản hồi vào một SOAP message khác, nó sẽ gửi lại cho chương trình máy khách để đáp ứng HTTP request của nó.
- Chương trình máy khách giải nén thông báo SOAP để có được kết quả của quá trình đăng ký tài khoản.
3. 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.
Khả năng tương tác
Web service cho phép các ứng dụng khác nhau giao tiếp với nhau và chia sẻ dữ liệu, dịch vụ với nhau. Các ứng dụng khác cũng có thể sử dụng các dịch vụ web. Ví dụ, một ứng dụng VB hoặc .NET có thể giao tiếp với các dịch vụ web Java và ngược lại. Các dịch vụ web được sử dụng để làm cho nền tảng ứng dụng và công nghệ trở nên độc lập.
Giao thức chuẩn hóa
Web service sử dụng giao thức chuẩn hóa để giao tiếp. Tất cả bốn lớp (Truyền tải dịch vụ, Nhắn tin XML, Mô tả dịch vụ và các layer Khám phá dịch vụ) đều sử dụng các giao thức tách biệt trong stack giao thức của web services. Việc chuẩn hóa stack giao thức này mang lại cho doanh nghiệp nhiều lợi thế như có nhiều lựa chọn, giảm chi phí do cạnh tranh và tăng chất lượng.
Truyền thông chi phí thấp
Các dịch vụ web sử dụng SOAP qua giao thức HTTP, vì vậy bạn hoàn toàn có thể triển khai các dịch vụ web với một đường truyền internet khiêm tốn. Giải pháp này ít tốn kém hơn nhiều so với các giải pháp độc quyền như EDI / B2B. Bên cạnh SOAP qua HTTP, các dịch vụ web cũng có thể được triển khai trên các cơ chế truyền tải đáng tin cậy khác như FTP.
4. Lợi ích của việc sử dụng Web Service:
Tích hợp và tương tác giữa các ứng dụng: Web Service cung cấp cho các ứng dụng một cách để tương tác và trao đổi dữ liệu với nhau. Điều này giúp cho các ứng dụng có thể tích hợp với nhau một cách dễ dàng và hiệu quả.
Tính đa nền tảng: Với Web Service, các ứng dụng có thể được phát triển trên nhiều nền tảng khác nhau và có thể tương tác với nhau một cách dễ dàng.
Độ tin cậy và an toàn: Web Service sử dụng các giao thức bảo mật để đảm bảo tính bảo mật và độ tin cậy cho dữ liệu được truyền tải giữa các ứng dụng.
Tiết kiệm thời gian và chi phí: Với việc sử dụng Web Service, các ứng dụng không cần phải được phát triển lại để tích hợp với nhau, điều này giúp tiết kiệm thời gian và chi phí cho các doanh nghiệp.
Kiến trúc của Web Service là gì?
Có hai cách để phân tích kiến trúc của một dịch vụ web:
- Dựa vào vai trò của từng thành phần trong web service.
- Dựa vào các protocol stacks của web service.
1. Vai trò dịch vụ web
Có ba vai trò chính trong kiến trúc dịch vụ web:
- Service Provider: Đây là nhà cung cấp dịch vụ web. Nhà cung cấp dịch vụ triển khai dịch vụ và cung cấp dịch vụ này trên Internet.
- Service Requestor: Đây là bất kỳ người tiêu dùng của dịch vụ web. Người yêu cầu sử dụng một dịch vụ web bằng cách mở kết nối mạng và gửi yêu cầu XML.
- Service Registry: Đây là một thư mục logic tập trung của dịch vụ web. Registry cung cấp một không gian tập trung, nơi các nhà phát triển có thể xuất bản các dịch vụ mới hoặc tìm các dịch vụ hiện có. Do đó, nó có vai trò như một nhà thanh toán bù trừ tập trung cho các công ty và dịch vụ của họ.
2. Protocol Stack trong dịch vụ web
Cách thứ hai để kiểm tra kiến trúc dịch vụ web là dựa vào protocol stack của dịch vụ web. Các stack vẫn đang được phát triển, nhưng hiện tại có bốn lớp chính:
- Service Transport: Lớp này chịu trách nhiệm vận chuyển tin nhắn giữa các ứng dụng. Hiện tại, lớp này bao gồm Giao thức truyền tải văn bản Hyper (HTTP), Giao thức chuyển thư đơn giản (SMTP), Giao thức truyền tệp (FTP) và các giao thức mới hơn như Giao thức trao đổi mở rộng khối (BEEP).
- XML messaging: Lớp này chịu trách nhiệm mã hóa các thông điệp theo định dạng XML phổ biến để có thể hiểu các thông điệp ở hai đầu. Hiện tại, lớp này bao gồm XML-RPC và SOAP.
- Service Description: Lớp này chịu trách nhiệm mô tả giao diện công cộng cho một dịch vụ web cụ thể. Hiện tại, mô tả dịch vụ được xử lý thông qua Ngôn ngữ mô tả dịch vụ web (WSDL).
- Service Discovery: Lớp này chịu trách nhiệm tập trung các dịch vụ vào một sổ đăng ký chung và cung cấp chức năng xuất bản / tìm kiếm dễ dàng. Hiện tại, khám phá dịch vụ được xử lý thông qua Mô tả chung, Khám phá và Tích hợp (UDDI).
Khi các dịch vụ web phát triển, các lớp bổ sung có thể được thêm vào và các công nghệ bổ sung có thể được thêm vào mỗi lớp.
3. Các thành phần của Web Service là gì?
Trong vài năm qua, ba công nghệ chính đã nổi lên như các tiêu chuẩn trên toàn thế giới tạo nên cốt lõi của công nghệ web service ngày nay. Chúng bao gồm:
- SOAP (Simple Object Access Protocol): SOAP là một giao thức dựa trên XML để trao đổi thông tin giữa các máy tính. Nó cũng được sử dụng để gửi thông điệp giữa các ứng dụng với nhau. SOAP được thiết kế để có thể giao tiếp thông qua internet, và nó đơn giản, dễ mở rộng.
- WSDL (Web Services Description Language): Được thiết kế bởi Microsoft và IBM, WSDL là một ngôn ngữ chuẩn chung dựa trên XML để mô tả các dịch vụ web và cách truy cập chúng.
- UDDI (Universal Description, Discovery & Integration): UDDI là một tiêu chuẩn dựa trên XML để mô tả, xuất bản và tìm kiếm các dịch vụ web. UDDI là một open framework và là nền tảng độc lập. UDDI có thể giao tiếp qua SOAP, CORBA và Giao thức RMI Java. UDDI sử dụng WSDL để mô tả giao diện cho các dịch vụ web.
Vấn đề bảo mật của Web Service
Bảo mật là rất quan trọng đối với các dịch vụ web. Tuy nhiên, cả các thông số XML-RPC và SOAP đều không thực hiện bất kỳ yêu cầu xác thực hoặc bảo mật rõ ràng nào.
Có ba vấn đề bảo mật cụ thể với các dịch vụ web:
1. Confidentiality
Nếu client gửi yêu cầu XML đến máy chủ, chúng ta có thể đảm bảo rằng thông tin liên lạc được giữ bí mật không? Câu trả lời nằm ở đây:
- XML-RPC và SOAP chạy chủ yếu trên HTTP.
- HTTP có hỗ trợ SSL (Secure Socket Layer).
- Giao tiếp có thể được mã hóa thông qua SSL – một công nghệ đã được chứng minh và triển khai rộng rãi.
Một dịch vụ web có thể bao gồm một chuỗi các ứng dụng. Ví dụ: một dịch vụ lớn có thể liên kết các dịch vụ của ba ứng dụng khác. Trong trường hợp này, SSL là không đủ; các thông điệp cần được mã hóa tại mỗi nút dọc theo đường dẫn dịch vụ và mỗi nút đại diện cho một liên kết yếu tiềm năng trong chuỗi.
Hiện tại, không có giải pháp nào được thống nhất cho vấn đề này, nhưng một giải pháp đầy hứa hẹn là Tiêu chuẩn mã hóa XML của W3C. Tiêu chuẩn này cung cấp một khung để mã hóa và giải mã toàn bộ tài liệu XML hoặc chỉ một phần của tài liệu XML. Bạn có thể kiểm tra nó tại www.w3.org/Encoding
2. Authentication
Nếu một client kết nối với một dịch vụ web, làm thế nào để chúng ta xác định người dùng? Người dùng có được phép sử dụng dịch vụ không? Dưới đây là một vài phương án xác thực, tuy nhiên không có một quy chuẩn nào được cho là hoàn hảo:
- HTTP bao gồm hỗ trợ tích hợp cho xác thực Basic and Digest. Do đó, các dịch vụ có thể được bảo vệ theo cách tương tự như các tài liệu HTML hiện đang được bảo vệ.
- Chữ ký số SOAP (SOAP-DSIG) tận dụng mã khóa công khai (public key) để ký điện tử các thông điệp SOAP. Nó cho phép máy khách hoặc máy chủ xác nhận danh tính của bên kia. Tham khảo tại www.w3.org/TR/SOAP-dsig.
- Tổ chức OASIS (Organization for the Advancement of Structured Information Standards) đang phát triển với Ngôn ngữ markup xác thực bảo mật SAML (Security Assertion Markup Language).
3. Network Security
Hiện tại không có câu trả lời tuyệt đối cho vấn đề này, và nó đã là chủ đề của nhiều cuộc tranh luận. Hiện tại, nếu bạn thực sự có ý định lọc ra các thông điệp SOAP hoặc XML-RPC, có một cách là lọc ra tất cả các POST HTTP request đặt loại nội dung của chúng thành text/xml.
Một cách khác là lọc thuộc tính tiêu đề HTTP SOAPAction. Các nhà cung cấp tường lửa hiện đang phát triển các công cụ được thiết kế rõ ràng để lọc lưu lượng dịch vụ web.
Trên đây là các thông tin và kiến thức giúp bạn hiểu web service là gì? Hy vọng nội dung bài viết có ích với bạn
Tìm kiếm liên quan
- web services là gì?
- Webservice Viettel la gì
- Web Service la gì lấy ví dụ về Web Service
- Web service và API
- SOAP service
- RESTful web service
- Web service architecture
- Các loại Web service
Nội dung liên quan
- Core value là gì và tầm quan trọng của nó
- Các loại hình giao dịch của E Commerce hiện nay
- Marketplace Facebook là gì? Thời cơ phát triển Marketplace Facebook
Valuable information. Lucky me I found your site by accident, and I’m shocked why this accident did not happened earlier! I bookmarked it.
Yeah bookmaking this wasn’t a high risk determination great post! .
You made some decent points there. I looked on the internet for the subject and found most guys will agree with your site.
Nice read, I just passed this onto a friend who was doing a little research on that. And he just bought me lunch because I found it for him smile So let me rephrase that: Thanks for lunch!
Very interesting points you have noted, regards for posting. “You bluffed me I don’t like it when people bluff me. It makes me question my perception of reality.” by Andrew Schneider.
I loved up to you’ll obtain carried out right here. The sketch is tasteful, your authored subject matter stylish. nevertheless, you command get got an edginess over that you wish be delivering the following. sick surely come further formerly again as precisely the similar nearly very often inside of case you defend this increase.
I have read several good stuff here. Definitely worth bookmarking for revisiting. I surprise how much attempt you place to make such a fantastic informative website.
You have brought up a very great details , regards for the post.
Hmm is anyone else having problems with the pictures on this blog loading? I’m trying to determine if its a problem on my end or if it’s the blog. Any feedback would be greatly appreciated.
I truly appreciate this post. I have been looking everywhere for this! Thank goodness I found it on Bing. You’ve made my day! Thank you again!
You made some good points there. I did a search on the subject matter and found most people will approve with your website.
I have been surfing on-line greater than 3 hours lately, but I never discovered any fascinating article like yours. It¦s beautiful price sufficient for me. In my opinion, if all website owners and bloggers made good content as you did, the web will likely be much more useful than ever before.