Tôi cần học Dịch vụ Web bằng Java. Các loại khác nhau trong đó là gì? [đóng cửa]


91

Gần đây, tôi quyết định bắt đầu tìm hiểu về các dịch vụ web java và khi tôi bắt đầu tìm kiếm hướng dẫn về các dịch vụ web java trên google, tôi phát hiện ra rằng có rất nhiều loại dịch vụ web dựa trên XML, dựa trên SOAP, cũng như các dịch vụ web RESTful.

Ngoài ra, tôi thấy rằng có một đặc tả JAX-WS cho các dịch vụ web dựa trên xml và đặc tả JAX-RS để tạo các dịch vụ web RESTful.

Q1) Tôi rất bối rối, sẽ rất tuyệt nếu ai đó có thể giúp tôi hiểu sự khác biệt giữa các loại dịch vụ web khác nhau này, để tôi có thể quyết định nên học cái nào trước.

Câu hỏi 2) Ngoài ra, tôi muốn tìm hiểu sâu về cách tạo các loại dịch vụ web khác nhau trong java. Có hướng dẫn hoặc tài nguyên nào có thể cung cấp cái nhìn sâu sắc về từng loại dịch vụ web và so sánh giữa chúng không.

Q3) dựa trên những tình huống và điều kiện nào, tôi nên quyết định rằng tôi muốn tạo một dịch vụ web dựa trên XML thay vì một dịch vụ SOAP hay tôi nên sử dụng dịch vụ RESTful.


Câu trả lời:


142
  1. Dịch vụ Web SOAP dựa trên tiêu chuẩn và được hỗ trợ bởi hầu hết mọi nền tảng phần mềm: Chúng phụ thuộc nhiều vào XML và có hỗ trợ cho các giao dịch, bảo mật, thông báo không đồng bộ và nhiều vấn đề khác. Đó là một tiêu chuẩn khá lớn và phức tạp, nhưng bao gồm hầu hết mọi tình huống nhắn tin. Mặt khác, các dịch vụ RESTful dựa vào giao thức HTTP và các động từ (GET, POST, PUT, DELETE) để trao đổi thông điệp ở bất kỳ định dạng nào, tốt hơn là JSON và XML. Đó là một cách tiếp cận kiến ​​trúc khá đơn giản và thanh lịch.
  2. Như trong mọi chủ đề trong Thế giới Java, có một số thư viện để xây dựng / sử dụng Dịch vụ Web. Trong SOAP Side, bạn có tiêu chuẩn JAX-WSApache Axis , và trong REST, bạn có thể sử dụng Restlets hoặc Spring REST Facilities giữa các thư viện khác.

Với câu hỏi 3, bài viết này nói rằng RESTful Services được chấp thuận trong các trường hợp sau:

  • Nếu bạn có băng thông hạn chế
  • Nếu hoạt động của bạn là không trạng thái: Không có thông tin nào được lưu giữ từ một lệnh gọi đến lệnh tiếp theo và mỗi yêu cầu được xử lý độc lập.
  • Nếu khách hàng của bạn yêu cầu bộ nhớ đệm.

Trong khi SOAP là cách để đi khi:

  • Nếu bạn yêu cầu xử lý không đồng bộ
  • Nếu bạn cần hợp đồng chính thức / Giao diện
  • Trong hoạt động dịch vụ của bạn là trạng thái: Ví dụ: bạn lưu trữ thông tin / dữ liệu theo yêu cầu và sử dụng dữ liệu được lưu trữ đó vào yêu cầu tiếp theo.

11
+1 vì quá rõ ràng và nêu rõ các tình huống :)
Rajesh Pantula

Câu trả lời sắc sảo và rõ ràng.
Krishna

+1 cho câu trả lời hay ... !!!
Shailesh Saxena

Câu trả lời hay, Bạn có thể cho tôi biết hoạt động không trạng thái / trạng thái là gì không?
Keerthivasan

Tôi đã chỉnh sửa câu trả lời bao gồm những khái niệm đó.
Carlos Gavidia-Calderon

13

Q1) Dưới đây là một số điều cần đọc hoặc google thêm:

Sự khác biệt chính giữa dịch vụ web SOAP và RESTful trong java http://www.ajaxonomy.com/2008/xml/web-services-part-1-soap-vs-rest

Bạn muốn học gì trước là tùy thuộc vào bạn. Tôi khuyên bạn nên xem qua khung CXF . Bạn có thể xây dựng cả hai dịch vụ nghỉ ngơi / xà phòng.

Q2) Dưới đây là một số hướng dẫn tốt về xà phòng (tôi đã đánh dấu chúng):

http://united-coders.com/phillip-steffensen/developing-a-simple-soap-webservice-using-spring-301-and-apache-cxf-226

http://www.benmccann.com/blog/web-services-tutorial-with-apache-cxf/

http://www.mastertheboss.com/web-interfaces/337-apache-cxf-interceptors.html

Cách tốt nhất để học không chỉ là đọc các hướng dẫn. Nhưng trước tiên, bạn sẽ xem các hướng dẫn sơ sài để có được ý tưởng cơ bản để bạn có thể thấy rằng bạn có thể sản xuất một cái gì đó (hoặc không) và điều đó sẽ giúp bạn có động lực.

