ทำไมฉันตอบ:
ฉันใช้เวลาเป็นจำนวนมากในการทำความเข้าใจความแตกต่างระหว่างเทคโนโลยีทั้งสองนี้ ฉันจะใส่ประเด็นทั้งหมดที่นี่ที่ฉันคิดว่า "ถ้าฉันมีประเด็นเหล่านี้ในเวลาที่ฉันสงสัยในการค้นหาคำตอบนี้แล้วฉันได้ตัดสินใจก่อนหน้านี้มากในการเลือกเทคโนโลยีที่ต้องการของฉัน"
แหล่งข้อมูล:
Microsoft® Visual Studio® 2015 Unleashed
ISBN-13: 978-0-672-33736-9 ISBN-10: 0-672-33736-3
ทำไม ASP.NET Web API และ WCF:
ก่อนที่จะเปรียบเทียบเทคโนโลยีของ ASP.NET Web API และ WCF สิ่งสำคัญคือต้องเข้าใจว่าจริงๆแล้วมีสองรูปแบบ / มาตรฐานสำหรับการสร้างบริการเว็บ: REST (Representational State Transfer) และ SOAP / WSDL SOAP / WSDL เป็นมาตรฐานดั้งเดิมที่เว็บเซอร์วิสถูกสร้างขึ้น อย่างไรก็ตามมันใช้งานยากและมีรูปแบบข้อความขนาดใหญ่ (เช่น XML) ที่ประสิทธิภาพลดลง บริการที่ใช้ REST เป็นทางเลือกอย่างรวดเร็ว ง่ายต่อการเขียนเพราะใช้ประโยชน์จากโครงสร้างพื้นฐานของ HTTP (GET, POST, PUT, DELETE) และโดยทั่วไปจะใช้รูปแบบข้อความขนาดเล็ก (เช่น JSON) ดังนั้นบริการ HTTP ที่ใช้ REST จึงเป็นมาตรฐานสำหรับการเขียนบริการที่กำหนดเป้าหมายเว็บอย่างเคร่งครัด
มากำหนดวัตถุประสงค์ของ ASP.NET Web API
ASP.NET Web API เป็นเทคโนโลยีของ Microsoft สำหรับการพัฒนาบริการเว็บ HTTP ที่ใช้ REST (เมื่อไม่นานมานี้แทนที่ ASMX ของ Microsoft ซึ่งใช้ SOAP / WSDL) Web API ทำให้การเขียนบริการที่มีประสิทธิภาพนั้นง่ายขึ้นอยู่กับโปรโตคอล HTTP ที่เบราว์เซอร์และอุปกรณ์ดั้งเดิมเข้าใจ สิ่งนี้ช่วยให้คุณสร้างบริการเพื่อรองรับแอปพลิเคชันของคุณและเรียกใช้จากแอปพลิเคชันเว็บแท็บเล็ตโทรศัพท์มือถือพีซีและเครื่องเล่นเกมอื่น ๆ แอปพลิเคชั่นส่วนใหญ่ที่เขียนขึ้นในวันนี้เพื่อใช้ประโยชน์จากการเชื่อมต่อเว็บในปัจจุบันใช้บริการ HTTP ไม่ทางใดก็ทางหนึ่ง
ตอนนี้เรามากำหนดวัตถุประสงค์ของ WCF:
การสื่อสารผ่านอินเทอร์เน็ตนั้นไม่ใช่วิธีที่มีประสิทธิภาพที่สุดเสมอไป ตัวอย่างเช่นหากทั้งลูกค้าและบริการมีอยู่ในเทคโนโลยีเดียวกัน (หรือแม้แต่เครื่องเดียวกัน) พวกเขามักจะสามารถเจรจาต่อรองวิธีที่มีประสิทธิภาพมากขึ้นในการสื่อสาร (เช่น TCP / IP) นักพัฒนาบริการพบว่าตัวเองกำลังทำสิ่งเดียวกันกับที่พวกเขาพยายามหลีกเลี่ยง ตอนนี้พวกเขาจะต้องเลือกระหว่างการสร้างบริการภายในที่มีประสิทธิภาพและความสามารถในการเข้าถึงที่กว้างขวางผ่านทางอินเทอร์เน็ต และหากพวกเขาต้องสนับสนุนทั้งคู่พวกเขาอาจต้องสร้างบริการหลายรุ่นหรืออย่างน้อยก็แยกผู้รับมอบฉันทะเพื่อเข้าใช้บริการของพวกเขา ปัญหานี้เป็นปัญหาของ Microsoft แก้ไขได้ด้วย WCF
ด้วย WCF คุณสามารถสร้างบริการของคุณโดยไม่ต้องกังวลเรื่องขอบเขต จากนั้นคุณสามารถปล่อยให้ WCF กังวลเกี่ยวกับการเรียกใช้บริการของคุณในวิธีที่มีประสิทธิภาพสูงสุด เพื่อจัดการงานนี้ WCF ใช้แนวคิดของจุดปลาย บริการของคุณอาจมีหลายปลายทาง (กำหนดค่าในเวลาออกแบบหรือหลังการปรับใช้) แต่ละจุดปลายระบุวิธีที่บริการอาจสนับสนุนไคลเอ็นต์ที่เรียกใช้: ผ่านทางเว็บผ่านทาง remoting ผ่าน Microsoft Message Queuing (MSMQ) และอื่น ๆ WCF ช่วยให้คุณสามารถมุ่งเน้นไปที่การสร้างฟังก์ชั่นบริการของคุณ มันกังวลเกี่ยวกับวิธีการพูดคุยกับลูกค้าอย่างมีประสิทธิภาพมากที่สุด ด้วยวิธีนี้บริการ WCF เดียวสามารถรองรับลูกค้าได้หลายประเภท
ตัวอย่างของ WCF:
ลองพิจารณาตัวอย่าง:
ข้อมูลลูกค้าถูกแชร์ระหว่างแอปพลิเคชัน แต่ละแอปพลิเคชันอาจถูกเขียนบนแพลตฟอร์มที่แตกต่างกันและมันอาจมีอยู่ในตำแหน่งที่แตกต่างกัน คุณสามารถแยกส่วนต่อประสานลูกค้ากับบริการ WCF ที่ให้การเข้าถึงข้อมูลลูกค้าที่ใช้ร่วมกันโดยทั่วไป สิ่งนี้จะรวมศูนย์ข้อมูลลดการทำซ้ำลดการซิงโครไนซ์และทำให้การจัดการง่ายขึ้น นอกจากนี้โดยใช้ WCF คุณสามารถกำหนดค่าจุดปลายบริการให้ทำงานในลักษณะที่เหมาะสมกับลูกค้าที่โทร รูปที่แสดงตัวอย่างจากก่อนหน้านี้ด้วยการเข้าถึงข้อมูลลูกค้าแบบรวมศูนย์ในบริการ WCF
สรุป:
i) จะเลือก Web API ได้เมื่อใด:
ไม่มีการปฏิเสธว่าบริการ HTTP ที่ใช้ REST เช่นเดียวกับที่สร้างขึ้นโดยใช้ ASP.NET Web API ได้กลายเป็นมาตรฐานสำหรับการสร้างบริการเว็บ บริการเหล่านี้นำเสนอวิธีการที่ง่ายและตรงไปตรงมาสำหรับนักพัฒนาเว็บในการสร้างบริการ นักพัฒนาเว็บเข้าใจ HTTP GET และ POST และปรับให้เข้ากับบริการประเภทนี้ได้ดี ดังนั้นหากคุณกำลังเขียนบริการที่กำหนดเป้าหมายไปที่HTTPอย่างเคร่งครัดASP.NET Web API เป็นตัวเลือกเชิงตรรกะ
ii) เมื่อใดที่จะเลือก WCF:
เทคโนโลยี WCF มีประโยชน์เมื่อคุณต้องการสนับสนุนจุดปลายบริการหลายจุดตามโปรโตคอลและรูปแบบข้อความที่แตกต่างกัน ผลิตภัณฑ์เช่น Microsoft BizTalk ใช้ประโยชน์จาก WCF สำหรับการสร้างบริการที่แข็งแกร่งซึ่งสามารถใช้งานบนเว็บได้เช่นกันผ่านการกำหนดค่าระหว่างเครื่องกับเครื่องที่แตกต่างกันอย่างไรก็ตามหากคุณจำเป็นต้องเขียนแอปพลิเคชันที่สื่อสารผ่าน TCP / IP เมื่อเชื่อมต่อกับเครื่อง เครือข่ายและการทำงานผ่าน HTTP เมื่ออยู่นอกเครือข่าย WCF คือคำตอบของคุณ
ถูกเตือน:
นักพัฒนาเว็บมักจะมองว่า WCF นั้นยากและซับซ้อนกว่าที่จะพัฒนา ดังนั้นหากคุณไม่เห็นความจำเป็นในการใช้บริการหลายโปรโตคอลคุณอาจติดกับ ASP.NET Web API