Sự khác biệt giữa JAX-RS và JAX-WS là gì?


93

Sau khi đọc một vài bài báo về JAX-RS và JAX-WS, tôi có một vài câu hỏi muốn xác nhận?

  1. JAX-RS có thể thực hiện Yêu cầu không đồng bộ như JAX-WS không?
  2. JAX-RS có thể truy cập dịch vụ web không chạy trên nền tảng Java và ngược lại không?
  3. "REST đặc biệt hữu ích cho các thiết bị cấu hình hạn chế, chẳng hạn như PDA và điện thoại di động" có nghĩa là gì?
  4. "JAX-RS không yêu cầu thông điệp XML hoặc dịch vụ WSDL-định nghĩa API có nghĩa là gì?

Câu trả lời:


78

JAX-RS có thể thực hiện Yêu cầu không đồng bộ như JAX-WS không?

1) Tôi không biết API JAX-RS có bao gồm một cơ chế cụ thể cho các yêu cầu không đồng bộ hay không, nhưng câu trả lời này vẫn có thể thay đổi dựa trên việc triển khai ứng dụng khách mà bạn sử dụng.

JAX-RS có thể truy cập dịch vụ web không chạy trên nền tảng Java và ngược lại không?

2) Tôi không thể nghĩ ra lý do nào mà nó không thể.

"REST đặc biệt hữu ích cho các thiết bị cấu hình hạn chế, chẳng hạn như PDA và điện thoại di động" có nghĩa là gì?

3) Các kiến ​​trúc dựa trên REST thường sẽ sử dụng định dạng dữ liệu nhẹ, như JSON, để gửi dữ liệu qua lại. Điều này trái ngược với JAX-WS sử dụng XML. Bản thân tôi không thấy XML nặng hơn đáng kể so với JSON (mà một số người có thể tranh luận), nhưng với JAX-WS, lượng XML được sử dụng sẽ khiến REST với JSON trở thành tùy chọn nhẹ hơn.

"JAX-RS không yêu cầu thông điệp XML hoặc dịch vụ WSDL-định nghĩa API có nghĩa là gì?

4) Như đã nêu trong 3, các kiến ​​trúc REST thường sử dụng JSON để gửi và nhận dữ liệu. JAX-WS sử dụng XML. Không phải vì bản thân JSON nhỏ hơn đáng kể so với XML. Phần lớn là đặc tả JAX-WS bao gồm rất nhiều chi phí trong cách nó giao tiếp.

Về điểm WSDL và định nghĩa API, REST sẽ thường xuyên sử dụng cấu trúc URI và các lệnh HTTP để định nghĩa API hơn là các loại thông báo, như được thực hiện trong JAX-WS. Điều này có nghĩa là bạn không cần xuất bản tài liệu WSDL để những người dùng khác của dịch vụ có thể biết cách nói chuyện với dịch vụ của bạn. Với REST, bạn vẫn sẽ cần cung cấp một số tài liệu cho những người dùng khác về cách dịch vụ REST được tổ chức và dữ liệu và lệnh HTTP nào cần được gửi.


Cảm ơn bạn vì câu trả lời rất hữu ích. Có những thứ nào khác giúp phân biệt JAX-WS với JAX-RS mà bạn biết không?
pmark019,

92

Một điểm quan trọng khác

JAX-WS đại diện cho SOAP

JAX-RS đại diện cho REST

Làm thế nào để lựa chọn giữa triển khai các dịch vụ web JAX-RS và JAX-WS?


29
Trên thực tế, JAX-WS đại diện cho cả dịch vụ web dựa trên RESTful và SOAP. Một cách để suy nghĩ về nó là JAX-RS chuyên về RESTful, trong khi JAX-WS cho phép bạn linh hoạt hơn để lựa chọn giữa một trong hai, đồng thời (trong một số trường hợp) cấu hình phức tạp hơn.
MattC

Cảm ơn bạn đã giải thích đơn giản.
PeerNet

2
" JAX-WS đại diện cho cả các dịch vụ web dựa trên RESTful và SOAP " - điều này không đúng, bạn có thể tham khảo để xác thực yêu cầu của mình không, JAX-WS có thể vận chuyển SOAP qua HTTP và cả XML qua HTTP, nhưng điều này làm cho JAX-WS RESTful. RESTful là một khái niệm hoàn toàn khác.
hagrawal

43

JAX-WS - là Java API cho Dịch vụ Web dựa trên XML - một cách tiêu chuẩn để phát triển Dịch vụ Web theo ký hiệu SOAP (Giao thức truy cập đối tượng đơn giản).

Việc gọi các Dịch vụ Web được thực hiện thông qua các lệnh gọi thủ tục từ xa. Để trao đổi thông tin giữa máy khách và Dịch vụ Web được sử dụng giao thức SOAP. Trao đổi thông điệp giữa máy khách và máy chủ được thực hiện thông qua các thông báo SOAP dựa trên XML .

Khách hàng của JAX-WS Web- Service cần một tệp WSDL để tạo mã thực thi mà khách hàng có thể sử dụng để gọi Web-Service.

JAX-RS - API Java cho các dịch vụ web RESTful. RESTful Web Services được biểu thị dưới dạng tài nguyên và có thể được xác định bằng Số nhận dạng tài nguyên đồng nhất ( URI ). Lệnh gọi thủ tục từ xa trong trường hợp này được biểu diễn là một yêu cầu HTTP và dữ liệu cần thiết được chuyển dưới dạng tham số của truy vấn. Dịch vụ Web RESTful - linh hoạt hơn, có thể sử dụng nhiều kiểu MIME khác nhau. Thường được sử dụng để trao đổi dữ liệu XML hoặc trao đổi dữ liệu JSON (JavaScript Object Notation) ...


Giải thích ngắn gọn và rõ ràng !! Thông minh.
Saurabh Rai

0

tôi đã làm việc trên Apachi Axis1.1 và Axis2.0 và JAX-WS nhưng tôi sẽ đề nghị bạn phải JAX-WS vì nó cho phép bạn tạo wsdl ở bất kỳ định dạng nào, tôi đang thực hiện hoạt động như GetInquiry () trong Apache Axis2 thì không. cho phép tôi bắt đầu tên hoạt động trong chữ hoa, vì vậy tôi thấy nó không ổn, vì vậy tôi khuyên bạn nên sử dụng JAX-WS


0

JAX-RS có thể thực hiện Yêu cầu không đồng bộ như JAX-WS không?

Có, nó chắc chắn có thể sử dụng @Async

JAX-RS có thể truy cập dịch vụ web không chạy trên nền tảng Java và ngược lại không?

Có, nó có thể làm

"REST đặc biệt hữu ích cho các thiết bị cấu hình hạn chế, chẳng hạn như PDA và điện thoại di động" có nghĩa là gì?

Nó chủ yếu được sử dụng cho các apis công cộng, nó phụ thuộc vào cách tiếp cận bạn muốn sử dụng.

"JAX-RS không yêu cầu thông điệp XML hoặc dịch vụ WSDL-định nghĩa API có nghĩa là gì?

Nó có các tiêu chuẩn riêng của nó WADL (Ngôn ngữ phát triển ứng dụng web) nó có yêu cầu http để bạn có thể truy cập các tài nguyên mà chúng hoàn toàn được tạo ra bởi các tư duy khác nhau, Trong trường hợp trong Jax-Rs, bạn phải nghĩ đến việc tiết lộ tài nguyên

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.