WCF กับ ASP .Net Web API


93

ข้อดีข้อเสียของการใช้แต่ละเทคโนโลยีคืออะไร?

ขณะนี้ WCF Web Api ได้รวมเข้ากับ Asp.net Asp.net web api รองรับการโฮสต์ด้วยตนเองแล้ว

ฉันยังคงจินตนาการว่าหากฉันต้องการเปิดเผยสกีมาโปรโตคอลหลายตัวสำหรับการดำเนินการเดียวกันฉันจะยังคงเอนเอียงไปที่ WCF หรือจุดสิ้นสุด Mvc สามารถทำเช่นนี้ได้หรือไม่

API เว็บ Asp.Net ใหม่ยังแสดง Wsdl หรือไม่ หากไม่ลูกค้าจะทราบได้อย่างไรว่ามีการดำเนินการใดบ้าง

คุณสมบัติที่ดีที่สุดของ Mvc คือ modelbinder ประสิทธิภาพเทียบเท่า WCF แค่ไหน?

มีใครช่วยบอกหน่อยได้ไหมว่า api เว็บ Asp.net นำมาสู่ตารางได้เปรียบอย่างไร WCF ดูเหมือนจะเป็นทางเลือกที่ทรงพลัง / ปรับขนาดได้มากกว่า imo เกี่ยวกับสิ่งเดียวที่ Mvc Web Api มีเหนือรูปแบบ WCF อาจเป็นเรื่องง่ายในการพัฒนา แต่นั่นหมายถึงการหมอบหากมันเป็นข้อ จำกัด ในการออกแบบที่ร้ายแรง


15
ฉันพบว่าชื่อของคำถามนี้ทำให้เข้าใจผิดเล็กน้อย ชื่อคือ "MVC 4 vs Wcf Web Api" แต่ดูเหมือนว่าคำถามจะเกี่ยวข้องกับ WCF กับ ASP .Net Web API มากกว่า จากชื่อฉันคิดว่าสิ่งที่ถูกเปรียบเทียบคือเฟรมเวิร์ก MVC 4 มาตรฐาน (ตัวควบคุมโมเดลมุมมอง) เทียบกับ ASP .Net Web API framework ใครพบว่าชื่อนี้ทำให้เข้าใจผิด?
BruceHill

คำตอบ:


72

ก่อนอื่นฉันขอแนะนำให้คุณอ่านโพสต์ของฉันในหัวข้อ: http://blogs.microsoft.co.il/blogs/idof/archive/2012/03/05/wcf-or-asp-net-web-apis-my- สองเซนต์บนหัวเรื่อง. aspx

เกี่ยวกับคำถาม WSDL ของคุณ - เนื่องจาก WebApi ไม่ใช้ SOAP จึงไม่ต้องใช้ WSDL และไม่ต้องส่งออก คุณสามารถใช้ Hypermedia เพื่อส่งคืนทรัพยากรพร้อมรายการ URL ของกิจกรรมที่เป็นไปได้ (คิดว่าเป็นทรัพยากรที่อธิบายตัวเอง)


6
นั่นเป็นการเขียนที่ดีมาก ที่ดีที่สุดที่ฉันเคยเห็น แต่ตอนนี้ฉันสับสนมากขึ้นกว่าเดิม WebApi เพิ่มจำนวนมาก แต่การไม่สามารถเปิดเผยจุดสิ้นสุดอื่น ๆ ดูเหมือนจะมีข้อ จำกัด มาก หากคุณมีลูกค้าที่สามารถใช้สบู่ได้ตอนนี้พวกเขาจะถูกบังคับให้สร้างการกระทำและแยกวิเคราะห์ผลลัพธ์ด้วยมือเมื่อสบู่สามารถสร้างบริบททั้งหมดให้กับพวกเขาได้ นอกจากนี้คุณยังจะล็อคพวกเขาจากคุณสมบัติ Soap ขั้นสูงเช่นเซสชันที่เชื่อถือได้และการทำธุรกรรมกรด ... ถอนหายใจ
Alwyn

2
@Alwyn - ฉันคิดว่าข้อเท็จจริงทั้งหมดที่คุณกล่าวมาเป็นความจริงดังนั้นจึงไม่ควรทำให้คุณสับสน แต่จะช่วยให้คุณตัดสินใจได้ดีกว่า - Web API มีข้อดีในตัวเอง แต่หากบริการของคุณจำเป็นต้องเปิดเผยจากปลายทางหลายจุดรวมถึงโปรโตคอลอื่น ๆ หรือคุณมีความต้องการอย่างมากสำหรับคุณสมบัติการสร้างอัตโนมัติของไคลเอ็นต์หรือคุณสมบัติขั้นสูงของสบู่ - สิ่งเหล่านี้อาจเป็นข้อพิจารณาว่าทำไมถึงเลือกใช้ WCF มากกว่า Web API
BornToCode

