ความแตกต่างระหว่าง OData และ REST เว็บเซอร์วิส


196

ขณะที่มองในด้านการบริการเว็บบางอย่างผมวิ่งข้ามเทคโนโลยีนี้ "ใหม่" ที่ไมโครซอฟท์เรียกOData การอ่านคำอธิบายของพวกเขาภายในคำถามที่พบบ่อยเกี่ยวกับสิ่งที่เป็น OData ฉันมีเวลายากที่จะแยกแยะ OData จากเว็บเซอร์วิส REST-ful ใครช่วยได้โปรดช่วยฉันเข้าใจความแตกต่าง


2
หนึ่งคือผู้ผลิตอื่น ๆ ที่เปิดใช้งานสำหรับผู้บริโภค
Kangkan

คำตอบ:


98

อัปเดต คำเตือนคำตอบนี้ล้าสมัยไปแล้วในขณะนี้ที่ OData V4 พร้อมใช้งาน


ผมเขียนโพสต์เกี่ยวกับเรื่องนี้ขณะที่ผ่านมาที่นี่

ดังที่ Franci กล่าวว่า OData อ้างอิงจาก Atom Pub อย่างไรก็ตามพวกเขาได้วางฟังก์ชันบางอย่างไว้ด้านบนและน่าเสียดายที่ไม่สนใจข้อ จำกัด ของ REST ในกระบวนการ

ความสามารถในการสอบถามของบริการ OData ต้องการให้คุณสร้าง URIs ตามข้อมูลที่ไม่พร้อมใช้งานหรือเชื่อมโยงกับการตอบสนอง มันเป็นสิ่งที่คน REST เรียกใช้ข้อมูลนอกวงดนตรีและแนะนำการมีเพศสัมพันธ์ที่ซ่อนอยู่ระหว่างไคลเอนต์และเซิร์ฟเวอร์

การมีเพศสัมพันธ์อื่น ๆ ที่แนะนำคือการใช้ข้อมูลเมตา EDMX เพื่อกำหนดคุณสมบัติที่มีอยู่ในเนื้อหารายการ ข้อมูลเมตานี้สามารถค้นพบได้ที่ปลายทางคงที่ชื่อ $ metadata อีกครั้งลูกค้าจำเป็นต้องรู้สิ่งนี้ล่วงหน้าไม่สามารถค้นพบได้

น่าเสียดายที่ Microsoft ไม่เห็นสมควรที่จะสร้างประเภทสื่อเพื่ออธิบายข้อมูลชิ้นสำคัญเหล่านี้ดังนั้นลูกค้า OData ทุกคนต้องทำข้อสันนิษฐานเกี่ยวกับบริการที่พูดคุยและข้อมูลที่ได้รับ


1
@felickz ขออภัยด้วย ฉันมีปัญหา DNS มันควรจะทำงานตอนนี้ หรือจะเป็นเมื่อแคช DNS ของคุณหมดอายุ
Darrel Miller

6
จริงนี้คือจากวันที่ V3 ของ OData ได้เพิ่ม 'JSON Light' ซึ่งเน้นทั้งข้อกังวลเหล่านี้ (ซึ่งเป็นเพียงข้อเดียว) นั่นคือ $ metadata คือวิธีที่คุณรู้วิธีสร้างคิวรีดังนั้นสิ่งที่ขาดหายไปคือลิงก์ไปยัง $ metadata ในการแสดงทรัพยากร ที่ได้รับการเพิ่มดังนั้นปัญหาทั้งสองหายไปในครั้งเดียว
Alex James

10
@DarrelMiller คุณพูดว่าคำตอบของคุณล้าสมัยแล้ว สนใจที่จะเพิ่มความคิดเห็นของคุณในหัวข้อนี้หรือไม่? ฉันยังคงสนใจที่จะทราบความแตกต่างระหว่าง OData 4 และ REST ขอบคุณมาก
Kurren

