JSON, REST, SOAP, WSDL และ SOA: พวกเขาทั้งหมดเชื่อมโยงเข้าด้วยกันได้อย่างไร


155

ขณะนี้กำลังทำการทดสอบบางอย่างและฉันกำลังดิ้นรนผ่านแนวคิดบางอย่าง สิ่งเหล่านี้ทั้งหมดถูก 'กล่าวถึง' ในบันทึกย่อของฉันจริง ๆ แต่ฉันไม่เข้าใจจริง ๆ ว่าพวกเขาทั้งหมดเชื่อมโยงกัน เท่าที่ความเข้าใจของฉันคือ:

SOA - โซลูชันเพื่อให้ผู้บริโภคบริการ / ผู้ให้บริการสื่อสาร (เท่าที่ฉันเข้าใจนี้เป็นคำที่ร่มสำหรับทุกอย่างอื่น)

WSDL - ภาษาที่อธิบายบริการของผู้ให้บริการ

SOAP - 'wrapper' โปรโตคอล XML ที่ใช้โดยบริการเพื่อส่งข้อความ ทำงานร่วมกับ WSDL เพื่อกำหนดพารามิเตอร์ได้หรือไม่

ส่วนที่เหลือ - รูปแบบการออกแบบที่คล้ายกับ SOAP ในฟังก์ชั่น แต่หลีกเลี่ยง XML? (ไม่แน่ใจเกี่ยวกับอันนี้จริงๆ)

JSON - ทางเลือก XML ที่ใช้จาวาสคริปต์หรือไม่ (ไม่แน่ใจเกี่ยวกับอันนี้อย่างใดอย่างหนึ่ง)

เมื่อมองไปรอบ ๆ อินเทอร์เน็ตดูเหมือนจะไม่มีคำจำกัดความที่ชัดเจนว่าสิ่งเหล่านี้คืออะไรและเชื่อมโยงกันอย่างไร

คำตอบ:


252

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

คุณสร้าง API และให้ผู้อื่นใช้ front-end ของพวกเขาเองเช่นกัน สิ่งที่คุณเพิ่งทำที่นี่คือการใช้วิธีการSOAคือการใช้บริการเว็บ

บริการบนเว็บทำให้สามารถสร้างบล็อคการทำงานที่สามารถเข้าถึงได้ผ่านโปรโตคอลอินเทอร์เน็ตมาตรฐานโดยไม่ขึ้นกับแพลตฟอร์มและภาษาการเขียนโปรแกรม

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


นั่นคือสิ่งที่ SOAP และ REST เข้ามาพวกเขาเป็นวิธีมาตรฐานที่คุณเลือกสื่อสารกับเว็บเซอร์วิส

สบู่:

SOAPใช้ XML ภายในเพื่อส่งข้อมูลไปมา ข้อความ SOAP มีโครงสร้างที่เข้มงวดและ XML การตอบสนองจะต้องมีการแยกวิเคราะห์ WSDLเป็นข้อกำหนดของคำขอใดที่สามารถทำได้ด้วยพารามิเตอร์ใดและสิ่งใดที่พวกเขาจะส่งคืน เป็นข้อกำหนดที่สมบูรณ์ของ API ของคุณ

ส่วนที่เหลือ:

REST เป็นแนวคิดการออกแบบ

เวิลด์ไวด์เว็บเป็นการนำระบบที่ใหญ่ที่สุดมาใช้ให้สอดคล้องกับรูปแบบสถาปัตยกรรม REST

มันไม่เข้มงวดเท่ากับ SOAP บริการเว็บสงบใช้ URIs มาตรฐานและวิธีการโทรไปยังเว็บเซอร์ เมื่อคุณร้องขอ URI มันจะส่งคืนการแทนของวัตถุซึ่งคุณสามารถดำเนินการตาม (เช่น GET, PUT, POST, DELETE) คุณไม่ จำกัด การเลือก XML เพื่อแสดงข้อมูลคุณสามารถเลือกอะไรก็ได้จริง ๆ (รวม JSON)

REST API ของ Flickr ดำเนินต่อไปและให้คุณส่งคืนรูปภาพได้เช่นกัน


JSONและXMLมีฟังก์ชันเทียบเท่าและตัวเลือกทั่วไป นอกจากนี้ยังมีเฟรมเวิร์กที่ใช้ RPC เช่น GRPC ที่ใช้ Protobufs และ Apache Thrift ที่สามารถใช้สำหรับการสื่อสารระหว่างผู้ผลิต API และผู้บริโภค รูปแบบที่พบบ่อยที่สุดที่ใช้โดยเว็บ API คือ JSON เพราะมันใช้งานง่ายและแยกวิเคราะห์ในทุกภาษา


