ตอบคำถามการรีเฟรช 2012 (ตามค่าหัวครั้งที่สอง) และตรวจสอบผลลัพธ์ของวันนี้ (คำตอบอื่น ๆ )
สบู่ข้อดีข้อเสีย
เกี่ยวกับ SOAP 1.2 ข้อดีและข้อเสียเมื่อเปรียบเทียบกับ "REST" ... ดีตั้งแต่ปี 2550
คุณสามารถอธิบาย REST บริการเว็บด้วย WSDLและใช้โปรโตคอล SOAP ... นั่นคือถ้าคุณทำงานหนักขึ้นเล็กน้อยมาตรฐาน W3C ทั้งหมดของ โปรโตคอลเว็บเซอร์วิสโปรโตคอลสามารถเป็น REST !
มันเป็นจุดเริ่มต้นที่ดีเพราะเราสามารถจินตนาการสถานการณ์ที่หลีกเลี่ยงการอภิปรายทางปรัชญาและระเบียบวิธีทั้งหมด เราสามารถเปรียบเทียบทางเทคนิค "SOAP-REST" กับ "NON-SOAP-REST" ในบริการที่คล้ายกัน
SOAP-REST (= "REST-SOAP"): ตามที่แสดงโดย L.Mandel , WSDL2 สามารถอธิบาย webservice REST และถ้าเราสมมติว่า XML แบบสุดขั้วสามารถห่อหุ้มใน SOAP การใช้งานทั้งหมดจะเป็น "SOAP-REST" .
NON-SOAP-REST : บริการเว็บ REST ใด ๆ ที่ไม่สามารถเป็นสบู่ ... นั่นคือ "90%" ของตัวอย่าง REST ที่มีความรู้ดี บางคนไม่ใช้ XML (เช่นปกติ AJAX REST ใช้ JSON แทน) บางคนใช้โครงสร้าง XML อื่นโดยไม่มีส่วนหัว SOAP หรือกฎ PS: เพื่อหลีกเลี่ยงความไม่เป็นทางการเราสามารถสมมติREST ระดับ 2ในการเปรียบเทียบ
แน่นอนเพื่อเปรียบเทียบแนวคิดเพิ่มเติมเปรียบเทียบ "NON-REST-SOAP" กับ "NON-SOAP-REST" เป็นวิธีการสร้างแบบจำลองที่แตกต่างกัน ดังนั้นการทำ taxonomy ของเว็บเซอร์วิสนี้ให้สมบูรณ์:
NON-REST-SOAP : บริการเว็บ SOAP ใด ๆ ที่ไม่สามารถ REST ... นั่นคือ "90%" ของตัวอย่าง SOAP ที่มีความรอบรู้
NON-REST-NEITHER-SOAP : ใช่จักรวาลของ "การสร้างแบบจำลองการบริการเว็บ" ประกอบด้วยสิ่งอื่น ๆ (เช่นXML-RPC )
สบู่ในการลงโทษส่วนที่เหลือ
เปรียบเทียบสิ่งที่เทียบเคียง: SOAP ส่วนที่เหลือกับNON-SOAP ส่วนที่เหลือ
ข้อดี
อธิบายบางคำ
ความมั่นคงตามสัญญา : สำหรับสัญญาทุกประเภท (เป็น "ข้อตกลงที่เป็นลายลักษณ์อักษร"),
โดยการใช้ standars : ทุกระดับของสแต็ก W3C สอดคล้องกัน REST นั้นไม่ใช่มาตรฐาน W3C หรือ ISO และไม่มีรายละเอียดเกี่ยวกับอุปกรณ์ต่อพ่วงของบริการ ดังนั้นในขณะที่ฉัน @DaveWoldrich (20 โหวต), @cynicalman (5), @ Exos (0) พูดก่อนหน้านี้ในบริบทที่จำเป็นต้องมีมาตรฐานคุณต้องใช้สบู่
โดยการใช้แนวทางปฏิบัติที่ดีที่สุด : "แง่มุมอย่างละเอียด" ของการใช้งานสแต็ก W3Cแปลข้อตกลงระหว่างมนุษย์ / กฎหมาย / กฎหมายที่เกี่ยวข้อง
ความทนทาน : ความปลอดภัยของโครงสร้าง SOAP และส่วนหัว ด้วยการสื่อสารแบบเมตาดา (ด้วยการแสดงออกอย่างเต็มที่ของ XML) และการตรวจสอบคุณมี "นโยบายการประกัน" กับการเปลี่ยนแปลงหรือเสียงรบกวน
สบู่มี "ความน่าเชื่อถือในการทำธุรกรรม ( ... ) การจัดการกับความล้มเหลวของการสื่อสาร. SOAP มีการควบคุมมากขึ้นรอบตรรกะลองใหม่อีกครั้งและทำให้สามารถให้มากขึ้นแบบ end-to-end ความน่าเชื่อถือและการบริการการค้ำประกัน" อี Terman
จัดเรียงข้อดีตามความนิยม
เครื่องมือที่ดีขึ้น (~ 70 โหวต): ปัจจุบัน SOAP มีข้อได้เปรียบของเครื่องมือที่ดีกว่าตั้งแต่ปี 2550 และปี 2555 เพราะเป็นมาตรฐานที่ได้รับการยอมรับอย่างกว้างขวาง ดู @ MarkCidade (27 votes), @DaveWoldrich (20), @JoshM (13), @ TravisHeseman (9)
การปฏิบัติตามมาตรฐาน (25 โหวต): ในขณะที่ฉัน @DaveWoldrich (20 คะแนนโหวต), @cynicalman (5), @ Exitos (0) กล่าวก่อนหน้านี้ในบริบทที่จำเป็นต้องใช้มาตรฐาน
Robustness : การประกัน SOAP header, @JohnSaunders (8 votes)
ข้อเสีย
โครงสร้างของสบู่มีความซับซ้อนมากขึ้น (มากกว่า 300 คะแนน): คำตอบทั้งหมดที่นี่และแหล่งที่มาเกี่ยวกับ "สบู่กับส่วนที่เหลือ" แสดงให้เห็นถึงระดับที่ไม่ชอบด้วยความซ้ำซ้อนและความซับซ้อนของสบู่ นี่เป็นผลตามธรรมชาติของข้อกำหนดสำหรับการยืนยันอย่างเป็นทางการ (ดูด้านล่าง) และเพื่อความทนทาน (ดูด้านบน) "REST NON-SOAP" (และ XML-RPC ผู้สร้าง SOAP ) สามารถทำได้ง่ายและไม่เป็นทางการ
"การเพียง XML" ข้อ จำกัด เป็นอุปสรรคประสิทธิภาพเมื่อใช้บริการเล็ก ๆ (~ 50 โหวต): ดูjson.org/xmlและคำถามนี้หรือนี้คนอื่น ๆ จุดนี้แสดงโดย @toluju (41) และอื่น ๆ
PS: เนื่องจากJSON ไม่ใช่มาตรฐาน IETFแต่เราสามารถพิจารณามาตรฐานจริงสำหรับชุมชนซอฟต์แวร์เว็บ
บริการสร้างแบบจำลองด้วย SOAP
ตอนนี้เราสามารถเพิ่มSOAP-NON-RESTด้วยการเปรียบเทียบNON-SOAP-RESTและอธิบายว่าเมื่อใดควรใช้ SOAP :
ต้องการสำหรับมาตรฐานและสัญญาที่มั่นคง (ดูที่ส่วน "ข้อดี") PS: เห็นทั่วไป "ต้อง B2B สำหรับมาตรฐาน" อธิบายโดย @saille
ต้องการเครื่องมือ (ดูที่ส่วน "ข้อดี") PS: มาตรฐานและการมีอยู่ของการตรวจสอบอย่างเป็นทางการ (ดูซอลเบลโลว์) เป็นประเด็นสำคัญสำหรับเครื่องมืออัตโนมัติ
การประมวลผลแบบขนานจำนวนมาก (ดูที่ "บริบท / รากฐาน" ด้านล่าง): ด้วยกระบวนการที่ใหญ่กว่าและ / หรือช้ากว่าไม่ว่าจะมี SOAP ที่ซับซ้อนเพิ่มขึ้นอีกเล็กน้อยความน่าเชื่อถือและความเสถียรคือการลงทุนที่ดีที่สุด
ต้องการความปลอดภัยมากขึ้น : เมื่อต้องการมากกว่า HTTPS และคุณต้องการคุณสมบัติเพิ่มเติมเพื่อการป้องกัน SOAP เป็นตัวเลือกที่ดีกว่า ( ดู @Bell , โหวต 32 คะแนน) "การส่งข้อความไปตามเส้นทางที่มีความซับซ้อนมากขึ้นกว่าการร้องขอ / การตอบสนองหรือการขนส่งที่ไม่เกี่ยวข้องกับ HTTP เป็น", S. Seely XML เป็นปัญหาหลักที่นำเสนอมาตรฐานXML Encryption , XML ลายเซ็นและXML Canonicalizationและเฉพาะกับสบู่คุณสามารถที่จะฝังกลไกเหล่านี้ลงในข้อความโดยมาตรฐานที่ดีได้รับการยอมรับเป็นWS-Security
ต้องการความยืดหยุ่นมากขึ้น (ข้อ จำกัด น้อยลง): SOAP ไม่ต้องการการโต้ตอบที่แน่นอนกับ URI ไม่ จำกัด ไม่ให้ HTTP; ไม่จำเป็นต้อง จำกัด เพียง 4 คำกริยา ตามที่ @ TravisHeseman (9 คะแนนโหวต) กล่าวว่าหากคุณต้องการบางสิ่งบางอย่าง "ยืดหยุ่นสำหรับจำนวนลูกค้าเทคโนโลยีและการใช้งาน" ให้ใช้ SOAP
PS: โปรดจำไว้ว่า XML นั้นเป็นสากล / มีความหมายมากกว่า JSON (et al)
ต้องการการตรวจสอบอย่างเป็นทางการ : สิ่งสำคัญคือต้องเข้าใจว่าสแต็ก W3Cใช้วิธีการอย่างเป็นทางการและ REST เป็นแบบไม่เป็นทางการมากกว่า คำอธิบายบริการWSDL ของคุณ ( เป็นภาษาที่เป็นทางการ ) เป็นข้อกำหนดอย่างเป็นทางการ ของเว็บเซอร์วิสของคุณและ SOAP เป็นโปรโตคอลที่มีประสิทธิภาพที่ยอมรับใบสั่ง WSDL ที่เป็นไปได้ทั้งหมด
บริบท
ประวัติศาสตร์
เพื่อประเมินแนวโน้มเป็นมุมมองทางประวัติศาสตร์ที่จำเป็น สำหรับหัวข้อนี้มุมมอง 10 หรือ 15 ปี ...
ก่อนมาตรฐาน W3C มีความโกลาหลบ้าง เป็นเรื่องยากที่จะใช้บริการที่ทำงานร่วมกันได้กับกรอบงานที่แตกต่างกันและยากขึ้นค่าใช้จ่ายและใช้เวลานานในการใช้งานบางอย่างที่ทำงานร่วมกันระหว่าง บริษัท สแต็คของ W3Cมาตรฐานได้รับแสงเหนือสำหรับการทำงานร่วมกันของชุดของบริการเว็บที่ซับซ้อน
สำหรับงานประจำวันเช่นการใช้ AJAX, SOAP นั้นหนัก ... ดังนั้นความจำเป็นในการใช้วิธีง่าย ๆ จึงจำเป็นต้องเลือกกรอบทฤษฎีใหม่ ... และ "ผู้เล่นซอฟต์แวร์เว็บขนาดใหญ่" อย่าง Google, Amazon Yahoo, et al, เลือกทางเลือกที่ดีที่สุดนั่นคือวิธี REST เป็นในบริบทนี้ที่แนวคิด REST มาถึงเป็น "กรอบการแข่งขัน" และวันนี้ (2012), ทางเลือกนี้เป็นมาตรฐานโดยพฤตินัยสำหรับโปรแกรมเมอร์
ฐานราก
ในบริบทของการคำนวณแบบขนานเว็บเซอร์วิสจะให้งานย่อยแบบขนาน และโปรโตคอลเช่น SOAP ทำให้แน่ใจว่ามีการซิงโครไนซ์และการสื่อสารที่ดี ไม่ได้ "งานใด ๆ": บริการเว็บสามารถจัดเป็นเนื้อหยาบและน่าอายขนาน
เมื่องานมีขนาดใหญ่ขึ้นก็จะกลายเป็น "การอภิปรายความซับซ้อน" ที่สำคัญน้อยลงและมีความเกี่ยวข้องกับความแข็งแกร่งของการสื่อสารและความแข็งแกร่งของสัญญา