ความแตกต่างระหว่าง WCF และเว็บ API
WCF คืออะไร?
WCF ย่อมาจาก Windows การสื่อสาร Foundationใช้เพื่อสร้างแอปพลิเคชันแบบกระจายและทำงานร่วมกันได้ WCF เป็นแพลตฟอร์มที่มีประสิทธิภาพในการพัฒนาแอปพลิเคชันแบบเน้นบริการ ช่วยให้นักพัฒนาสามารถสร้างโซลูชันการพัฒนาที่ปลอดภัย เชื่อถือได้ และมีโปรไฟล์สูง ซึ่งสามารถบูรณาการข้ามแพลตฟอร์มและทำงานร่วมกับการลงทุนที่มีอยู่ได้
เว็บ API คืออะไร?
ASP.NET Web API เป็นเฟรมเวิร์กที่ช่วยให้คุณสร้างบริการ HTTP สำหรับเบราว์เซอร์และอุปกรณ์มือถือ เป็นแพลตฟอร์มที่เหมาะสำหรับการพัฒนา แอปพลิเคชั่นที่เหลือ บน ASP .NET Framework
ASP.NET Web API เป็นกรอบงานที่สามารถขยายได้สำหรับการสร้างบริการบน HTTP ที่สามารถเข้าถึงได้ในแอปพลิเคชันต่างๆ บนแพลตฟอร์มต่างๆ เช่น เว็บ, Windows, อุปกรณ์พกพา เป็นต้น
ความแตกต่างที่สำคัญ
- WCF เสนอบริการร้องขอ-ตอบกลับ แบบทางเดียว หรือแบบดูเพล็กซ์ ในขณะที่ Web API นั้นตามค่าเริ่มต้นจะให้บริการร้องขอ-ตอบกลับเท่านั้น
- WCF ใช้สำหรับการพัฒนาบริการที่ใช้ SOAP ในขณะที่ Web API ใช้สำหรับทั้งบริการที่ใช้ SOAP และ RESTful
- WCF ไม่ให้การสนับสนุนคุณสมบัติ MVC ในขณะที่ Web API รองรับคุณสมบัติ MVC
- WCF รองรับ HTTP, UDP และโปรโตคอลการขนส่งแบบกำหนดเอง ในขณะที่ Web API รองรับโปรโตคอล HTTP เท่านั้น
- WCF ให้การสนับสนุนการเข้ารหัสข้อความ, MTOM และ Binary ในขณะที่ Web API รองรับรูปแบบการเข้ารหัส UTF-8
- WCF รองรับคิวข้อความ, การรักษาความปลอดภัยข้อความ, การสื่อสารแบบสองทาง, การทำธุรกรรม ในขณะที่ Web API ไม่รองรับ
- WCF ย่อมาจาก Windows การสื่อสาร Foundation ในขณะที่ API ย่อมาจาก Application Program Interface
ทำไมต้องใช้ WCF?

