ฉันต้องการเรียนรู้ Web Services ใน Java ประเภทต่างๆในนั้นคืออะไร? [ปิด]


91

เมื่อเร็ว ๆ นี้ฉันตัดสินใจที่จะเริ่มเรียนรู้เกี่ยวกับบริการเว็บ java และเมื่อฉันเริ่มค้นหาบทช่วยสอนสำหรับบริการเว็บ java ใน google ฉันพบว่ามีบริการเว็บแบบ XML หลายประเภทที่ใช้ SOAP และบริการเว็บที่ไม่พึงประสงค์

นอกจากนี้ฉันพบว่ามีข้อกำหนด JAX-WS สำหรับเว็บเซอร์วิสที่ใช้ xml และข้อกำหนด JAX-RS สำหรับการสร้างเว็บเซิร์ฟเวอร์ RESTful

Q1) ฉันรู้สึกสับสนมันจะดีมากถ้าใครสามารถช่วยฉันทำความเข้าใจความแตกต่างระหว่างบริการเว็บประเภทต่างๆเหล่านี้เพื่อที่ฉันจะได้ตัดสินใจได้ว่าจะเรียนรู้อันไหนก่อน

Q2) นอกจากนี้ฉันต้องการเรียนรู้เชิงลึกเกี่ยวกับการสร้างบริการเว็บประเภทต่างๆใน java มีบทช่วยสอนหรือแหล่งข้อมูลใดบ้างที่สามารถให้ข้อมูลเชิงลึกเกี่ยวกับบริการเว็บแต่ละประเภทและการเปรียบเทียบระหว่างกัน

Q3) ขึ้นอยู่กับสถานการณ์และเงื่อนไขที่ฉันควรตัดสินใจว่าฉันต้องการสร้างเว็บเซอร์วิสแบบ XML แทนที่จะเป็นบริการ SOAP หรือควรใช้บริการ RESTful


คำตอบ:


142
  1. SOAP Web Servicesเป็นบริการตามมาตรฐานและรองรับโดยซอฟต์แวร์เกือบทุกแพลตฟอร์ม: พวกเขาพึ่งพา XML เป็นอย่างมากและรองรับธุรกรรมความปลอดภัยข้อความแบบอะซิงโครนัสและปัญหาอื่น ๆ อีกมากมาย เป็นมาตรฐานที่ค่อนข้างใหญ่และซับซ้อน แต่ครอบคลุมเกือบทุกสถานการณ์การส่งข้อความ ในอีกด้านหนึ่งบริการ RESTfulอาศัยโปรโตคอล HTTP และคำกริยา (GET, POST, PUT, DELETE) เพื่อแลกเปลี่ยนข้อความในรูปแบบใด ๆ JSON และ XML ที่ต้องการ เป็นแนวทางสถาปัตยกรรมที่เรียบง่ายและสง่างาม
  2. เช่นเดียวกับทุกหัวข้อใน Java World มีไลบรารีจำนวนมากในการสร้าง / ใช้บริการเว็บ ใน SOAP Side คุณมีมาตรฐานJAX-WSและแกน Apacheและใน REST คุณสามารถใช้RestletsหรือSpring REST Facilitiesร่วมกับไลบรารีอื่น ๆ ได้

สำหรับคำถามที่ 3 บทความนี้ระบุว่า RESTful Services เหมาะสมในสถานการณ์นี้:

  • หากคุณมีแบนด์วิดท์ จำกัด
  • หากการดำเนินการของคุณไร้สัญชาติ: ไม่มีการเก็บรักษาข้อมูลจากการเรียกหนึ่งครั้งไปยังการร้องขอถัดไปและแต่ละคำขอจะได้รับการปฏิบัติโดยอิสระ
  • หากลูกค้าของคุณต้องการแคช

ในขณะที่ SOAP เป็นวิธีที่จะไปเมื่อ:

  • หากคุณต้องการการประมวลผลแบบอะซิงโครนัส
  • หากคุณต้องการสัญญาอย่างเป็นทางการ / อินเทอร์เฟซ
  • ในการดำเนินการบริการของคุณมีสถานะ: ตัวอย่างเช่นคุณจัดเก็บข้อมูล / ข้อมูลตามคำขอและใช้ข้อมูลที่เก็บไว้ในข้อมูลถัดไป