@BornToCode: รหัสไคลเอ็นต์สามารถสร้างขึ้นโดยอัตโนมัติด้วย WebAPI คุณสามารถสร้างไฟล์ json แบบผยองโดยใช้รหัส WebAPI จากนั้นไฟล์ json นั้นสามารถใช้โดยตัวสร้างโค้ดเช่น swagger-codegen เพื่อสร้างรหัสไคลเอ็นต์ในภาษาเป้าหมายจำนวนมาก
เว้นว่างไว้โดยไม่ได้ตั้งใจ

@unintentionallyleftblank - IMHO ยังคง "เป็นมิตรกับผู้ใช้" มากกว่าที่จะสร้างรหัสไคลเอนต์อัตโนมัติผ่าน WCF มากกว่า Web API
BornToCode

15

ทางเลือกขึ้นอยู่กับสิ่งที่เราต้องการทำ

  1. ASP.NET Web API เป็นเฟรมเวิร์กสำหรับการสร้างบริการที่ไม่ใช่ SOAP ผ่าน HTTP เท่านั้นดังนั้นจึงไม่มีโปรโตคอลการขนส่งที่พร้อมใช้งานโดยใช้เฟรมเวิร์กนี้
  2. WCF / Windows Communication Foundation เป็นเฟรมเวิร์กสำหรับการแลกเปลี่ยนข้อความที่ใช้ SOAP - ที่นี่เราใช้โปรโตคอลการขนส่งจำนวนมาก: HTTP, TCP, Named ไปป์, MSMQ และอื่น ๆ ...

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


2
ไม่มีความผิด แต่ HTTP เป็นเพียงโปรโตคอลชั้นแอปพลิเคชัน ไม่มีข้อ จำกัด โดยเนื้อแท้เกี่ยวกับสิ่งที่สามารถใช้โปรโตคอลเลเยอร์การขนส่ง
smwikipedia

8

WCF Web API เน้นการใช้งาน REST เป็นหลัก หากคุณกำลังตั้งค่าการใช้งาน REST บิต WCF มาตรฐานจะค่อนข้างเจ็บปวดที่ด้านหลัง หากคุณกำลังตั้งค่าบริการ RESTful คุณจะพบว่า WCF Web API เป็นประสบการณ์ที่ดีกว่ามาก หากคุณกำลังตั้งค่าบริการ SOAP แสดงว่า WCF Web API ไม่ใช่เพื่อนที่ดีที่สุดของคุณและคุณควรใช้ WCF สำหรับบริการของคุณ


2
ใช่การกำหนดค่าเป็นความเจ็บปวด แต่เป็นการตั้งค่าครั้งเดียว เมื่อคุณทำเสร็จแล้วคุณสามารถคัดลอกและวางพฤติกรรม / ปลายทางไปยังบริการอื่นได้ เวลาส่วนใหญ่ที่คุณได้รับจากการติดแท็กการทำงานใหม่ด้วย WebGet ในทางกลับกันหากคุณได้รับไคลเอนต์ที่ต้องการใช้ Soap + Wsdl ทั้งหมดนี้เป็นเพียงการเปลี่ยนแปลง config ซึ่งตรงข้ามกับ code + deploy + QA + ที่เหลือ แล้ว Mvc Web Api ดีกว่าอย่างไร
Alwyn

1
หากคุณพอใจกับ WCF อยู่แล้วคุณสามารถดำเนินการต่อในเส้นทางนั้นได้ นอกจากนี้ยังมีการปรับปรุงภายในบางอย่างของ REST ใน WCF Web API (ฉันไม่มีรายการอยู่ข้างหน้าฉัน) แต่ก็สามารถใช้งานได้และฉันจะไม่ใช้เวลาหลายสัปดาห์ในการปรับโครงสร้างใหม่หากคุณมี บริการการทำงานโดยเฉพาะ เนื่องจากมีการปรับเปลี่ยนกระบวนทัศน์ในการคิดเล็กน้อย อย่างไรก็ตามสำหรับการทำงานในอนาคตฉันจะพิจารณา WCF Web API อย่างไรก็ตาม แต่ฉันใช้ WCF Web API มาระยะหนึ่งแล้วดังนั้นฉันอาจจะมีอคติ
Gregory A Beamer

0

ใช้ WCF สำหรับไซต์อินทราเน็ต / B2B n Web API สำหรับไซต์ B2C / C2C / อินเทอร์เน็ต ... SOAP / XML ยังคงเป็นมาตรฐานสำหรับการสื่อสารภายในธุรกิจและจะไม่หายไปไหน !!!

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