2
@Kurren มันอยู่ในรายการที่ต้องทำของฉัน แต่น่าเสียดายที่มันเป็นรายการยาว
Darrel Miller

2
@DarrelMiller หวังว่าคุณจะมีเวลาในการอัพเดทโพสต์เร็ว ๆ นี้เพื่อให้ทันสมัยกับ OData V4
LCJ

64

โปรโตคอล OData สร้างขึ้นที่ด้านบนของโปรโตคอล AtomPub โปรโตคอล AtomPub เป็นหนึ่งในตัวอย่างที่ดีที่สุดของการออกแบบ REST API ดังนั้นในแง่ที่คุณคิดถูก - OData เป็นเพียง REST API อื่นและการใช้งานแต่ละ OData เป็นบริการเว็บ REST-ful

ข้อแตกต่างคือ OData เป็นโปรโตคอลเฉพาะ REST เป็นรูปแบบสถาปัตยกรรมและรูปแบบการออกแบบ


ฉันอาจจะผิดเกี่ยวกับเรื่องนี้ (เพิ่งเริ่มเรียนรู้เกี่ยวกับ odata) แต่เป็นรุ่นที่ 3 ของ [โปรโตคอล] [ odata.org/documentation]มันปรากฏขึ้นนอกจากนี้ยังมีรูปแบบ JSON ที่ระบุซึ่งคุณสามารถใช้หรือ คุณเห็นแสงนี้ได้ไหม
โยฮันเนสรูดอล์ฟ

1
@JohannesRudolph จริงๆแล้วฉันไม่มีความคิด ฉันไม่ได้ดู OData ในช่วงสองปีที่ผ่านมา แต่มีโอกาสมากที่ Microsoft จะเพิ่มการสนับสนุน JSON โปรดทราบว่าสิ่งนี้ไม่ได้เปลี่ยนแปลงการตอบสนองใด ๆ ที่นี่ JSON vs XML เป็นเพียงการนำเสนอทรัพยากร REST
Franci Penov

1
คุณสามารถระบุในคำขอรูปแบบที่คุณต้องการ XML และ JSON ควรได้รับการสนับสนุนจากการใช้งานส่วนใหญ่โดยการตั้งค่าส่วนหัว Accept เป็น application / json (เริ่มจาก OData เวอร์ชัน 2)
i000174

32

REST เป็นเทคนิคการออกแบบทั่วไปที่ใช้เพื่ออธิบายวิธีการเข้าถึงเว็บเซอร์วิส การใช้ REST คุณสามารถร้องขอ HTTP เพื่อรับข้อมูลได้ หากคุณลองในเบราว์เซอร์ของคุณมันก็เหมือนกับการไปที่เว็บไซต์ยกเว้นกลับไปที่หน้าเว็บคุณจะได้รับ XML กลับมา บริการบางอย่างจะส่งคืนข้อมูลในรูปแบบ JSON ซึ่งง่ายต่อการใช้กับ Javascript

OData เป็นเทคโนโลยีเฉพาะที่เปิดเผยข้อมูลผ่าน REST

ถ้าคุณต้องการที่จะสรุปมันอย่างรวดเร็วจริงคิดว่ามันเป็น:

  • REST - รูปแบบการออกแบบ
  • OData - เทคโนโลยีที่เปิดใช้งาน

REST ไม่ได้ จำกัด เพียง HTTP หรือเว็บ
user27874

20

ในปี 2012 OData ได้รับมาตรฐานดังนั้นฉันจะเพิ่มการอัปเดตที่นี่ ..

คำจำกัดความแรก:

REST - เป็นสถาปัตยกรรมของวิธีการส่งข้อความผ่าน HTTP

OData V4 - เป็นการใช้งานเฉพาะของ REST จริง ๆ กำหนดเนื้อหาของข้อความในรูปแบบต่าง ๆ (ปัจจุบันฉันคิดว่าเป็น AtomPub และ JSON) ODataV4 ปฏิบัติตามหลักการพักผ่อน