11
+1 เพื่อความชัดเจนและระบุสถานการณ์ :)
Rajesh Pantula

คำตอบที่คมชัดและชัดเจน
กฤษณะ

+1 สำหรับคำตอบที่ดี ... !!!
Shailesh Saxena

คำตอบที่ดีคุณบอกฉันได้ไหมว่าการดำเนินการที่ไร้สัญชาติ / ไร้สัญชาติคืออะไร?
Keerthivasan

ฉันแก้ไขคำตอบรวมถึงแนวคิดเหล่านั้นด้วย
Carlos Gavidia-Calderon

13

Q1)มีสองสิ่งที่ควรอ่านหรือ Google เพิ่มเติม:

ความแตกต่างหลักระหว่าง SOAP และบริการเว็บ RESTful ใน java http://www.ajaxonomy.com/2008/xml/web-services-part-1-soap-vs-rest

ขึ้นอยู่กับคุณว่าคุณต้องการเรียนรู้อะไรก่อน ผมขอแนะนำให้คุณดูเฟรมเวิร์กCXF คุณสามารถสร้างบริการพักผ่อน / สบู่

Q2)ต่อไปนี้เป็นบทเรียนดีๆสำหรับสบู่ (ฉันมีไว้คั่นหน้า):

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

วิธีที่ดีที่สุดในการเรียนรู้ไม่ใช่แค่การอ่านบทแนะนำ แต่ก่อนอื่นคุณต้องอ่านบทแนะนำเพื่อรับแนวคิดพื้นฐานเพื่อที่คุณจะได้เห็นว่าคุณสามารถสร้างบางสิ่งได้ (หรือไม่) และนั่นจะทำให้คุณมีแรงบันดาลใจ

SO เป็นวิธีที่ยอดเยี่ยมในการเรียนรู้เทคโนโลยีโดยเฉพาะ (หรือมากกว่า) ผู้คนถามคำถามที่แปลกประหลาดมากมายและมีคำตอบที่แปลกกว่า แต่โดยรวมแล้วคุณจะได้เรียนรู้เกี่ยวกับวิธีแก้ปัญหาด้วยวิธีอื่น ๆ บางทีคุณอาจไม่รู้วิธีนั้นบางทีคุณอาจไม่สามารถคิดได้ด้วยตัวเอง

สมัครสมาชิกแท็กสองสามแท็กที่น่าสนใจสำหรับคุณและหมั่นถามคำถามที่ดีและพยายามให้คำตอบที่ดีและฉันรับประกันว่าคุณจะได้เรียนรู้สิ่งนี้เมื่อเวลาผ่านไป (หากคุณยังคงเป็นเช่นนั้น)

Q3)คุณจะต้องตอบคำถามนี้ด้วยตัวเอง ขั้นแรกด้วยการตัดสินใจว่าคุณจะสร้างอะไรหลังจากนั้นคุณจะต้องคิดถึงมินิโปรเจ็กต์หรืออะไรบางอย่างแล้วนำไปจากที่นั่น

หากคุณตัดสินใจที่จะใช้ CXF เป็นเฟรมเวิร์กในการสร้างบริการ REST / SOAP ฉันขอแนะนำให้คุณค้นหาหนังสือเล่มApache CXF Web Service Developmentนี้ มันยอดเยี่ยมอ่านไม่ยากและไม่ใหญ่เกินไป (win win)


7

SOAP WS รองรับทั้งรูปแบบการรวมโพรซีเดอร์แบบรีโมต (เช่น RPC) และข้อความที่มุ่งเน้นไปที่มิดเดิลแวร์ (MOM) Restful Web Service รองรับเฉพาะรูปแบบการรวม RPC

SOAP WS เป็นโปรโตคอลการขนส่งที่เป็นกลาง รองรับโปรโตคอลหลายตัวเช่น HTTP (S), Messaging, TCP, UDP SMTP เป็นต้น REST คือโปรโตคอลการขนส่งเฉพาะ รองรับเฉพาะโปรโตคอล HTTP หรือ HTTPS

