อะไรคือความแตกต่างระหว่างการอ้างอิงเว็บและการอ้างอิงบริการใน WCF? WCF ไหนดีกว่ากัน?
อะไรคือความแตกต่างระหว่างการอ้างอิงเว็บและการอ้างอิงบริการใน WCF? WCF ไหนดีกว่ากัน?
คำตอบ:
คำตอบระดับต่ำที่นี่คือการอ้างอิงเว็บจะสร้างคลาสพร็อกซีไคลเอนต์ที่อนุญาตให้รหัสของคุณพูดคุยกับบริการเว็บที่อธิบายผ่าน WSDL และสื่อสารผ่าน SOAP หรือ HTTP GET (ผู้โพสต์อื่นระบุว่าเป็น ASMX เท่านั้น แต่ การอ้างอิงเว็บสามารถพูดคุยกับ Web Services ที่ใช้ Java หรือ Python หรือ Ruby ได้ตราบใดที่พวกเขาทั้งหมดพูดคุย WSDL และเป็นไปตามมาตรฐานการทำงานร่วมกันของ WS-I)
การอ้างอิงบริการจะสร้างคลาสพร็อกซีไคลเอนต์ที่สื่อสารกับบริการที่ใช้ WCF: ไม่ว่าบริการ WCF นั้นจะเป็นบริการบนเว็บหรือไม่ก็ตาม
การอ้างอิงทางเว็บช่วยให้คุณสามารถสื่อสารกับบริการใด ๆ ที่ใช้เทคโนโลยีใด ๆ ที่ใช้ WS-I Basic Profile 1.1 และแสดงข้อมูลเมตาที่เกี่ยวข้องเป็น WSDL ภายในจะใช้สแตกการสื่อสาร ASMX ที่ฝั่งไคลเอ็นต์
การอ้างอิงบริการช่วยให้คุณสามารถสื่อสารกับบริการใด ๆ โดยใช้เทคโนโลยีใด ๆ ที่ใช้โปรโตคอลจำนวนมากที่ WCF รองรับ (รวมถึง แต่ไม่ จำกัด เฉพาะ WS-I Basic Profile) ภายในจะใช้สแต็กการสื่อสาร WCF ที่ฝั่งไคลเอ็นต์
โปรดทราบว่าคำจำกัดความทั้งสองนี้ค่อนข้างกว้างและทั้งสองรวมถึงบริการที่ไม่ได้เขียนใน. NET
เป็นไปได้อย่างสมบูรณ์ (แม้ว่าจะไม่แนะนำ) ในการเพิ่มการอ้างอิงเว็บที่ชี้ไปยังบริการ WCF ตราบใดที่จุดสิ้นสุดของ WCF ใช้basicHttpBinding
หรือตัวแปรแบบกำหนดเองที่เข้ากันได้
นอกจากนี้ยังสามารถเพิ่มการอ้างอิงบริการที่ชี้ไปยังบริการ ASMX เมื่อเขียนโค้ดใหม่คุณควรใช้ Service Reference เสมอเพราะมีความยืดหยุ่นและสามารถพิสูจน์ได้ในอนาคต
Client
คำต่อท้าย
การอ้างอิงบริการเป็นอินเทอร์เฟซที่ใหม่กว่าสำหรับการเพิ่มการอ้างอิงไปยังบริการ WCF ทุกรูปแบบ (อาจไม่ใช่บริการบนเว็บ) ในขณะที่การอ้างอิงเว็บเกี่ยวข้องกับการอ้างอิงเว็บ ASMX โดยเฉพาะ
คุณสามารถเข้าถึงการอ้างอิงเว็บผ่านทางตัวเลือกขั้นสูงในการอ้างอิงบริการเพิ่ม (ถ้าฉันจำได้ถูกต้อง)
ฉันจะใช้การอ้างอิงบริการเพราะอย่างที่ฉันเข้าใจกลไกนี้เป็นกลไกที่ใหม่กว่าของทั้งสอง
การอ้างอิงบริการจัดการกับปลายทางและการเชื่อมโยงซึ่งสามารถกำหนดค่าได้อย่างสมบูรณ์ ช่วยให้คุณชี้พร็อกซีไคลเอนต์ของคุณไปที่ WCF ผ่านโปรโตคอลการขนส่งใด ๆ (HTTP, TCP, หน่วยความจำที่ใช้ร่วมกัน ฯลฯ )
ได้รับการออกแบบมาเพื่อทำงานร่วมกับ WCF
หากคุณใช้ WebProxy คุณจะค่อนข้างผูกมัดตัวเองกับการใช้ WCF ผ่าน HTTP
อีกประเด็นหนึ่งที่ต้องพิจารณาคือ UI ใหม่สำหรับอินเทอร์เฟซบริการจะช่วยให้คุณมีความยืดหยุ่นมากขึ้นในการสร้างคลาสพร็อกซีของคุณ ตัวอย่างเช่นจะช่วยให้คุณสามารถแมปสัญญาข้อมูลกับ dll ที่มีอยู่ได้หากตรงกัน (จริงๆแล้วนี่เป็นลักษณะการทำงานเริ่มต้น)