VẬY là một cách tuyệt vời để tìm hiểu công nghệ cụ thể (hoặc hơn thế nữa), mọi người đặt ra rất nhiều câu hỏi kỳ quặc và luôn có những câu trả lời kỳ lạ. Nhưng nhìn chung, bạn sẽ tìm hiểu về các cách giải quyết vấn đề theo cách khác. Có thể bạn không biết cách đó, có thể bạn không thể tự mình nghĩ ra.

Đăng ký một vài thẻ thú vị đối với bạn và kiên trì, đặt những câu hỏi hay và cố gắng đưa ra câu trả lời tốt và tôi đảm bảo với bạn rằng bạn sẽ học được điều này khi thời gian trôi qua (nếu bạn kiên trì như vậy).

Q3) Bạn sẽ phải tự trả lời câu hỏi này. Đầu tiên bằng cách quyết định những gì bạn sẽ xây dựng, sau cùng, bạn sẽ cần nghĩ về một số dự án nhỏ hoặc một cái gì đó và thực hiện nó từ đó.

Nếu bạn quyết định sử dụng CXF làm khuôn khổ để xây dựng các dịch vụ REST / SOAP, tôi khuyên bạn nên tra cứu cuốn sách này Apache CXF Web Service Development. Nó tuyệt vời, không khó đọc và cũng không quá lớn (win win).


7

SOAP WS hỗ trợ cả kiểu gọi thủ tục từ xa (tức là RPC) và kiểu tích hợp phần giữa (MOM) định hướng thông điệp. Dịch vụ Web Restful chỉ hỗ trợ kiểu tích hợp RPC.

SOAP WS là giao thức trung lập. Hỗ trợ nhiều giao thức như HTTP (S), Tin nhắn, TCP, UDP SMTP, v.v. REST là giao thức truyền tải cụ thể. Chỉ hỗ trợ các giao thức HTTP hoặc HTTPS.

SOAP WS chỉ cho phép định dạng dữ liệu XML. Bạn xác định các hoạt động, các thao tác này sẽ truyền qua POST. Trọng tâm là truy cập các hoạt động được đặt tên và hiển thị logic ứng dụng như một dịch vụ. REST cho phép nhiều định dạng dữ liệu như XML, dữ liệu JSON, văn bản, HTML, v.v. Bất kỳ trình duyệt nào cũng có thể được sử dụng vì phương pháp REST sử dụng các thao tác Web chuẩn GET, PUT, POST và DELETE. Trọng tâm là truy cập các tài nguyên được đặt tên và hiển thị dữ liệu dưới dạng một dịch vụ. REST có hỗ trợ AJAX. Nó có thể sử dụng đối tượng XMLHttpRequest. Tốt cho các hoạt động CRUD (Tạo, Đọc, Cập nhật và Xóa) không trạng thái. GET - đại diện () POST - acceptRepresention () PUT - storeRepresention () DELETE - removeRepresention ()

Các lần đọc dựa trên SOAP không thể được lưu vào bộ nhớ đệm. Các lần đọc dựa trên REST có thể được lưu vào bộ nhớ đệm. Biểu diễn và quy mô tốt hơn. SOAP WS hỗ trợ cả bảo mật SSL và bảo mật WS, bổ sung một số tính năng bảo mật doanh nghiệp như duy trì bảo mật ngay tại điểm cần thiết, duy trì danh tính thông qua các bên trung gian và không chỉ trỏ tới điểm chỉ SSL, bảo mật các phần khác nhau của thư bằng các thuật toán bảo mật khác nhau, v.v. REST chỉ hỗ trợ bảo mật SSL điểm-điểm. SSL mã hóa toàn bộ thư, cho dù tất cả thư có nhạy cảm hay không. SOAP hỗ trợ toàn diện cho cả quản lý giao dịch dựa trên ACID cho các giao dịch ngắn hạn và quản lý giao dịch dựa trên bồi thường cho các giao dịch dài hạn. Nó cũng hỗ trợ cam kết hai giai đoạn trên các tài nguyên phân tán. REST hỗ trợ các giao dịch,

SOAP có logic thành công hoặc thử lại được tích hợp sẵn và cung cấp độ tin cậy từ đầu đến cuối ngay cả khi thông qua trung gian SOAP. REST không có hệ thống nhắn tin tiêu chuẩn và mong đợi các khách hàng gọi dịch vụ để giải quyết các lỗi giao tiếp bằng cách thử lại.

nguồn http://java-success.blogspot.in/2012/02/java-web-services-interview-questions.html


> Dịch vụ Web Restful chỉ hỗ trợ kiểu tích hợp RPC. REST không phải là RPC, RPC nói, "xác định một số phương thức thực hiện điều gì đó" trong khi REST nói, "xác định một số tài nguyên và chúng sẽ có các phương thức này". pej.co.uk/articles/rest.html
urmalp

0

Nếu ứng dụng của bạn thường sử dụng giao thức http thì REST là tốt nhất vì trọng lượng nhẹ của nó và việc biết rằng ứng dụng của bạn chỉ sử dụng giao thức http, việc chọn SOAP là không tốt vì nó nặng, tốt hơn nên đưa ra quyết định lựa chọn dịch vụ web dựa trên giao thức chúng tôi sử dụng trong các ứng dụng của chúng tôi.

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.