SOAP WS อนุญาตเฉพาะรูปแบบข้อมูล XML คุณกำหนดการดำเนินการซึ่งอุโมงค์ผ่าน POST โฟกัสอยู่ที่การเข้าถึงการดำเนินการที่มีชื่อและการเปิดเผยตรรกะของแอปพลิเคชันเป็นบริการ REST อนุญาตรูปแบบข้อมูลหลายรูปแบบเช่น XML, ข้อมูล JSON, ข้อความ, HTML และอื่น ๆ สามารถใช้เบราว์เซอร์ใดก็ได้เนื่องจากวิธี REST ใช้การดำเนินการ GET, PUT, POST และ DELETE มาตรฐาน โฟกัสอยู่ที่การเข้าถึงทรัพยากรที่มีชื่อและการเปิดเผยข้อมูลเป็นบริการ REST รองรับ AJAX มันสามารถใช้วัตถุ XMLHttpRequest เหมาะสำหรับการดำเนินการ CRUD แบบไร้สัญชาติ (สร้างอ่านอัปเดตและลบ) GET - เป็นตัวแทน () POST - acceptRepresention () PUT - storeRepresention () DELETE - removeRepresention ()

ไม่สามารถแคชการอ่านตาม SOAP สามารถแคชการอ่านตาม REST ทำงานและปรับขนาดได้ดีขึ้น SOAP WS รองรับทั้งการรักษาความปลอดภัย SSL และ WS-security ซึ่งเพิ่มคุณสมบัติการรักษาความปลอดภัยขององค์กรเช่นการรักษาความปลอดภัยจนถึงจุดที่จำเป็นการรักษาข้อมูลประจำตัวผ่านตัวกลางและไม่ใช่แค่ชี้ไปที่ SSL เท่านั้นการรักษาความปลอดภัยส่วนต่างๆของข้อความด้วย อัลกอริธึมการรักษาความปลอดภัยที่แตกต่างกัน ฯลฯ REST รองรับเฉพาะการรักษาความปลอดภัย SSL แบบจุดต่อจุด SSL เข้ารหัสข้อความทั้งหมดไม่ว่าข้อความทั้งหมดจะมีความละเอียดอ่อนหรือไม่ก็ตาม SOAP มีการสนับสนุนที่ครอบคลุมสำหรับทั้งการจัดการธุรกรรมที่ใช้กรดสำหรับธุรกรรมที่มีอายุสั้นและการจัดการธุรกรรมที่อิงตามค่าตอบแทนสำหรับธุรกรรมที่ดำเนินการมายาวนาน นอกจากนี้ยังรองรับการคอมมิตสองเฟสข้ามทรัพยากรแบบกระจาย REST รองรับการทำธุรกรรม

SOAP ประสบความสำเร็จหรือลองตรรกะใหม่ในตัวและให้ความน่าเชื่อถือตั้งแต่ต้นจนจบแม้จะผ่านตัวกลาง SOAP REST ไม่มีระบบส่งข้อความมาตรฐานและคาดว่าลูกค้าที่เรียกใช้บริการเพื่อจัดการกับความล้มเหลวในการสื่อสารโดยการลองใหม่

แหล่งที่มา http://java-success.blogspot.in/2012/02/java-web-services-interview-questions.html


> Restful Web Service รองรับเฉพาะรูปแบบการรวม RPC REST ไม่ใช่ RPC RPC กล่าวว่า "กำหนดวิธีการบางอย่างที่ทำบางสิ่ง" ในขณะที่ REST กล่าวว่า "กำหนดทรัพยากรบางอย่างและจะมีวิธีการเหล่านี้" peej.co.uk/articles/rest.html
urmalp

0

หากแอปพลิเคชันของคุณมักใช้โปรโตคอล http ดังนั้น REST จะดีที่สุดเนื่องจากน้ำหนักเบาและการทราบว่าแอปพลิเคชันของคุณใช้โปรโตคอล http เพียงอย่างเดียวการเลือก SOAP นั้นไม่ดีนักเนื่องจากมีน้ำหนักมากจึงควรตัดสินใจเลือกบริการเว็บตามโปรโตคอลที่เราใช้ ในแอปพลิเคชันของเรา

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.