36
คำตอบที่ยอดเยี่ยมจนถึงการคัดออกบน JSON vs XML รุ่นที่สมดุลมากขึ้นจะเป็น: XML และ JSON เป็นวิธีการจัดลำดับข้อมูล XML นั้นมีความยืดหยุ่นมากกว่าและมีมาตรฐานจำนวนมากที่ออกแบบมาโดยรอบ แต่บางคนรู้สึกว่าซับซ้อนเกินไปและ verbose JSON เป็นรูปแบบที่ง่ายกว่าซึ่งกำหนดโครงสร้างพื้นฐานบางอย่างในรูปแบบย่อซึ่งใช้งานง่ายสำหรับโครงสร้างข้อมูลที่ไม่เป็นทางการ บางคนทำงานกับมาตรฐานด้านบนเพื่อทำซ้ำสิ่งที่มีอยู่บนสุดของ XML
IMSoP

30

WSDL : ย่อมาจากคำอธิบายบริการเว็บภาษา

ใน SOAP (โปรโตคอลการเข้าถึงวัตถุอย่างง่าย) เมื่อคุณใช้บริการเว็บและเพิ่มบริการเว็บในโครงการของคุณแอปพลิเคชันไคลเอ็นต์ของคุณไม่ทราบเกี่ยวกับฟังก์ชั่นบริการเว็บ ทุกวันนี้มันเป็นแบบเก่าและสำหรับไคลเอนต์แต่ละประเภทคุณต้องใช้WSDLไฟล์ที่แตกต่างกัน ตัวอย่างเช่นคุณไม่สามารถใช้ไฟล์เดียวกัน.Netและphpไคลเอนต์ WSDLแฟ้มมีรายละเอียดบางอย่างเกี่ยวกับฟังก์ชั่นบริการเว็บ XMLชนิดของไฟล์นี้คือ เป็นทางเลือกสำหรับSOAPREST

ส่วนที่เหลือ : แทนการถ่ายโอนสถานะผู้แทน

เป็นอีกหนึ่งบริการ API ที่ใช้งานง่ายสำหรับลูกค้า พวกเขาไม่จำเป็นต้องมีนามสกุลไฟล์พิเศษเช่นWSDLไฟล์ การดำเนินการ CRUD สามารถนำไปปฏิบัติได้หลายอย่างHTTP Verbs(GET สำหรับการอ่าน, POST สำหรับการสร้าง, PUT หรือ PATCH สำหรับการอัปเดตและลบสำหรับการลบเอกสารที่ต้องการ), พวกเขาจะขึ้นอยู่กับHTTPโปรโตคอลและส่วนใหญ่เวลาตอบสนองอยู่ในรูปแบบJSONหรือ XMLในทางกลับกันแอปพลิเคชันไคลเอนต์จะต้องเรียกที่เกี่ยวข้องHTTP Verbผ่านชื่อพารามิเตอร์และประเภทที่แน่นอน เนื่องจากไม่มีไฟล์พิเศษสำหรับการกำหนดเช่นWSDLนั้นมันเป็นงานที่ต้องใช้ด้วยตนเองโดยใช้จุดปลาย แต่มันไม่ใช่เรื่องใหญ่เพราะตอนนี้เรามีปลั๊กอินมากมายสำหรับ IDE ที่แตกต่างเพื่อสร้างการใช้งานฝั่งไคลเอ็นต์

SOA : ย่อมาจากสถาปัตยกรรมเชิงบริการ

รวมการเขียนโปรแกรมทั้งหมดที่มีแนวคิดเกี่ยวกับเว็บเซอร์วิสและสถาปัตยกรรม ลองนึกภาพว่าคุณต้องการใช้แอปพลิเคชันขนาดใหญ่ วิธีปฏิบัติหนึ่งอาจมีบริการต่าง ๆ ที่เรียกว่า micro-services และกลไกการสมัครทั้งหมดจะเรียกบริการเว็บที่ต้องการในเวลาที่เหมาะสม ทั้งสองRESTและบริการเว็บเป็นชนิดของSOAPSOA

JSON : ย่อมาจากjavascript Object Notation

เมื่อคุณทำให้เป็นวัตถุสำหรับจาวาสคริปต์ประเภทของรูปแบบวัตถุคือ JSON ลองนึกภาพว่าคุณมีระดับมนุษย์:

class Human{
 string Name;
 string Family;
 int Age;
}

และคุณมีบางกรณีจากคลาสนี้:

Human h1 = new Human(){
  Name='Saman',
  Family='Gholami',
  Age=26
}

เมื่อคุณทำให้วัตถุ h1 เป็นอนุกรมกับ JSON ผลลัพธ์คือ:

  [h1:{Name:'saman',Family:'Gholami',Age:'26'}, ...]

javascriptสามารถประเมินรูปแบบนี้ตามeval()ฟังก์ชั่นและสร้างอาเรย์แบบเชื่อมโยงได้จากJSONสตริงนี้ อันนี้เป็นแนวคิดที่แตกต่างเมื่อเปรียบเทียบกับแนวคิดอื่น ๆ ที่ฉันเคยอธิบายไว้ก่อนหน้านี้


คำตอบนี้มีข้อผิดพลาดเล็กน้อย (เช่น HTML <> HTTP)
Yassin Hajaj

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