Web API ใช้ประโยชน์จากโปรโตคอล http มากขึ้น Odata เป็นมาตรฐานแบบเปิดที่โอบล้อมด้วยผู้เล่นจำนวนมาก ฉันสามารถพูดได้จากประสบการณ์ของฉันที่เล่นกับ Odata และเพิ่งค้นพบ Web API และทำการวิจัย
OData เจ๋งเพราะเป็นมาตรฐานจริง คุณสามารถสร้างฐานข้อมูลและเปิดเผยผ่าน HTTP ได้อย่างง่ายดาย ซึ่งหมายความว่าคุณสามารถสำรวจโครงสร้างตารางของคุณโดยไม่มีการกำหนดค่าใด ๆ (ฉันพูดแบบนั้นหลวม ๆ ) นอกจากนี้คุณยังสามารถเรียกใช้แบบสอบถามผ่าน URL ซึ่งอาจรวมถึงแสง LINQ บางส่วน:
/products/orders/[put some linq-ish query here]
นี่เป็นเนื้อหาที่ดีหรือไม่ดี การรับรองความถูกต้องเป็นมาตรฐานและสร้างขึ้นมา
Web API น่าสนใจมากขึ้นจากมุมมองของฉัน มันใช้ฟังก์ชั่น HTTP (ข้อความแสดงข้อผิดพลาดและอื่น ๆ ) และเป็นบิต "ดั้งเดิม" สำหรับคำขอ RESTful จริง ฉันไม่ได้เล่นกับมันมากเกินไป .. แต่ฉันอ่านไปแล้วและมี "ได้ยิน" ที่ MVC และ Web API อาจ "แต่งงาน" สักวันหนึ่งอาจจะดีบางที ...
เมื่อฉันเล่นกับ OData ฉันสร้าง Stored Proc แมปเข้ากับพื้นผิวเอนทิตีกำหนดค่าประเภทการส่งคืนที่แข็งแกร่งแล้วติดเข้ากับคำขอ URL และ BANG มีคำขอ RESTful ของฉันถูกจับคู่กับผลลัพธ์ที่พิมพ์ของฉันที่เก็บไว้ proc มันค่อนข้างตรงไปตรงมาและฉันก็สามารถได้สิ่งที่ฉันต้องการ
ในบทสรุป
ฉันไม่ได้มีโอกาสเล่นกับ WCF API ในรายละเอียดมากเกินไป แต่ฉันจะบอกว่ามันเป็นวิธีที่จะไปสู่การพัฒนาลูกค้าเนื่องจากเป็นวิธีที่พิถีพิถันมากกว่า REST หากคุณกำลังจะทำการโทรกลับไปกลับมามากขึ้นหรือน้อยลงและดึง "ดูแบบจำลอง" มันจะให้การตอบสนองแบบดั้งเดิมมากขึ้น
ในทางกลับกัน. หากคุณกำลังทำการสืบค้นที่ซับซ้อน (ish) กับข้อมูลตามการโต้ตอบของไคลเอ็นต์และคุณต้องการ "สร้าง" ตรรกะการสืบค้นและส่งผ่านเป็นพารามิเตอร์ Odata จะทำงานได้
วิธีที่ฉันดูคือถ้าฉันต้องการเปิดเผยข้อมูลของฉันในรูปแบบโครงสร้าง (หมายถึงโครงสร้างตาราง / ความสัมพันธ์) และจากนั้นสอบถามมันโดยตรงจากลูกค้าแล้ว Odata จะทำงานได้ดีที่สุด นอกจากนี้ยังเป็นสิ่งที่ดีสำหรับการอนุญาตให้ "อื่น ๆ " เข้าถึงข้อมูล (ด้วยการรับรองความถูกต้องที่เหมาะสม ฯลฯ ) ซึ่งเป็นสาเหตุที่เป็นไปตามโปรโตคอล OData
หากคุณต้องการคำขอสงบที่กำหนด URL (/ ผลิตภัณฑ์ / คำสั่ง / 22) และสร้าง "ชุดผลลัพธ์" ที่ซับซ้อนจากรหัสที่ได้รับการจัดการ "ซ่อน" และโครงสร้างข้อมูลและคุณอาจได้รับประโยชน์จากข้อความตอบกลับ HTTP ดังนั้น Web API น่าจะเป็นทางออกที่ดีที่สุด ..
อีกครั้งนี่คือทั้งหมดที่มาจากการวิจัยและการทำของเล่น ฉันยังไม่ได้ติดตั้งในสถานการณ์แอปที่ใช้งานจริง / เต็มรูปแบบ ฉันคิดว่าพวกเขาทั้งคู่จะมีจุดแข็งและจุดอ่อนและมีบางอย่างทับซ้อนกันอย่างแน่นอน