บริการเว็บเทียบกับบริการ WCF


111

อะไรคือความแตกต่างระหว่างพวกเขา?

ฉันจะเลือกอย่างใดอย่างหนึ่งเมื่อใด


ดูการสนทนาอื่น ๆ ที่นี่สำหรับข้อมูลเพิ่มเติม ... stackoverflow.com/questions/50114/…
Kwal

คำตอบ:


67

คำตอบนี้อ้างอิงจากบทความที่ไม่มีอยู่แล้ว:

สรุปบทความ:

"โดยพื้นฐานแล้ว 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"


2
สำหรับโครงการใหม่ใด ๆ ตามแนวทาง SOA นักพัฒนาควรเลือก WCF ผ่านเว็บบริการ เนื่องจากให้ความยืดหยุ่นและความยืดหยุ่นสำหรับการใช้งานในอนาคต มีข้อยกเว้นเพียงอย่างเดียว: หากไคลเอนต์ไม่รองรับการสื่อสารกับบริการ wcf เช่น Flash AS2
Lalit

WCF 1) เป็นสถาปัตยกรรมหลายชั้น 2) จัดเตรียมแพลตฟอร์มเดียว (ทำงานร่วมกันได้) หรือเฟรมเวิร์กเพื่อสร้าง Service Oriented Application เพื่อสื่อสารโดยใช้โปรโตคอลเครือข่ายที่หลากหลาย 3) WCF ให้ความปลอดภัยและความน่าเชื่อถือที่ดีกว่าเมื่อเทียบกับบริการบนเว็บหรือบริการ ASMX 4) การสนับสนุนสำหรับ Plain XML, Ajax และ REST Web Service 1) เป็นเรื่องง่าย 2) เขียนฟังก์ชันและเชื่อมต่อกับแอตทริบิวต์ [WebMethod] และเป็น พร้อมให้บริการ
อรุณบานิ

ตามคำตอบของ Joe -> The Article ist replicated on codeproject.com/Articles/139787/…
Bernhard

33

จากความแตกต่างระหว่าง 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.


2
หมายเหตุแบบสุ่ม: ความแตกต่างอย่างมากของ DataContractSerializer และ XmlSerializer คือ DCS ต้องการการสั่งซื้อภาคสนามซึ่งเป็นเหตุผลว่าทำไมฉันจึงไม่ใช้ DCS สำหรับการทำให้เป็นอนุกรมหรือสัญญาแบบไม่ชั่วคราว! ดังนั้นจึงเป็นไปได้ที่จะทำลายบริการที่ลูกค้าใช้โดยไม่ได้ใช้คำสั่งซื้อคงที่เมื่อย้ายไปที่ DCS (หรือย้ายไปที่ DCS แต่อยู่ในลำดับที่แตกต่างจากที่เคยใช้) จริงอยู่สิ่งนี้ควรจะแสดงใน Schema แต่ ..
user2246674

1
นอกจากนี้โปรดอ้างอิง / เชื่อมโยงแหล่งที่มาและระบุสารสกัดและ / หรือนำข้อมูลต้นฉบับและเขียนสิ่งใหม่ด้วย มันหยาบคายในการขโมย ฉันได้เพิ่มลิงก์ให้คุณแล้ว แต่อย่าลืมให้เครดิตเมื่อถึงกำหนดชำระ! (ฉันจะลงคะแนนตามนี้ถ้าฉันสามารถลงคะแนนได้เลย)
user2246674

32

Web Service ขึ้นอยู่กับ SOAP และส่งคืนข้อมูลในรูปแบบ XML รองรับเฉพาะโปรโตคอล HTTP ไม่ใช่โอเพ่นซอร์ส แต่สามารถใช้ได้โดยไคลเอนต์ที่เข้าใจ xml สามารถโฮสต์บน IIS เท่านั้น

WCF ยังขึ้นอยู่กับ SOAP และส่งคืนข้อมูลในรูปแบบ XML เป็นวิวัฒนาการของบริการเว็บ (ASMX) และรองรับโปรโตคอลต่างๆเช่น TCP, HTTP, HTTPS, Named Pipes, MSMQ ปัญหาหลักของ WCF คือการกำหนดค่าที่น่าเบื่อและกว้างขวาง ไม่ใช่โอเพ่นซอร์ส แต่สามารถใช้ได้โดยไคลเอนต์ที่เข้าใจ xml สามารถโฮสต์ด้วยในแอปพลิเคชันหรือบน IIS หรือใช้บริการหน้าต่าง