ตัวอย่างเช่นคน asp.net ส่วนใหญ่จะใช้ตัวควบคุม WebApi เพื่อทำให้เป็นอันดับ / ดีซีเรียลไลซ์วัตถุใน JSON และให้จาวาสคริปต์ทำอะไรบางอย่างกับมัน จุดของ Odata สามารถสืบค้นโดยตรงจาก URL ด้วยตัวเลือกที่ไม่ต้องการ


REST ใช้ได้กับโปรโตคอลใด ๆ ไม่ใช่แค่ HTTP
user27874

10

จากเอกสาร OData :

OData Protocol เป็นโปรโตคอลระดับแอปพลิเคชันสำหรับการโต้ตอบกับข้อมูลผ่านทางเว็บเซอร์วิส RESTful

...

โพรโทคอล OData นั้นแตกต่างจากเว็บเซอร์วิสที่ใช้ REST อื่น ๆ ซึ่งจะให้วิธีการที่เหมือนกันในการอธิบายทั้งข้อมูลและตัวแบบข้อมูล


4

OData (Open Data Protocol) เป็นมาตรฐาน OASIS ที่กำหนดแนวทางปฏิบัติที่ดีที่สุดสำหรับการสร้างและใช้ RESTful APIs OData ช่วยให้คุณมุ่งเน้นไปที่ตรรกะทางธุรกิจของคุณในขณะที่สร้าง RESTful APIs โดยไม่ต้องกังวลเกี่ยวกับวิธีการกำหนดส่วนหัวคำขอและตอบสนอง, รหัสสถานะ, วิธีการ HTTP, อนุสัญญา URL, ประเภทสื่อ, รูปแบบโหลดและตัวเลือกการสืบค้นเป็นต้น การติดตามการเปลี่ยนแปลงการกำหนดฟังก์ชั่น / การดำเนินการสำหรับขั้นตอนการใช้ซ้ำได้และการส่งคำขอแบบอะซิงโครนัส / แบทช์เป็นต้นนอกจากนี้ OData ยังมีระบบอำนวยความสะดวกสำหรับการขยายเพื่อตอบสนองความต้องการที่กำหนดเอง

OData RESTful API นั้นใช้งานง่าย OData Metadata ซึ่งเป็นคำอธิบายที่เครื่องอ่านได้ของโมเดลข้อมูลของ API ช่วยให้สามารถสร้างพร็อกซีและเครื่องมือไคลเอ็นต์ทั่วไปที่มีประสิทธิภาพ บางคนสามารถช่วยคุณโต้ตอบกับ OData ได้โดยไม่ต้องรู้อะไรเกี่ยวกับโปรโตคอล 6 ขั้นตอนต่อไปนี้แสดงให้เห็นถึงสถานการณ์ที่น่าสนใจ 6 ประการของการใช้ OData ในแพลตฟอร์มการเขียนโปรแกรมที่แตกต่างกัน แต่ถ้าคุณไม่ใช่ผู้พัฒนาและอยากจะเล่นกับ OData เพียงอย่างเดียว XOData คือจุดเริ่มต้นที่ดีที่สุดสำหรับคุณ

สำหรับรายละเอียดเพิ่มเติมได้ที่http://www.odata.org/



2

RESTย่อมาจากRE presentational S tate T ransfer ซึ่งเป็นรูปแบบสถาปัตยกรรมที่ใช้ทรัพยากร ทรัพยากรที่ใช้หมายถึงข้อมูลและฟังก์ชันที่ถือเป็นทรัพยากร

ODataเป็นโปรโตคอลบนเว็บที่กำหนดชุดของแนวปฏิบัติที่ดีที่สุดสำหรับการสร้างและใช้บริการเว็บสงบ OData เป็นวิธีการสร้างบริการเว็บสงบดังนั้นการใช้งานของ REST

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