https://niithanoi.edu.vn/hoc-java-web-can-hoc-nhung-gi.htmlChắc các bạn đã nghe nhiều đến Web Service hay là Java Web Services rồi nhưng vẫn còn khá mơ hồ phải không?
Hôm nay mình sẽ giúp các bạn hiểu rõ hơn về bản chất Web Service, các loại Web Service và tại sao lập trình viên Java nên sử dụng Spring MVC để lập trình Web Services.
Hiện nay, các ứng dụng kinh doanh hiện đại sử dụng nhiều nền tảng lập trình để phát triển các ứng dụng dựa trên web.
Một số ứng dụng có thể được phát triển bằng Java, một số ứng dụng khác được phát triển với công nghệ .Net, trong khi một số ứng dụng khác trong Angular JS, Node.js, v.v.
Thỉnh thoảng, các ứng dụng web này cần giao tiếp với nhau để làm một việc gì đó.
Nhưng vì chúng được xây dựng bằng các ngôn ngữ lập trình khác nhau, nên việc đảm bảo giao tiếp chính xác giữa các ứng dụng trở nên thực sự khó khăn.
Thời thế tạo anh hùng...
Đây chính là lúc các Dịch vụ web (Web Services) xuất hiện!
Web Services cung cấp một nền tảng chung cho phép nhiều ứng dụng được xây dựng trên các ngôn ngữ lập trình khác nhau có khả năng giao tiếp với nhau.
Chính xác Web Services là gì?
![Web Services là gì | Lập trình Web Service trong Java](/pic/News/images/tin-tuc-cong-nghe-va-lap-trinh/web-services-la-gi-tai-sao-lap-trinh-vien-java-nen-su-dung-spring-mvc-de-lap-trinh-web-services.jpg)
Web Services là gì - Lập trình Web Service trong Java
Web Services là phương tiện được tiêu chuẩn hóa để truyền thông tin liên lạc giữa ứng dụng khách và máy chủ trên World Wide Web.
-
Note: Giống như Java Web (Xem ngay: JAVA WEB LÀ GÌ?) , Java Web Service thì là Website cung cấp dịch vụ (Cho website khác)
Web Services là một mô-đun phần mềm được thiết kế để thực hiện một nhóm tác vụ nhất định:
-
Web Services có thể được tìm kiếm qua mạng và cũng có thể được gọi đến.
-
Khi được gọi, dịch vụ web sẽ có thể cung cấp chức năng cho máy khách gọi Web Services đó.
![Sơ đồ kiến trúc Web Service](/pic/News/images/tin-tuc-cong-nghe-va-lap-trinh/web-services-la-gi-so-do-kien-truc-web-services.jpg)
Sơ đồ kiến trúc Web Service
Sơ đồ trên cho thấy một cái nhìn rất đơn giản về cách một dịch vụ web sẽ thực sự hoạt động. Máy khách sẽ gọi một loạt các cuộc gọi dịch vụ web thông qua các yêu cầu đến một máy chủ sẽ lưu trữ dịch vụ web thực tế.
Các yêu cầu này được thực hiện thông qua những gì được gọi là các cuộc gọi thủ tục từ xa. Các cuộc gọi thủ tục từ xa (RPC) là các cuộc gọi được thực hiện cho các phương thức được lưu trữ bởi dịch vụ web có liên quan.
Ví dụ, Amazon cung cấp dịch vụ web cung cấp giá của các sản phẩm được bán trực tuyến qua amazon.com.
Ở phía giao diện người dùng hoặc các tầng có thể được lập trình bằng Java hoặc .Net (những ngôn ngữ lập trình sẽ có khả năng giao tiếp với Web Services).
Thành phần chính của Web Services là dữ liệu được truyền giữa máy khách và máy chủ và đó là XML.
-
XML (Ngôn ngữ đánh dấu mở rộng) là một đối trọng với HTML. XML được hiểu bởi nhiều ngôn ngữ lập trình.
Vì vậy, khi các ứng dụng nói chuyện với nhau, chúng đang thực sự nói chuyện bằng XML. Điều này cung cấp một nền tảng chung cho ứng dụng được phát triển bằng nhiều ngôn ngữ lập trình khác nhau có thể nói chuyện được với nhau.
Các dịch vụ web sử dụng cái được gọi là SOAP (Simple Object Access Protocol - Giao thức truy cập đối tượng đơn giản) để gửi dữ liệu XML giữa các ứng dụng.
Dữ liệu được gửi qua HTTP bình thường. Dữ liệu được gửi từ dịch vụ web tới ứng dụng được gọi là thông báo SOAP.
SOAP không có gì ngoài tài liệu XML. Vì tài liệu được viết bằng XML, ứng dụng khách gọi Web Services có thể được viết bằng bất kỳ ngôn ngữ lập trình nào.
Và nếu nó được xây dựng bằng ngôn ngữ lập trình Java để gọi Web Services thì người ta thường gọi là Lập trình Web Service Java.
Các loại Web Service
Có 2 loại Web Service:
-
SOAP web services.
-
RESTful web services.
Để một Web Service có đầy đủ chức năng, có một số thành phần nhất định cần phải có.
Các thành phần này cần phải được trình bày bất kể ngôn ngữ phát triển nào được sử dụng để lập trình dịch vụ web.
SOAP Web Services
SOAP được biết đến như một giao thức nhắn tin độc lập vận chuyển. SOAP dựa trên việc truyền dữ liệu XML dưới dạng SOAP messages.
Mỗi messages có một tài liệu XML. Chỉ là cấu trúc của tài liệu XML theo một mẫu cụ thể, nhưng không có nội dung.
Phần tốt nhất của Web Service và SOAP là tất cả được gửi qua HTTP, đây là giao thức web tiêu chuẩn.
REST Web Services
REST được sử dụng để xây dựng các dịch vụ Web nhẹ, có thể bảo trì và có thể mở rộng trong tự nhiên. Một dịch vụ được xây dựng trên kiến trúc REST được gọi là RESTful Services.
Giao thức cơ bản cho REST là HTTP, là giao thức web cơ bản. REST là viết tắt của REpresentational State Transfer
REST là một cách để truy cập các tài nguyên nằm trong một môi trường cụ thể.
Ví dụ:
-
Bạn có thể có một máy chủ có thể lưu trữ các tài liệu hoặc hình ảnh hoặc video quan trọng (gọi là tài nguyên).
-
Giả sử Nếu một khách hàng một trình duyệt web cần bất kỳ tài nguyên nào trong số này, thì nó phải gửi yêu cầu đến máy chủ để truy cập các tài nguyên này.
-
Bây giờ REST định nghĩa một cách về cách thức các tài nguyên này có thể được truy cập.
Note: Chúng ta sẽ tìm hiểu chi tiết về REST và SOAP qua các bài sau.
REST hiện đã trở thành một cách tiêu chuẩn để phát triển các dịch vụ web và khi nói đến Java, có rất nhiều Framwork và thư viện có sẵn, ví dụ: JAX-RS, Restlet, Jersey, REST EAS, Apache CFX, v.v.,
Vậy phát triển Web Services Java thì sử dụng Framework và thư viện nào tốt nhất?
Cá nhân mình thì mình khuyến khích các lập trình viên Java sử dụng Spring MVC để phát triển RESTful Web Services.
![Lập trình viên Java nên sử dụng Spring MVC để Lập trình Web Services](/pic/News/images/tin-tuc-cong-nghe-va-lap-trinh/Lap-trinh-vien-java-nen-su-dung-sprin-mvc-de-lap-trinh-web-service.jpg)
Lập trình viên Java nên sử dụng Spring MVC để Lập trình Web Services
Một số bạn có thể sẽ hỏi:
-
Tại sao nên sử dụng Spring MVC Framework để phát triển các dịch vụ web RESTful trong Java?
-
Nó có những lợi thế là gì?
-
Và tại sao nó tốt hơn so với các framework và thư viện khác hiện có?
Lý do quan trọng nhất, tôi nghĩ, để sử dụng Spring để phát triển dịch vụ web RESTful đó là:
Bạn có thể sử dụng kiến thức về Spring MVC của mình để phát triển các dịch vụ web RESTful và bạn không cần phải học một framework hoặc thư viện mới nào cả..
Điều đó có nghĩa là bạn có thể nhanh chóng bung ra API REST của mình.
Đây là một trong những lợi thế lớn nhất, tức là tận dụng nhiều năm kinh nghiệm của bạn trên Spring MVC để hiển thị ứng dụng của bạn dưới dạng API REST.
Bạn sẽ không cần phải tốn công vài tuần để học một thư viện mới mà sử dụng cũng không quen thuộc lắm.
Trong vài phiên bản cuối cùng, bắt đầu từ phiên bản Spring 3.0, nó đã cung cấp rất nhiều cải tiến cho Spring MVC để cung cấp hỗ trợ REST tốt nhất.
Nó đã cung cấp các chú thích riêng, ví dụ: RestControll và ResponseStatus để giúp việc phát triển tài nguyên RESTful trở nên dễ dàng hơn trong Spring 4.0.
Nó cũng không chỉ giúp bạn tạo các dịch vụ web RESTful mà còn cung cấp các class để tiêu thụ tài nguyên REST.
Có nhiều class và chú thích tiện ích hơn giúp cho việc phát triển dịch vụ web RESTful trong Spring trở nên dễ dàng và liền mạch hơn.
và...
Mình sẽ chia sẻ một vài trong số chúng trong bài viết này để chứng minh quan điểm của tôi rằng sử dụng Spring để phát triển dịch vụ Web RESTful là quyết định đúng đắn.
7 lý do Lập trình viên Java nên sử dụng Spring để tạo RESTful Web Seriveces
Như mình đã nói với bạn ở bên trên, chúng ta có thể sử dụng Spring MVC để tạo và sử dụng các dịch vụ web RESTful.
Bây giờ, hãy xem những hỗ trợ đó chi tiết hơn một chút để bạn có thể sử dụng chúng tốt nhất và nhanh chóng phát triển các dịch vụ RESTful mà bạn mong muốn.
1. Trong Spring MVC, Controller có thể xử lý các yêu cầu cho tất cả các phương thức HTTP (Đây là xương sống của các dịch vụ web RESTful.)
Ví dụ: Bạn có thể xử lý một phương thức GET để thực hiện các thao tác đọc, phương thức POST để tạo tài nguyên, phương thức PUT để cập nhật tài nguyên và phương thức DELETE để xóa tài nguyên khỏi máy chủ.
Từ Spring 3.2 trở đi, bạn cũng có thể xử lý các yêu cầu PATCH.
2. Trong REST, việc thể hiện dữ liệu rất quan trọng và đó là lý do tại sao Spring MVC cho phép bạn bỏ qua hoàn toàn View-based rendering bằng cách sử dụng chú thích: @ResponseBody và nhiều HTTPMessgeConverterim.
Bằng cách sử dụng điều này, bạn có thể trực tiếp gửi phản hồi cho khách hàng.
![7 lý do Lập trình viên Java nên sử dụng Spring để tạo RESTful Web Seriveces](/pic/News/images/tin-tuc-cong-nghe-va-lap-trinh/Lap-trinh-vien-java-nen-su-dung-sprin-mvc-de-lap-trinh-web-service-bo-qua-hoan-toan-view-based-rendering.jpg)
Cho phép bạn bỏ qua hoàn toàn View-based rendering để gửi phản hồi trực tiếp cho khách hàng
3. Phiên bản Spring 4.0 đã thêm một chú thích chuyên dụng, @RestControll, để giúp việc phát triển các dịch vụ web RESTful trở nên dễ dàng hơn.
Nếu bạn chú thích Controller Class của bạn bằng cách sử dụng @RestContoder thay vì @Controller thì Spring sẽ áp dụng các cuộc hội thoại thông báo cho tất cả các phương thức xử lý trong controller.
Điều này có nghĩa là bạn không cần chú thích từng phương thức với @ResponseBodyannotation. Code của bạn sạch hơn nhiều.
4. Một trong những khác biệt chính giữa REST Web Services và ứng dụng web thông thường là REST pass resource xác định dữ liệu trong chính URI.
Ví dụ: /message/101, trong khi các ứng dụng web thường sử dụng tham số truy vấn, ví dụ: /message?Id=101.
Spring MVC cũng cung cấp @PathVariableannotation có thể trích xuất dữ liệu từ URL. Nó cho phép Controller xử lý các yêu cầu cho các URL được tham số hóa.
5. Một khía cạnh quan trọng khác của các dịch vụ web RESTful là Representation, nghĩa là cùng một tài nguyên có thể được biểu diễn theo các định dạng khác nhau, ví dụ JSON, XML, HTML, v.v. .
Ví dụ: @ContentNegotiatingViewResolver có thể xem phần mở rộng tệp của các request hoặc Apcept Header để tìm ra cách biểu diễn chính xác của tài nguyên cho máy khách.
6. Tương tự như chú thích @ResponseBody, được sử dụng để chuyển đổi phản hồi theo định dạng mà khách hàng muốn (bằng cách sử dụng HTTPMessageConifts).
Spring MVC cũng cung cấp chú thích @RequestBody, sử dụng các triển khai HttpMethodConverter để chuyển đổi dữ liệu HTTP gửi đến thành các đối tượng Java được truyền vào phương thức xử lý của Controller.
![7 lý do Lập trình viên Java nên sử dụng Spring để tạo RESTful Web Seriveces](/pic/News/images/tin-tuc-cong-nghe-va-lap-trinh/Lap-trinh-vien-java-nen-su-dung-sprin-mvc-de-lap-trinh-web-service-2.jpg)
Lập trình Web Services với Java Frameworks Spring MVC
7. Spring Framework cũng cung cấp một lớp mẫu, RestTemplate, tương tự như JdbcTemplate và JmsTemplate, chúng có thể comsume tài nguyên REST. Bạn có thể sử dụng lớp này để kiểm tra dịch vụ web RESTful của mình hoặc phát triển ứng dụng khách REST.
Tổng kết
Đây là một số tính năng quan trọng của Spring MVC Framework giúp phát triển RESTful Web Services.
Như mình đã nói trước đó:
"Lý do quan trọng nhất để mình chọn Spring để phát triển RESTful Web Services là vì mình có thể sử dụng kiến thức hiện có của mình"
Có nghĩa là mình sử dụng những gì mình quen thuộc nhất, nhanh chóng đưa ra ứng dụng Web Services mà không cần học thêm gì cả.
Nếu bạn nhìn nó từ cấp độ cao, việc phát triển RESTful Web Services không khác lắm so với việc phát triển một ứng dụng web.
Sự khác biệt cơ bản là trong trường hợp trước đây, chúng ta chủ yếu giao dịch với người dùng.
Trong REST bạn phải giao dịch với người dùng không phải là người, chủ yếu là các ứng dụng JavaScript và ứng dụng di động đa dạng.
Sự khác biệt chính này sau đó gây ra sự khác biệt khác.
Ví dụ: biểu thị dữ liệu bằng JSON hoặc XML thay vì HTML phù hợp với người dùng nhưng không phải cho các hệ thống không phải của con người.
> Nếu bạn là người mới bắt đầu mà muốn tạo ra các ứng dụng giao tiếp giữa các ứng dụng với nhau thì bạn nên học ngay khóa học LẬP TRÌNH JAVA WEB trước khi tìm hiểu REST.
Bởi vì như đã nói, Bản chất lập trình ứng dụng web và RESTful Web Serives không khác nhau lắm.
Sau đó bạn chỉ cần tự học thêm Spring là ổn thôi.
> Nếu không thì bạn cũng có thể tham khảo khóa học Lập trình Java Web nâng cao của NIIT - ICT Hà Nội. Khóa học này sẽ dạy rất kỹ về Spring.
---
HỌC VIỆN ĐÀO TẠO CNTT NIIT - ICT HÀ NỘI
Học Lập trình chất lượng cao (Since 2002). Học làm Lập trình viên. Hành động ngay!
Đc: Tầng 3, 25T2, N05, Nguyễn Thị Thập, Cầu Giấy, Hà Nội
SĐT: 02435574074 - 0914939543
Email: hello@niithanoi.edu.vn
Fanpage: https://facebook.com/NIIT.ICT/
#niit #niithanoi #niiticthanoi #hoclaptrinh #khoahoclaptrinh #hoclaptrinhjava #hoclaptrinhphp