อะไรคือความแตกต่างระหว่างพวกเขา?
ฉันจะเลือกอย่างใดอย่างหนึ่งเมื่อใด
อะไรคือความแตกต่างระหว่างพวกเขา?
ฉันจะเลือกอย่างใดอย่างหนึ่งเมื่อใด
คำตอบ:
คำตอบนี้อ้างอิงจากบทความที่ไม่มีอยู่แล้ว:
สรุปบทความ:
"โดยพื้นฐานแล้ว WCF เป็นชั้นบริการที่ช่วยให้คุณสร้างแอปพลิเคชันที่สามารถสื่อสารโดยใช้กลไกการสื่อสารที่หลากหลายด้วยวิธีนี้คุณสามารถสื่อสารโดยใช้ Peer to Peer, Named Pipes, Web Services และอื่น ๆ
คุณไม่สามารถเปรียบเทียบได้เนื่องจาก WCF เป็นกรอบสำหรับการสร้างแอปพลิเคชันที่ทำงานร่วมกันได้ หากคุณต้องการคุณสามารถคิดว่ามันเป็นตัวเปิดใช้งาน SOA สิ่งนี้หมายความว่า?
WCF สอดคล้องกับสิ่งที่เรียกว่า ABC โดยที่ A คือที่อยู่ของบริการที่คุณต้องการสื่อสารด้วย B หมายถึงการผูกมัดและ C หมายถึงสัญญา นี่เป็นสิ่งสำคัญเนื่องจากสามารถเปลี่ยนการเชื่อมโยงได้โดยไม่จำเป็นต้องเปลี่ยนรหัส สัญญามีพลังกว่ามากเพราะบังคับให้แยกสัญญาออกจากการนำไปใช้ ซึ่งหมายความว่าสัญญาถูกกำหนดไว้ในอินเทอร์เฟซและมีการนำไปใช้อย่างเป็นรูปธรรมซึ่งผูกพันกับผู้บริโภคโดยใช้แนวคิดเดียวกันกับสัญญา โมเดลดาต้าจะถูกแยกออก "
... ต่อมา ...
"ควรใช้ WCF เมื่อเราต้องการสื่อสารกับเทคโนโลยีการสื่อสารอื่น ๆ (e, .g. Peer to Peer, Named Pipes) มากกว่า Web Service"
จากความแตกต่างระหว่าง WCF และบริการเว็บหรือไม่
WCF ทดแทนเทคโนโลยีบริการเว็บรุ่นก่อนหน้าทั้งหมดจาก Microsoft นอกจากนี้ยังให้ประโยชน์มากกว่าสิ่งที่ถือกันว่าเป็น "บริการบนเว็บ"
"บริการเว็บ" ของ WCF เป็นส่วนหนึ่งของการสื่อสารระยะไกลที่กว้างขึ้นซึ่งเปิดใช้งานผ่าน WCF คุณจะได้รับความยืดหยุ่นและความสามารถในการพกพาใน WCF ในระดับที่สูงกว่าการใช้ ASMX แบบเดิมเนื่องจาก WCF ได้รับการออกแบบมาตั้งแต่ต้นเพื่อสรุปโครงสร้างพื้นฐานการเขียนโปรแกรมแบบกระจายที่แตกต่างกันทั้งหมดที่ Microsoft นำเสนอ จุดสิ้นสุดใน WCF สามารถสื่อสารกับ SOAP / XML ได้อย่างง่ายดายเช่นเดียวกับที่สามารถทำได้ผ่าน TCP / binary และการเปลี่ยนสื่อนี้เป็นเพียงการดัดแปลงไฟล์คอนฟิกูเรชัน ตามทฤษฎีแล้วสิ่งนี้จะช่วยลดจำนวนรหัสใหม่ที่จำเป็นเมื่อทำการย้ายหรือเปลี่ยนความต้องการทางธุรกิจเป้าหมาย ฯลฯ
ASMX เก่ากว่า WCF และทุกสิ่งที่ ASMX สามารถทำได้ก็สามารถทำได้ WCF (และอื่น ๆ ) โดยทั่วไปคุณจะเห็นว่า WCF พยายามรวมกลุ่มกันอย่างมีเหตุผลด้วยวิธีต่างๆในการรับแอพสองตัวเพื่อสื่อสารในโลกของ Microsoft ASMX เป็นเพียงหนึ่งในหลาย ๆ วิธีเหล่านี้ดังนั้นจึงถูกจัดกลุ่มภายใต้ความสามารถของ WCF
บริการเว็บสามารถเข้าถึงได้ผ่าน HTTP เท่านั้นและทำงานในสภาพแวดล้อมแบบไร้สถานะโดยที่ WCF มีความยืดหยุ่นเนื่องจากบริการสามารถโฮสต์ในแอปพลิเคชันประเภทต่างๆได้ สถานการณ์ทั่วไปสำหรับการโฮสต์บริการ WCF ได้แก่ IIS, WAS, Self-hosting, Managed Windows Service
XmlSerializer
ความแตกต่างที่สำคัญคือบริการเว็บใช้ แต่ WCF ใช้DataContractSerializer
ซึ่งมีประสิทธิภาพดีกว่าเมื่อเทียบกับXmlSerializer
.
Web Service ขึ้นอยู่กับ SOAP และส่งคืนข้อมูลในรูปแบบ XML รองรับเฉพาะโปรโตคอล HTTP ไม่ใช่โอเพ่นซอร์ส แต่สามารถใช้ได้โดยไคลเอนต์ที่เข้าใจ xml สามารถโฮสต์บน IIS เท่านั้น
WCF ยังขึ้นอยู่กับ SOAP และส่งคืนข้อมูลในรูปแบบ XML เป็นวิวัฒนาการของบริการเว็บ (ASMX) และรองรับโปรโตคอลต่างๆเช่น TCP, HTTP, HTTPS, Named Pipes, MSMQ ปัญหาหลักของ WCF คือการกำหนดค่าที่น่าเบื่อและกว้างขวาง ไม่ใช่โอเพ่นซอร์ส แต่สามารถใช้ได้โดยไคลเอนต์ที่เข้าใจ xml สามารถโฮสต์ด้วยในแอปพลิเคชันหรือบน IIS หรือใช้บริการหน้าต่าง
ความแตกต่างพื้นฐานและหลักคือบริการเว็บ ASP.NET ได้รับการออกแบบมาเพื่อแลกเปลี่ยนข้อความ SOAP ผ่าน HTTP เท่านั้นในขณะที่บริการ WCF สามารถแลกเปลี่ยนข้อความโดยใช้รูปแบบใดก็ได้ (SOAP เป็นค่าเริ่มต้น) ผ่านโปรโตคอลการขนส่งใด ๆ เช่น HTTP, TCP, MSMQ หรือ NamedPipes เป็นต้น
อะไรคือความแตกต่างระหว่าง Web Service และ WCF?
บริการเว็บใช้โปรโตคอล HTTP เท่านั้นในขณะที่ถ่ายโอนข้อมูลจากแอปพลิเคชันหนึ่งไปยังแอปพลิเคชันอื่น
แต่ WCF สนับสนุนโปรโตคอลสำหรับการขนส่งข้อความมากกว่าบริการเว็บ ASP.NET WCF สนับสนุนการส่งข้อความโดยใช้ HTTP เช่นเดียวกับ Transmission Control Protocol (TCP) ชื่อไปป์และ Microsoft Message Queuing (MSMQ)
ในการพัฒนาบริการใน Web Service เราจะเขียนโค้ดต่อไปนี้
[WebService]
public class Service : System.Web.Services.WebService
{
[WebMethod]
public string Test(string strMsg)
{
return strMsg;
}
}
ในการพัฒนาบริการใน WCF เราจะเขียนโค้ดต่อไปนี้
[ServiceContract]
public interface ITest
{
[OperationContract]
string ShowMessage(string strMsg);
}
public class Service : ITest
{
public string ShowMessage(string strMsg)
{
return strMsg;
}
}
บริการเว็บไม่ได้มีประสิทธิภาพทางสถาปัตยกรรมมากกว่า แต่ WCF มีความแข็งแกร่งทางสถาปัตยกรรมมากกว่าและส่งเสริมแนวทางปฏิบัติที่ดีที่สุด
บริการบนเว็บใช้ XmlSerializer แต่ WCF ใช้ DataContractSerializer ประสิทธิภาพที่ดีกว่าเมื่อเทียบกับ XmlSerializer?
สำหรับการเรียกใช้บริการต่อบริการภายใน (หลังไฟร์วอลล์) เราใช้ net: tcp binding ซึ่งเร็วกว่า SOAP มาก
WCF เร็วกว่า ASP.NET Web Services 25% - 50% และเร็วกว่า. NET Remoting ประมาณ 25%
ฉันจะเลือกอย่างใดอย่างหนึ่งเมื่อใด
WCF ใช้เพื่อสื่อสารระหว่างแอพพลิเคชั่นอื่น ๆ ซึ่งได้รับการพัฒนาบนแพลตฟอร์มอื่นและใช้เทคโนโลยีอื่น ๆ
ตัวอย่างเช่นหากฉันต้องถ่ายโอนข้อมูลจากแพลตฟอร์ม. net ไปยังแอปพลิเคชันอื่นที่ทำงานบนระบบปฏิบัติการอื่น (เช่น Unix หรือ Linux) และใช้โปรโตคอลการถ่ายโอนอื่น ๆ (เช่น WAS หรือ TCP) ก็จะสามารถถ่ายโอนข้อมูลได้เท่านั้น ใช้ WCF
นี่คือข้อ จำกัด ของแพลตฟอร์มการถ่ายโอนโปรโตคอลของแอปพลิเคชันในขณะที่ถ่ายโอนข้อมูลระหว่างแอปพลิเคชันหนึ่งไปยังแอปพลิเคชันอื่น
ความปลอดภัยสูงมากเมื่อเทียบกับบริการบนเว็บ
ข้อแตกต่างที่สำคัญคือการหมดเวลาบริการ WCF หมดเวลาเมื่อไม่มีการตอบสนอง แต่บริการเว็บไม่มีคุณสมบัตินี้