1
WCF ยังสามารถรับ / ส่งคำขอ / การตอบกลับ http ในรูปแบบ JSON และไม่ต้องใช้ SOAP / schemas (ในปัจจุบัน?)
Efrain

รายละเอียด: SOAP รองรับ HTTPS การเข้ารหัสเกิดขึ้นที่เลเยอร์การขนส่งดังนั้นไคลเอนต์จึงไม่เชื่อเรื่องพระเจ้า - ไคลเอนต์ส่งคำขอ XML และรับการตอบสนอง XML และไม่ทราบและไม่สนใจว่าระหว่างทางนั้นเป็น http ธรรมดาหรือเข้ารหัส-https
Jinlye

16

ความแตกต่างพื้นฐานและหลักคือบริการเว็บ ASP.NET ได้รับการออกแบบมาเพื่อแลกเปลี่ยนข้อความ SOAP ผ่าน HTTP เท่านั้นในขณะที่บริการ WCF สามารถแลกเปลี่ยนข้อความโดยใช้รูปแบบใดก็ได้ (SOAP เป็นค่าเริ่มต้น) ผ่านโปรโตคอลการขนส่งใด ๆ เช่น HTTP, TCP, MSMQ หรือ NamedPipes เป็นต้น


4

อะไรคือความแตกต่างระหว่าง Web Service และ WCF?

  1. บริการเว็บใช้โปรโตคอล HTTP เท่านั้นในขณะที่ถ่ายโอนข้อมูลจากแอปพลิเคชันหนึ่งไปยังแอปพลิเคชันอื่น

    แต่ WCF สนับสนุนโปรโตคอลสำหรับการขนส่งข้อความมากกว่าบริการเว็บ ASP.NET WCF สนับสนุนการส่งข้อความโดยใช้ HTTP เช่นเดียวกับ Transmission Control Protocol (TCP) ชื่อไปป์และ Microsoft Message Queuing (MSMQ)

  2. ในการพัฒนาบริการใน 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;
      }
    }
  3. บริการเว็บไม่ได้มีประสิทธิภาพทางสถาปัตยกรรมมากกว่า แต่ WCF มีความแข็งแกร่งทางสถาปัตยกรรมมากกว่าและส่งเสริมแนวทางปฏิบัติที่ดีที่สุด

  4. บริการบนเว็บใช้ XmlSerializer แต่ WCF ใช้ DataContractSerializer ประสิทธิภาพที่ดีกว่าเมื่อเทียบกับ XmlSerializer?

  5. สำหรับการเรียกใช้บริการต่อบริการภายใน (หลังไฟร์วอลล์) เราใช้ net: tcp binding ซึ่งเร็วกว่า SOAP มาก

    WCF เร็วกว่า ASP.NET Web Services 25% - 50% และเร็วกว่า. NET Remoting ประมาณ 25%

ฉันจะเลือกอย่างใดอย่างหนึ่งเมื่อใด

  • WCF ใช้เพื่อสื่อสารระหว่างแอพพลิเคชั่นอื่น ๆ ซึ่งได้รับการพัฒนาบนแพลตฟอร์มอื่นและใช้เทคโนโลยีอื่น ๆ

    ตัวอย่างเช่นหากฉันต้องถ่ายโอนข้อมูลจากแพลตฟอร์ม. net ไปยังแอปพลิเคชันอื่นที่ทำงานบนระบบปฏิบัติการอื่น (เช่น Unix หรือ Linux) และใช้โปรโตคอลการถ่ายโอนอื่น ๆ (เช่น WAS หรือ TCP) ก็จะสามารถถ่ายโอนข้อมูลได้เท่านั้น ใช้ WCF

  • นี่คือข้อ จำกัด ของแพลตฟอร์มการถ่ายโอนโปรโตคอลของแอปพลิเคชันในขณะที่ถ่ายโอนข้อมูลระหว่างแอปพลิเคชันหนึ่งไปยังแอปพลิเคชันอื่น

  • ความปลอดภัยสูงมากเมื่อเทียบกับบริการบนเว็บ


2

ข้อแตกต่างที่สำคัญคือการหมดเวลาบริการ WCF หมดเวลาเมื่อไม่มีการตอบสนอง แต่บริการเว็บไม่มีคุณสมบัตินี้

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