นี่คือข้อดี/ประโยชน์ของการใช้ WCF:
- WCF เป็นตัวเลือกที่เหมาะสมที่สุดหากคุณวางแผนจะใช้ .NET Framework 3.5
- WCF รองรับหลายโปรโตคอล เช่น HTTP, TCP, เนมไปป์
- บริการ WCF มีประโยชน์หากคุณต้องการสร้างบริการที่มีมาตรฐาน เช่น การรักษาความปลอดภัยการส่งข้อความธุรกรรมและการรักษาความปลอดภัยข้อความที่เชื่อถือได้
- คุณสามารถใช้รูปแบบการแลกเปลี่ยนข้อความแบบร้องขอ-ตอบกลับ แบบทางเดียว และแบบดูเพล็กซ์ กับ WCF ได้
เหตุใดจึงใช้เว็บ API
นี่คือข้อดี/ประโยชน์ของการใช้ web API:
- Web API ให้การสนับสนุนการดำเนินการ CRUD ตามแบบแผนเนื่องจากทำงานร่วมกับกริยา HTTP ( GET, PUT, POST และ DELETE)
- ง่ายต่อการกำหนด เปิดเผย และใช้ในลักษณะ REST-ful
- ASP.Net Web API ช่วยให้คุณสามารถแสดงข้อมูลและบริการของคุณไปยังอุปกรณ์ต่างๆ
- Web API เป็นโอเพ่นซอร์ส ดังนั้นจึงเป็นตัวเลือกที่เหมาะสำหรับการสร้างบริการ RESTful บนแพลตฟอร์ม .NET
- ช่วยให้คุณสามารถพัฒนาบริการเว็บแบบแยกส่วนและปรับขนาดได้ ซึ่งนักพัฒนารายอื่นสามารถแชร์และนำไปใช้เพื่อเข้าถึงบริการเว็บได้
- การสร้างบริการ HTTP แบบเรียบง่ายที่ไม่ใช่ SOAP ยังมีประโยชน์อีกด้วย
ลักษณะของ WCF
- การขนส่งที่กำหนดค่าได้สูง
- ตัวเลือกที่ดีกว่าสำหรับการทำให้เป็นอนุกรม
- บูรณาการอย่างดีกับ IIS
- ง่ายสำหรับการโฮสต์ด้วยตนเอง
- ข้อมูลเมตาที่สมบูรณ์มาก
- แบบจำลองที่ซับซ้อนสำหรับการตีพิมพ์
- สัญญาข้อมูลที่หลากหลาย
ลักษณะของเว็บ API
- เชื่อมต่อกับ HTTP อย่างแน่นหนา
- ทดสอบง่าย
- เสนอการสนับสนุนสำหรับการเจรจาต่อรองเนื้อหา
- อนุญาตการจัดรูปแบบปลายเปิด
- ไม่มีการพึ่งพาแพลตฟอร์ม
- การวางแนวทรัพยากรที่มั่นคง
- ประสบการณ์ระดับ 2 พร้อมการสนับสนุนไฮเปอร์มีเดียที่เพิ่งเกิดขึ้น
WCF กับบริการเว็บ
| พารามิเตอร์ | WCF | เว็บ API |
|---|---|---|
| รูปแบบการแลกเปลี่ยนข้อความ | ขอคำตอบแบบทางเดียวหรือแบบสองทาง | โดยค่าเริ่มต้น การร้องขอ-ตอบกลับเท่านั้น อย่างไรก็ตาม สามารถรองรับรูปแบบข้อความเพิ่มเติมได้ด้วยการรวมเว็บซ็อกเก็ต |
| โฮสติ้ง | IIS โฮสติ้ง บริการโฮสติ้งด้วยตนเองและเปิดใช้งานการทำงาน | โฮสติ้งด้วยตนเองและโฮสติ้ง IIS |
| โอเพนซอร์ส | ไม่ใช่ซอฟต์แวร์โอเพ่นซอร์ส | มันมาพร้อมกับ.Net framework และยังมีให้ดาวน์โหลดแบบอิสระอีกด้วย |
| รองรับคุณสมบัติ MVC | WCF ไม่ให้การสนับสนุนคุณสมบัติ MVC เช่น ตัวควบคุม การกำหนดเส้นทาง ตัวกรอง ผลการประมูล ฯลฯ | ASP.NET Web API รองรับคุณสมบัติ MVC เช่น การกำหนดเส้นทาง ตัวควบคุม ผลลัพธ์ ตัวกรอง การดำเนินการ ฯลฯ |
| รองรับการเข้ารหัส | ข้อความ, MTOM และไบนารี | การสนับสนุนเริ่มต้นสำหรับรูปแบบการเข้ารหัส UTF-8 |
| การสนับสนุนสำหรับ | รองรับ HTTP, UDP และโปรโตคอลการขนส่งแบบกำหนดเอง | รองรับโปรโตคอล HTTP เท่านั้น |
| การใช้งานโมเดล | โมเดลการเขียนโปรแกรมที่อิงตามคุณสมบัติของผู้ใช้ | จับคู่กริยา HTTP กับวิธีการ |
| องค์ประกอบ | ใช้ web.config และแอตทริบิวต์เพื่อกำหนดค่าคลาส HttpConfiguration แต่ไม่ใช่ในบริการ web.config | Web API สามารถกำหนดค่าได้โดยใช้บริการ web.config |
| สงบบริการ | มีการรองรับบริการ RESTFUL แต่มีข้อจำกัด | เหมาะสำหรับการสร้างบริการ RESTFUL |
ปัจจัยในการตัดสินใจสำหรับ WCF กับ Web API
ต่อไปนี้เป็นรายการตรวจสอบด่วนเพื่อช่วยในการพิจารณาว่าจะใช้ WCF หรือ Web API
| สถานการณ์ | WCF4.5 | ASP.NET เว็บ API |
|---|---|---|
| จำเป็นต้องมีการรองรับสถานการณ์ต่างๆ เช่น คิวข้อความ, การรักษาความปลอดภัยข้อความแบบครบวงจร, การสื่อสารแบบสองทาง, ธุรกรรมแบบกระจาย ฯลฯ | เลือก | อย่าเลือก |
| เมื่อคุณมีบริการ WCF ที่ใช้งานได้อยู่แล้ว และต้องการเพิ่มการรองรับ HTTP เพิ่มเติม | เลือก | อย่าเลือก |
| ฐานโค้ดเดียวที่ให้การสนับสนุนทั้งจุดสิ้นสุด SOAP และ RESTful | เลือก | อย่าเลือก |
| ต้องการสร้างบริการที่มุ่งเน้นทรัพยากรผ่าน HTTP | อย่าเลือก | เลือก |
| โปรเจ็กต์ของคุณเป็นแอปพลิเคชัน MVC และต้องการฟังก์ชันบางอย่างผ่าน HTTP | อย่าเลือก | เลือก |
| คุณต้องการสร้างเฉพาะบริการ HTTP / RESTful | อย่าเลือก | เลือก |

