คำถามและคำตอบสัมภาษณ์ WCF 40 อันดับแรก (2026)

การเตรียมตัวสำหรับการสัมภาษณ์งานด้าน WCF หมายถึงการเข้าใจมากกว่าแค่คำจำกัดความและไวยากรณ์ คำถามสัมภาษณ์งานด้าน WCF เหล่านี้จะช่วยให้คุณเข้าใจความรู้ด้านสถาปัตยกรรม ความสามารถในการแก้ปัญหา และวิธีที่ผู้สมัครแปลงแนวคิดไปสู่ระบบต่างๆ
การเชี่ยวชาญ WCF เปิดโอกาสในการทำงานด้านระบบกระจาย ระบบบริการ และการบูรณาการระดับองค์กร ผู้เชี่ยวชาญที่มีประสบการณ์ด้านเทคนิค ความเชี่ยวชาญเฉพาะด้าน และทักษะการวิเคราะห์ที่แข็งแกร่ง จะนำทักษะเหล่านี้ไปใช้ในการทำงานภาคสนาม ช่วยให้ทีม ผู้จัดการ และผู้บริหารระดับสูง แก้ไขปัญหาทางเทคนิคมาตรฐาน ขั้นสูง และพื้นฐาน สำหรับผู้เริ่มต้น ผู้ที่มีประสบการณ์ระดับกลาง และผู้เชี่ยวชาญระดับสูงทั่วโลกได้อย่างมีประสิทธิภาพ อ่านเพิ่มเติม ...
👉 ดาวน์โหลดไฟล์ PDF ฟรี: คำถามและคำตอบสำหรับการสัมภาษณ์งาน WCF
คำถามและคำตอบสัมภาษณ์งาน WCF ที่สำคัญที่สุด
1) อธิบายว่าอะไร Windows การสื่อสาร Foundation (WCF) คืออะไร และเหตุใดจึงใช้
Windows การสื่อสาร Foundation (WCF) คือ Microsoft .NET Framework คือเฟรมเวิร์กสำหรับการสร้างแอปพลิเคชันแบบกระจายศูนย์ ทำงานร่วมกันได้ และเน้นการให้บริการ ช่วยให้นักพัฒนาสามารถออกแบบบริการที่สามารถสื่อสารข้ามเครื่องและแพลตฟอร์มต่างๆ โดยใช้โปรโตคอลและรูปแบบการส่งข้อความที่หลากหลาย WCF รวบรวมสิ่งเดิมๆ เข้าไว้ด้วยกัน Microsoft การรวมเทคโนโลยีการสื่อสารต่างๆ เช่น .NET Remoting, ASMX Web Services, MSMQ และ Enterprise Services เข้าไว้ในโมเดลการเขียนโปรแกรมเดียวที่สามารถขยายได้ การรวมกันนี้ช่วยลดความซับซ้อนโดยอนุญาตให้ใช้โค้ดเบสเดียวในการรองรับเทคโนโลยีเหล่านี้ โปรโตคอลการขนส่งหลายประเภท (HTTP, TCP, Named Pipes, MSMQ) และ การเข้ารหัสข้อความหลายรูปแบบ (ข้อความธรรมดา, ไบนารี, MTOM).
ตัวอย่าง: แอปพลิเคชันระดับองค์กรที่รองรับลูกค้าจากแพลตฟอร์มต่างๆ (Windowsการเข้าถึงบริการอย่างปลอดภัยและเชื่อถือได้ (เช่น บนระบบปฏิบัติการ Linux) สามารถนำไปใช้ได้โดยใช้ WCF เนื่องจาก WCF รองรับการทำงานร่วมกันผ่านโปรโตคอลมาตรฐาน เช่น SOAP, REST และข้อกำหนด WS-*
2) อธิบายส่วนประกอบหลักของ WCF และวิธีการทำงานร่วมกันของส่วนประกอบเหล่านั้น
สถาปัตยกรรม WCF สร้างขึ้นจากแนวคิดหลักหลายประการที่กำหนดวิธีการสร้าง การเปิดเผย และการใช้งานบริการต่างๆ:
- บริการ — ประกอบด้วยตรรกะทางธุรกิจที่เปิดเผยให้ลูกค้าเข้าถึงได้
- เจ้าของห้องพัก — กระบวนการหรือสภาพแวดล้อมที่บริการทำงานอยู่ (แอปพลิเคชันคอนโซล, IIS, Windows (หรือ WAS)
- ปลายทาง — จุดเชื่อมต่อการสื่อสารที่ลูกค้าใช้ในการโต้ตอบกับบริการ แต่ละจุดเชื่อมต่อประกอบด้วย ที่อยู่ (ที่ไหน), การผูกพัน (อย่างไร), และสัญญา (อะไร)รู้จักในชื่อ ABC ของ WCF.
- พฤติกรรม — การกำหนดค่าที่แก้ไขการทำงานในขณะรันไทม์ (ความปลอดภัย การเผยแพร่เมตาเดตา การสร้างอินสแตนซ์)
ส่วนประกอบเหล่านี้เมื่อรวมกันแล้วจะช่วยให้สามารถเข้าถึงบริการผ่านโปรโตคอลต่างๆ ได้ โดยมีพฤติกรรมและการตั้งค่าความปลอดภัยที่เฉพาะเจาะจง ลูกค้าจะค้นหาที่อยู่ของปลายทาง ใช้การเชื่อมโยงเพื่อทราบวิธีการติดต่อ และจากนั้นจึงโต้ตอบตามข้อตกลง (เมธอดที่เปิดเผย)
3) อะไรคือหลักการพื้นฐานของ WCF และเหตุใดจึงมีความสำคัญ?
ใน WCF จุดเชื่อมต่อบริการแต่ละจุดจะถูกกำหนดโดยองค์ประกอบพื้นฐานสามประการ:
| เทอม | ความหมาย |
|---|---|
| ที่อยู่ | ระบุตำแหน่งที่ตั้งของบริการ WCF (URL หรือ URI) |
| ผูกพัน | กำหนดวิธีการสื่อสารของบริการ — โปรโตคอล การเข้ารหัส การส่งข้อมูล และความปลอดภัย |
| สัญญา | ระบุว่าบริการนี้เปิดเผยการดำเนินการใดบ้าง (อินเทอร์เฟซที่ตกแต่งด้วยแอตทริบิวต์) |
โมเดล ABC นี้มีความสำคัญเพราะให้ความยืดหยุ่น: คุณสามารถเปลี่ยนวิธีการและตำแหน่งที่ให้บริการได้โดยไม่ต้องเปลี่ยนแปลงตรรกะภายใน ตัวอย่างเช่น สัญญาบริการเดียวกันสามารถผูกมัดได้โดยใช้ HTTP สำหรับไคลเอ็นต์เว็บ และ TCP สำหรับไคลเอ็นต์อินทราเน็ตประสิทธิภาพสูง
4) WCF แตกต่างจากเว็บเซอร์วิส ASMX แบบดั้งเดิมอย่างไร?
ทั้ง WCF และ ASMX Web Services ต่างรองรับการสื่อสารระยะไกล แต่ WCF มีประสิทธิภาพมากกว่ามาก:
- รองรับโปรโตคอล: ASMX รองรับเฉพาะ SOAP ผ่าน HTTP เท่านั้น ในขณะที่ WCF รองรับทั้ง SOAP และ REST ผ่าน HTTP, TCP, Named Pipes, MSMQ และการขนส่งแบบกำหนดเอง
- ความสามารถในการทำงานร่วมกัน: WCF รองรับมาตรฐาน WS-* (ด้านความปลอดภัย การทำธุรกรรม การกำหนดที่อยู่) ซึ่ง ASMX ไม่รองรับอย่างเต็มที่
- ความยืดหยุ่นในการให้บริการโฮสติ้ง: ASMX สามารถใช้งานได้เฉพาะบน IIS เท่านั้น ส่วน WCF สามารถใช้งานได้บน IIS, WAS, Windows บริการโฮสติ้ง หรือโฮสติ้งแบบติดตั้งเอง
- ความสามารถในการขยาย: พฤติกรรมและการเชื่อมโยงของ WCF สามารถกำหนดค่าได้อย่างละเอียด ทำให้สามารถนำข้อกำหนดที่ซับซ้อน (ความปลอดภัย ความน่าเชื่อถือ การทำธุรกรรม) ไปใช้ได้ผ่านการกำหนดค่าแทนการเขียนโค้ด
ตัวอย่าง: บริการภายในที่มีปริมาณงานสูงซึ่งต้องการการส่งข้อมูลแบบไบนารีผ่าน TCP นั้นไม่สามารถทำได้ด้วย ASMX แต่สามารถทำได้โดยตรงใน WCF โดยใช้ NetTcpBinding.
5) WCF มีประเภทการผูกข้อมูลแบบใดบ้าง และคุณจะใช้ประเภทเหล่านั้นเมื่อใด?
WCF กำหนดการเชื่อมต่อแบบสำเร็จรูปไว้หลายแบบ โดยแต่ละแบบเหมาะสำหรับสถานการณ์เฉพาะต่างๆ ดังนี้:
| ผูกพัน | กรณีการใช้งานทั่วไป |
|---|---|
| พื้นฐานHttpBinding | ความสามารถในการทำงานร่วมกับบริการเว็บ SOAP 1.1 และ HTTP ที่ไม่ปลอดภัย |
| WSHttpBinding | SOAP 1.2 พร้อมด้วย WS-Security, เซสชันที่เชื่อถือได้ และธุรกรรม |
| NetTcpBinding | บริการอินทราเน็ตประสิทธิภาพสูงโดยใช้ TCP |
| NetMsmqBinding | การส่งข้อความผ่าน MSMQ อยู่ในคิวและถูกตัดการเชื่อมต่อ |
| การผูกท่อชื่อเน็ต | การสื่อสารที่ปลอดภัยและรวดเร็วภายในเครื่อง |
การเลือกการเชื่อมต่อที่เหมาะสมนั้นขึ้นอยู่กับข้อกำหนดต่างๆ เช่น ความปลอดภัย ความน่าเชื่อถือ ความสามารถในการทำงานร่วมกับแพลตฟอร์มต่างๆ และประสิทธิภาพ ตัวอย่างเช่น การใช้งาน NetTcpBinding ภายในเครือข่าย LAN ที่ปลอดภัยเพื่อความเร็ว และ BasicHttpBinding เมื่อทำการผสานรวมกับบริการ SOAP ของบุคคลที่สาม
6) สัญญาใน WCF มีกี่ประเภท?
WCF กำหนดประเภทสัญญาหลายประเภทเพื่อจำลองแง่มุมต่างๆ ของการโต้ตอบระหว่างบริการ:
- สัญญาการบริการ: อธิบายการทำงานของบริการ (วิธีการ พารามิเตอร์)
- สัญญาข้อมูล: กำหนดโครงสร้างข้อมูลที่แลกเปลี่ยนระหว่างไคลเอ็นต์และบริการ
- สัญญาความผิดพลาด: ระบุข้อผิดพลาดที่สามารถแจ้งให้ลูกค้าทราบได้
- สัญญาข้อความ: ช่วยให้สามารถควบคุมโครงสร้างข้อความ SOAP ได้อย่างละเอียด
ด้วยการแยกส่วนความรับผิดชอบ WCF ช่วยให้สามารถควบคุมได้อย่างแม่นยำว่าข้อมูลและพฤติกรรมจะถูกเปิดเผยอย่างไร โดยนำเสนอทั้งความเรียบง่าย (สัญญาบริการและสัญญาข้อมูล) และการควบคุมขั้นสูง (สัญญาข้อความ)
7) อธิบายโหมดการจัดการอินสแตนซ์แบบต่างๆ ใน WCF และผลกระทบที่เกิดขึ้น
WCF ควบคุมวิธีการสร้างและนำอินสแตนซ์ของบริการกลับมาใช้ใหม่ผ่านทาง โหมดบริบทอินสแตนซ์:
- ต่อการโทร: มีการสร้างอินสแตนซ์บริการใหม่สำหรับคำขอของลูกค้าแต่ละราย — ไม่มีสถานะ สามารถปรับขนาดได้ แต่ไม่มีสถานะเซสชัน
- ต่อเซสชัน: สร้างอินสแตนซ์หนึ่งตัวสำหรับแต่ละเซสชันของไคลเอ็นต์ — รักษาสถานะระหว่างการเรียกใช้ในเซสชันนั้น ๆ
- เดี่ยว: ใช้อินสแตนซ์เดียวสำหรับลูกค้าทุกราย — ใช้สถานะร่วมกัน ค่าใช้จ่ายต่ำกว่า แต่มีข้อกังวลเรื่องการทำงานพร้อมกัน
การเลือกโหมดอินสแตนซ์ส่งผลต่อประสิทธิภาพ การใช้ทรัพยากร และสถานะ สำหรับ API ที่ไม่มีสถานะ โหมดต่อครั้ง (per-call) จะเหมาะสมกว่า ในขณะที่สำหรับเวิร์กโฟลว์ที่มีเซสชัน โหมดต่อเซสชัน (per-session) จะเหมาะสมกว่า
8) วิธีการทั่วไปในการโฮสต์บริการ WCF มีอะไรบ้าง?
บริการ WCF สามารถติดตั้งใช้งานได้ในสภาพแวดล้อมหลายรูปแบบ:
- IIS (บริการข้อมูลทางอินเทอร์เน็ต): การเปิดใช้งานอัตโนมัติ การรีไซเคิลกระบวนการ และความสามารถในการปรับขนาด
- เคยเป็น (Windows บริการเปิดใช้งาน): ขยายการใช้งาน IIS ไปยังโปรโตคอลที่ไม่ใช่ HTTP
- โฮสติ้งด้วยตนเอง: ภายในแอปพลิเคชันคอนโซลหรือ Windows บริการ — ควบคุมวงจรชีวิตได้อย่างสมบูรณ์
แต่ละตัวเลือกการโฮสติ้งมีข้อดีข้อเสียแตกต่างกัน: IIS และ WAS จะจัดการการเปิดใช้งานและความเสถียรของระบบให้คุณ ในขณะที่การโฮสติ้งด้วยตนเองให้การควบคุมมากที่สุด แต่ต้องมีการจัดการเพิ่มเติม
9) อธิบายรูปแบบการแลกเปลี่ยนข้อความ (MEP) ที่ WCF รองรับ
WCF รองรับรูปแบบการส่งข้อความหลายแบบ:
- การร้องขอ-การตอบกลับ: รูปแบบที่พบได้บ่อยที่สุดคือ ลูกค้าส่งคำขอและรอการตอบกลับ
- ทางเดียว: ลูกค้าส่งข้อความโดยไม่คาดหวังการตอบกลับ
- ดูเพล็กซ์ (การเรียกกลับ): ช่วยให้สามารถสื่อสารแบบสองทางได้ โดยที่บริการสามารถโทรกลับไปยังลูกค้าได้
รูปแบบเหล่านี้ช่วยให้นักพัฒนาสามารถปรับแต่งเพื่อการตอบสนองและความสามารถในการขยายขนาดได้ ตัวอย่างเช่น การดำเนินการแบบทางเดียวมีประโยชน์เมื่อลูกค้าไม่ต้องการผลลัพธ์ทันที และบริการสามารถประมวลผลแบบอะซิงโครนัสได้
10) บทบาทของ Service Proxy ใน WCF คืออะไร?
A พร็อกซีบริการ ทำหน้าที่เป็นตัวแทนในพื้นที่ของบริการ WCF ระยะไกลสำหรับไคลเอ็นต์ โดยจะลดความซับซ้อนของการสื่อสาร ทำให้ไคลเอ็นต์สามารถเรียกใช้เมธอดของบริการได้ราวกับว่าเป็นเมธอดในพื้นที่ พร็อกซีจะจัดการการจัดการช่องทาง การจัดลำดับข้อมูล รายละเอียดการขนส่ง การกำหนดค่า และการเลือกการผูกข้อมูล สามารถสร้างพร็อกซีได้โดยอัตโนมัติ (ผ่านเครื่องมือต่างๆ เช่น) svcutil.exe หรือใช้ฟังก์ชัน “เพิ่มการอ้างอิงบริการ” ใน Visual Studio หรือเขียนโค้ดด้วยตนเอง
ตัวอย่าง: เมื่อบริการ WCF เปลี่ยนแปลงการกำหนดค่าการผูกข้อมูล ตัวพร็อกซีจะปกป้องไคลเอ็นต์จากรายละเอียดการใช้งานภายใน ซึ่งส่วนใหญ่แล้วต้องการเพียงแค่การอัปเดตการกำหนดค่าเท่านั้น ไม่จำเป็นต้องเปลี่ยนแปลงโค้ด
11) ข้อดีและข้อเสียหลักของการใช้ WCF คืออะไร?
Windows การสื่อสาร Foundation มีโครงสร้างพื้นฐานที่เน้นการให้บริการอย่างครบครัน แต่เช่นเดียวกับเทคโนโลยีทุกอย่าง มันก็มีทั้งจุดแข็งและจุดอ่อน
| ข้อดี | ข้อเสีย |
|---|---|
| กรอบการทำงานแบบรวมศูนย์สำหรับเทคโนโลยีการสื่อสารหลายประเภท (ASMX, MSMQ, Remoting) | การตั้งค่าซับซ้อน ต้องใช้เวลาเรียนรู้ค่อนข้างนาน |
| มีความยืดหยุ่นสูงผ่านการเชื่อมโยงและพฤติกรรมต่างๆ | การแก้ไขข้อผิดพลาดและการติดตามตรวจสอบอาจเป็นเรื่องยาก |
| รองรับการส่งข้อความ การทำธุรกรรม และความปลอดภัยที่เชื่อถือได้ | เกินความจำเป็นสำหรับ REST API ที่เรียบง่ายหรือขนาดเล็ก |
| ช่วยให้สามารถทำงานร่วมกับไคลเอ็นต์ที่ไม่ใช่ .NET ได้ (มาตรฐาน SOAP, WS-*) | การตั้งค่าที่ไม่ตรงกันอาจนำไปสู่ข้อผิดพลาดขณะรันไทม์ |
ตัวอย่าง: WCF มีข้อได้เปรียบในองค์กรขนาดใหญ่ที่ต้องการโปรโตคอลการขนส่งหลายประเภท ในขณะที่ RESTful API หรือ gRPC อาจเหมาะสมกว่าสำหรับไมโครเซอร์วิสขนาดเล็กที่ใช้งานได้บนหลายแพลตฟอร์ม
12) อธิบายความแตกต่างระหว่างการรักษาความปลอดภัยด้านการขนส่ง (Transport Security) และการรักษาความปลอดภัยด้านข้อความ (Message Security) ใน WCF
WCF มีกลไกหลักสองอย่างสำหรับการรักษาความปลอดภัยในการสื่อสาร:
| แง่มุม | ความปลอดภัยด้านการขนส่ง | ความปลอดภัยของข้อความ |
|---|---|---|
| ในกรณีที่เกี่ยวข้อง | ในระดับชั้นการขนส่ง (เช่น HTTPS, SSL) | ในส่วนของข้อความ SOAP เอง |
| ประสิทธิภาพ | เร็วกว่า เนื่องจากกระบวนการเข้ารหัส/ถอดรหัสเกิดขึ้นเพียงครั้งเดียวต่อช่องทาง | ช้าลงเนื่องจากการประมวลผลต่อข้อความ |
| การทำงานร่วมกัน | จำกัดเฉพาะการขนส่งที่ได้รับการสนับสนุนเท่านั้น | ไม่ขึ้นอยู่กับโปรโตคอลการขนส่ง |
| ใช้กรณี | ภายในเครือข่ายที่เชื่อถือได้ | ในสภาพแวดล้อมที่ไม่น่าเชื่อถือหรือหลากหลาย |
ตัวอย่าง: สำหรับบริการ TCP ภายในองค์กร การรักษาความปลอดภัยในการรับส่งข้อมูลนั้นมีประสิทธิภาพ แต่สำหรับบริการ SOAP ที่เปิดเผยสู่ภายนอกอินเทอร์เน็ต การรักษาความปลอดภัยข้อความจะให้การป้องกันแบบครบวงจร
13) สัญญาบริการกับอะไรคือความแตกต่างระหว่างสัญญาบริการกับ... Operaสัญญา?
A สัญญาบริการ กำหนดอินเทอร์เฟซหรือขอบเขตโดยรวมของบริการ WCF ในขณะที่ Operaสัญญา กำหนดวิธีการแต่ละวิธีที่เปิดเผยภายในอินเทอร์เฟซนั้น
[ServiceContract]
public interface ICalculator
{
[OperationContract]
int Add(int a, int b);
}
ที่นี่ ICalculator คือสัญญาบริการ และ Add() เป็น Operaสัญญา
การแยกส่วนนี้ช่วยให้นักพัฒนาสามารถจัดกลุ่มการดำเนินงานที่เกี่ยวข้องเข้าด้วยกันอย่างมีเหตุผล และจัดการการดำเนินงานเหล่านั้นภายใต้คำจำกัดความบริการเดียว
14) พฤติกรรม WCF คืออะไร และแบ่งประเภทอย่างไร?
พฤติกรรม ใน WCF นั้น มีส่วนขยายรันไทม์ที่ปรับเปลี่ยนฟังก์ชันการทำงานของบริการหรือไคลเอ็นต์ ส่วนขยายเหล่านี้ไม่ได้เปลี่ยนแปลงสัญญาหรือข้อผูกมัด แต่ส่งผลต่อวิธีการที่รันไทม์ดำเนินการต่างๆ
พฤติกรรมประเภทต่างๆ ได้แก่:
- พฤติกรรมการให้บริการ: ส่งผลกระทบต่อบริการทั้งหมด (เช่น
ServiceThrottlingBehavior,ServiceDebugBehavior). - พฤติกรรมของเอนด์พอยต์: แก้ไขการตั้งค่าปลายทาง (เช่น การตรวจสอบข้อความ)
- Operaพฤติกรรม: นำไปใช้กับวิธีการเฉพาะ (เช่น การทำธุรกรรม)
ตัวอย่าง: การเปิดใช้งาน ServiceMetadataBehavior อนุญาตให้เผยแพร่ไฟล์ WSDL เพื่อให้ไคลเอ็นต์สามารถค้นพบบริการได้
15) WCF รองรับรูปแบบการเข้ารหัสข้อความแบบใดบ้าง?
WCF รองรับกลไกการเข้ารหัสหลายแบบเพื่อแปลงข้อมูลให้เป็นรูปแบบที่สามารถส่งผ่านได้:
| การเข้ารหัส | Descriptไอออน | ใช้กรณี |
|---|---|---|
| ข้อความ | รูปแบบ XML ที่มนุษย์อ่านได้ | สามารถทำงานร่วมกับไคลเอ็นต์ SOAP ได้ |
| เลขฐานสอง | รูปแบบไฟล์ไบนารีขนาดกะทัดรัดและรวดเร็ว | บริการภายในองค์กรที่มีประสิทธิภาพสูง |
| เอ็มทอม (ข้อความ) Transmission กลไกการเพิ่มประสิทธิภาพ) | ส่งข้อมูลไบนารีขนาดใหญ่ (เช่น รูปภาพ) ได้อย่างมีประสิทธิภาพ | สถานการณ์การอัปโหลด/ดาวน์โหลดไฟล์ |
การเลือกวิธีการเข้ารหัสที่เหมาะสมนั้นขึ้นอยู่กับการแลกเปลี่ยนระหว่างความสามารถในการอ่าน ประสิทธิภาพ และความเข้ากันได้
16) WCF รองรับการทำธุรกรรมอย่างไร?
WCF ให้การสนับสนุนธุรกรรมโดยใช้ ธุรกรรมระบบ เนมสเปซและ การไหลของธุรกรรม คุณสมบัติเหล่านี้ช่วยให้การดำเนินการต่างๆ สามารถทำงานได้ภายในธุรกรรมแบบกระจายที่ครอบคลุมหลายบริการหรือฐานข้อมูล
ตัวอย่าง:
[OperationContract] [TransactionFlow(TransactionFlowOption.Allowed)] void UpdateRecords();
ธุรกรรมต่างๆ ช่วยให้มั่นใจได้ว่า ความเป็นอะตอม, ความมั่นคง, ความเหงาและ ความทนทาน (กรด) ครอบคลุมการดำเนินการทั้งหมด หากการดำเนินการใดล้มเหลว WCF สามารถยกเลิกธุรกรรมทั้งหมดได้โดยอัตโนมัติ
คุณสมบัตินี้มีความสำคัญอย่างยิ่งสำหรับระบบการจัดการทางการเงินหรือระบบการจัดการคำสั่งซื้อระดับองค์กร
17) อธิบายโหมดการทำงานพร้อมกัน (Concurrency Modes) ใน WCF
โหมดการทำงานพร้อมกัน กำหนดวิธีการที่เธรดหลายตัวเข้าถึงอินสแตนซ์บริการ WCF พร้อมกันได้
| โหมด | Descriptไอออน | ควรใช้เมื่อใด |
|---|---|---|
| เดียว | ส่งคำขอได้ครั้งละหนึ่งรายการต่ออินสแตนซ์ | ต้องใช้ความปลอดภัยของเธรด; การทำงานพร้อมกันในระดับต่ำ |
| แพลตฟอร์มที่หลากหลาย | เธรดหลายตัวเข้าถึงอินสแตนซ์พร้อมกัน | ต้องการอัตราการผลิตสูง จึงต้องตรวจสอบความปลอดภัยของเกลียวให้ดี |
| ผู้กลับเข้าสู่ระบบ | อนุญาตให้โทรออกขณะประมวลผลการเรียกกลับ (callback) | สถานการณ์แบบดูเพล็กซ์หรือแบบเรียกกลับ |
นักพัฒนาต้องเลือกโหมดอย่างระมัดระวังเพื่อหลีกเลี่ยงสภาวะการแข่งขันหรือภาวะหยุดชะงัก โดยเฉพาะอย่างยิ่งในสภาพแวดล้อมแบบมัลติเธรด
18) เมตาเดต้าของบริการมีบทบาทอย่างไรใน WCF?
ข้อมูลเมตาของบริการ ให้ข้อมูลรายละเอียดเกี่ยวกับบริการ WCF เช่น การดำเนินการที่มีให้เลือก ประเภทข้อมูล และรูปแบบการสื่อสาร
เมื่อ พฤติกรรมเมตาเดตาของบริการ หากเปิดใช้งาน บริการจะเผยแพร่เมตาเดตาเป็น wsdl or MEX (ระบบแลกเปลี่ยนข้อมูลเมตา) จุดเชื่อมต่อ จากนั้นไคลเอ็นต์สามารถสร้างพร็อกซีและการกำหนดค่าโดยอัตโนมัติโดยใช้เมตาเดตาเหล่านี้
ตัวอย่าง:
เพิ่มพฤติกรรมต่อไปนี้ใน web.config ช่วยให้สามารถเผยแพร่ข้อมูลเมตาได้:
<serviceBehaviors>
<behavior>
<serviceMetadata httpGetEnabled="true" />
</behavior>
</serviceBehaviors>
สิ่งนี้ช่วยให้เครื่องมือต่างๆ เช่น Visual Studio สามารถใช้งานได้ Add Service Reference เพื่อค้นหาและใช้งานบริการดังกล่าว
19) สัญญาความผิดพลาดคืออะไร และใช้เพื่ออะไร?
A สัญญาความผิดพลาด กำหนดข้อผิดพลาด SOAP แบบกำหนดเองที่บริการ WCF สามารถส่งไปยังไคลเอ็นต์ในกรณีที่เกิดข้อผิดพลาด ช่วยเพิ่มความน่าเชื่อถือโดยการให้ข้อความแสดงข้อผิดพลาดที่มีโครงสร้างแทนที่จะใช้ข้อยกเว้นทั่วไป
ตัวอย่าง:
[OperationContract] [FaultContract(typeof(MyFault))] void ProcessData();
สัญญาการจัดการข้อผิดพลาดช่วยให้ลูกค้าสามารถจัดการกับข้อยกเว้นได้อย่างราบรื่นและรักษาความสามารถในการทำงานร่วมกับผู้ใช้งานที่ไม่ใช่ .NET ได้
วิธีการนี้เป็นที่นิยมมากกว่าการโยนข้อยกเว้น .NET โดยตรง ซึ่งอาจทำให้รายละเอียดภายในรั่วไหลหรือทำให้เกิดข้อผิดพลาดในการแปลงข้อมูล
20) อธิบายความแตกต่างระหว่างบริการ WCF แบบ RESTful และแบบ SOAP
WCF สามารถเปิดเผยบริการโดยใช้ทั้งรูปแบบ SOAP และ REST ได้
| แง่มุม | SOAP (WS-*) | REST (WebHttpBinding) |
|---|---|---|
| รูปแบบ | XML (ซอง SOAP) | JSON หรือ XML |
| โปรโตคอล | โดยทั่วไปคือ HTTP แต่ก็อาจใช้ TCP, MSMQ เป็นต้นได้เช่นกัน | ใช้ได้เฉพาะ HTTP เท่านั้น |
| การใช้คำกริยา | ใช้คำสั่ง POST เสมอ (สำหรับการดำเนินการแบบกำหนดเอง) | ใช้คำสั่ง HTTP (GET, POST, PUT, DELETE) |
| ความซับซ้อน | ระดับสูง – เหมาะสำหรับระบบระดับองค์กร | น้ำหนักเบา – เหมาะอย่างยิ่งสำหรับเว็บ API |
| ความปลอดภัย/ธุรกรรม | รองรับ WS-Security และ WS-Transaction อย่างเต็มรูปแบบ | ระบบรักษาความปลอดภัยแบบ HTTPS ที่เรียบง่ายกว่า |
ตัวอย่าง: ระบบการเงินที่ต้องการธุรกรรมที่เชื่อถือได้อาจใช้ SOAP WCF ในขณะที่ API ของแอปพลิเคชันบนมือถือสำหรับดึงข้อมูลผู้ใช้อาจใช้ RESTful WCF
21) การสื่อสารแบบ Duplex ใน WCF คืออะไร และใช้เมื่อใด?
การสื่อสารแบบสองทาง รูปแบบนี้ช่วยให้บริการ WCF และไคลเอนต์สามารถแลกเปลี่ยนข้อความได้ทั้งสองทิศทาง ซึ่งหมายความว่าบริการสามารถเริ่มต้นการสื่อสารกลับไปยังไคลเอนต์ได้ รูปแบบนี้มีประโยชน์อย่างยิ่งในแอปพลิเคชันที่ขับเคลื่อนด้วยเหตุการณ์ เช่น ระบบแชท ระบบแสดงราคาหุ้น หรือการแจ้งเตือน
การสื่อสารแบบสองทางจำเป็นต้องใช้ สัญญาเรียกกลับ.
ตัวอย่าง:
[ServiceContract(CallbackContract = typeof(IClientCallback))]
public interface INotificationService
{
[OperationContract]
void Subscribe(string topic);
}
ลูกค้าดำเนินการ IClientCallback เพื่อรับการอัปเดต โดยทั่วไปโหมดดูเพล็กซ์จะใช้ NetTcpBinding or WSDualHttpBindingซึ่งรองรับการเชื่อมต่อแบบต่อเนื่องสำหรับการส่งข้อความแบบสองทาง
22) WCF Throttling คืออะไร และทำไมจึงสำคัญ?
การอุด ฟังก์ชันนี้ควบคุมจำนวนอินสแตนซ์ เซสชัน และการเรียกใช้งานที่บริการ WCF สามารถจัดการได้พร้อมกัน ช่วยปกป้องทรัพยากรเซิร์ฟเวอร์และรักษาประสิทธิภาพภายใต้ภาระงานหนัก
กำหนดโดย ServiceThrottlingBehavior องค์ประกอบหลักๆ ประกอบด้วย:
- MaxConcurrentCalls — จำกัดจำนวนการเรียกใช้เมธอดพร้อมกัน
- MaxConcurrentInstances — จำกัดจำนวนอินสแตนซ์ของบริการ
- เซสชันพร้อมกันสูงสุด — จำกัดจำนวนเซสชันไคลเอ็นต์ที่ใช้งานอยู่
ตัวอย่าง:
<serviceBehaviors>
<behavior>
<serviceThrottling maxConcurrentCalls="100" maxConcurrentSessions="50" maxConcurrentInstances="100" />
</behavior>
</serviceBehaviors>
การควบคุมปริมาณการใช้ทรัพยากรเป็นสิ่งจำเป็นสำหรับการขยายขนาดและป้องกันการหมดทรัพยากรในระบบการผลิต
23) Reliable Sessions ใน WCF คืออะไร?
เซสชั่นที่เชื่อถือได้ ตรวจสอบให้แน่ใจว่าข้อความระหว่างไคลเอ็นต์และบริการถูกส่งถึงเพียงครั้งเดียวและตามลำดับ แม้ว่าจะเกิดการหยุดชะงักของเครือข่ายหรือข้อความสูญหายก็ตาม
เปิดใช้งานโดยใช้ WSReliableMessaging โปรโตคอล คุณสมบัตินี้สามารถเปิดใช้งานได้โดยการตั้งค่า reliableSession ในการตั้งค่า:
<binding name="ReliableBinding" reliableSessionEnabled="true" />
การเชื่อมต่อที่เชื่อถือได้ช่วยเพิ่มความแข็งแกร่งให้กับระบบธุรกรรมหรือระบบสำคัญที่การรับประกันการส่งข้อความเป็นสิ่งจำเป็น เช่น ระบบชำระเงินหรือระบบติดตามคำสั่งซื้อ
24) คุณจะปรับปรุงประสิทธิภาพของบริการ WCF ได้อย่างไร?
การเพิ่มประสิทธิภาพการทำงานใน WCF เกี่ยวข้องกับเทคนิคหลายอย่างในระดับการกำหนดค่า การออกแบบ และโครงสร้างพื้นฐาน:
- ใช้ การเข้ารหัสไบนารี แทนที่จะใช้ข้อความสำหรับบริการอินทราเน็ต
- ใช้ NetTcpBinding แทนที่จะใช้ WSHttpBinding สำหรับการสื่อสารภายในความเร็วสูง
- ทำให้สามารถ InstanceContextMode.PerCall เพื่อหลีกเลี่ยงการจดจำค้างคา
- Implement การบีบอัดข้อความ และ การรวมวัตถุ.
- ปิดใช้งานการเผยแพร่เมตาเดตาและการดีบักที่ไม่จำเป็น
- ใช้ การดำเนินการแบบอะซิงโครนัส และ การจำกัดการให้บริการ.
ตัวอย่าง: บริการวิเคราะห์ทางการเงินภายในองค์กรได้เปลี่ยนจาก WSHttpBinding ไปยัง NetTcpBinding และส่งผลให้ประสิทธิภาพเพิ่มขึ้นถึง 5 เท่า
25) ความแตกต่างที่สำคัญระหว่าง BasicHttpBinding และ WSHttpBinding คืออะไร?
| แง่มุม | พื้นฐานHttpBinding | WSHttpBinding |
|---|---|---|
| เวอร์ชัน SOAP | สบู่ 1.1 | สบู่ 1.2 |
| ความปลอดภัย | เฉพาะระดับการส่งข้อมูล (HTTPS) | รองรับ WS-Security และการเข้ารหัสระดับข้อความ |
| การทำธุรกรรม | ไม่รองรับ | ได้รับการสนับสนุน. |
| การทำงานร่วมกัน | ใช้งานร่วมกับบริการ ASMX รุ่นเก่าได้ | เหมาะอย่างยิ่งสำหรับการใช้งานในองค์กรสมัยใหม่ |
| ประสิทธิภาพ | เร็วขึ้น น้ำหนักเบาขึ้น | ช้าลงเล็กน้อยเนื่องจากขั้นตอนการทำงานด้านความปลอดภัย |
ใช้ พื้นฐานHttpBinding สำหรับบริการดั้งเดิมหรือบริการสาธารณะ และ WSHttpBinding สำหรับระบบระดับองค์กรที่ต้องการความปลอดภัยและความน่าเชื่อถือขั้นสูง
26) คลาส ServiceHost ใน WCF มีวัตถุประสงค์อะไร?
การขอ ServiceHost คลาสนี้เป็นส่วนประกอบหลักที่ใช้ในการโฮสต์บริการ WCF ด้วยตนเอง โดยให้การควบคุมแบบโปรแกรมเหนือวงจรชีวิตของบริการ จุดเชื่อมต่อ และการกำหนดค่าต่างๆ
ตัวอย่าง:
using (ServiceHost host = new ServiceHost(typeof(MyService)))
{
host.Open();
Console.WriteLine("Service is running...");
}
ServiceHost ทำหน้าที่สร้างเอนด์พอยต์ การจัดการช่องทาง และการเผยแพร่เมตาเดตา โดยทั่วไปจะใช้ในคอนโซลหรือ Windows สถานการณ์การโฮสต์บริการที่นักพัฒนาต้องการความยืดหยุ่นนอกเหนือจาก IIS
27) อธิบายว่า WCF รองรับการทำงานแบบอะซิงโครนัสได้อย่างไร
WCF รองรับ การเขียนโปรแกรมแบบอะซิงโครนัส โมเดลเหล่านี้ช่วยปรับปรุงการตอบสนองและความสามารถในการขยายขนาด โดยเฉพาะอย่างยิ่งในการทำงานที่ใช้เวลานานหรือการทำงานที่เกี่ยวข้องกับการรับส่งข้อมูล (I/O bound)
คุณสามารถใช้งานเมธอดแบบอะซิงโครนัสได้ด้วยวิธีใดวิธีหนึ่งดังต่อไปนี้:
- รูปแบบอะซิงโครนัสตามภารกิจ (TAP) ด้วย
asyncและawaitคำหลัก หรือ - รูปแบบอะซิงโครนัสแบบอิงเหตุการณ์ (EAP) ผ่านทาง
BeginOperationและEndOperation.
ตัวอย่าง:
[OperationContract] Task<string> GetDataAsync(int id);
รูปแบบการทำงานแบบอะซิงโครนัสช่วยให้เซิร์ฟเวอร์ WCF ประมวลผลคำขอหลายรายการพร้อมกันได้โดยไม่ทำให้เธรดหยุดทำงาน ซึ่งช่วยเพิ่มประสิทธิภาพการทำงานภายใต้ภาระงานหนัก
28) จะสามารถผสานรวม WCF กับ MSMQ ได้อย่างไร?
WCF ผสานรวมเข้ากับ Microsoft ระบบจัดคิวข้อความ (MSMQ) เมื่อ NetMsmqBindingสิ่งนี้ช่วยให้การสื่อสารมีความน่าเชื่อถือ มีการจัดคิว และแม้จะตัดการเชื่อมต่อ ก็มั่นใจได้ว่าข้อความจะถูกส่งถึงผู้รับแม้ว่าผู้รับจะออฟไลน์อยู่ก็ตาม
ประโยชน์ที่ได้รับรวมถึง:
- รับประกันการจัดส่ง
- การส่งข้อความแบบอะซิงโครนัส
- การปรับสมดุลภาระงานระหว่างบริการต่างๆ
- รองรับคิวธุรกรรม
ตัวอย่างสถานการณ์: บริการเรียกเก็บเงินจะนำข้อความการชำระเงินไปไว้ในคิว และตัวประมวลผลแบ็กเอนด์จะดึงและประมวลผลข้อความเหล่านั้นแบบอะซิงโครนัสโดยใช้ MSMQ
29) WCF มีการจัดการข้อผิดพลาดและการบันทึกข้อมูลอย่างไร?
WCF ใช้ จัดการข้อผิดพลาด และ การติดตาม กลไกในการจัดการข้อผิดพลาดอย่างเป็นระบบ
- อินเทอร์เฟซ IErrorHandler — อนุญาตให้ปรับแต่งการจัดการข้อผิดพลาดและการสร้างข้อความแสดงข้อผิดพลาดได้
- ข้อผิดพลาด — สื่อสารข้อผิดพลาดที่มีโครงสร้างให้แก่ลูกค้า
- การติดตามและการบันทึกข้อความ — กำหนดค่าใน
system.diagnosticsสำหรับตรวจสอบปัญหาที่เกิดขึ้นระหว่างการทำงาน
การกำหนดค่าตัวอย่าง:
<diagnostics> <messageLogging logEntireMessage="true" /> </diagnostics>
กลยุทธ์การจัดการข้อผิดพลาดที่ได้รับการกำหนดค่าอย่างดีจะช่วยให้มั่นใจได้ถึงความน่าเชื่อถือและแก้ไขปัญหาได้ง่ายขึ้นในสภาพแวดล้อมการผลิต
30) ความแตกต่างหลักระหว่าง WCF และ gRPC / Web API คืออะไร?
| แง่มุม | WCF | gRPC / เว็บ API |
|---|---|---|
| รูปแบบการสื่อสาร | SOAP / XML, REST (ไม่บังคับ) | รูปแบบไบนารี (Protobuf สำหรับ gRPC), JSON สำหรับ Web API |
| ประสิทธิภาพ | ปานกลาง | สูง (gRPC) / ปานกลาง (Web API) |
| การสนับสนุนแพลตฟอร์ม | เน้นการใช้งาน .NET Framework | รองรับหลายแพลตฟอร์ม (.NET Core, Linux ฯลฯ) |
| โมเดลความปลอดภัย | WS-Security และความปลอดภัยระดับการขนส่ง | HTTPS + JWT + OAuth |
| ใช้กรณี | ระบบ SOA ระดับองค์กร | ไมโครเซอร์วิสและ API สมัยใหม่ |
ตัวอย่าง: องค์กรที่ย้ายจากบริการ WCF แบบโมโนลิธไปสู่ไมโครเซอร์วิส มักจะเปลี่ยนผ่านไปสู่... ก.ร.ป เพื่อประสิทธิภาพและความสามารถในการปรับขนาดที่ดีขึ้น
31) WCF รองรับความน่าเชื่อถือและการเรียงลำดับในระดับข้อความอย่างไร?
WCF ช่วยให้การส่งข้อความมีความน่าเชื่อถือผ่านทาง WS-ReliableMessaging โปรโตคอล เพื่อให้มั่นใจว่าข้อความจะถูกส่งถึงผู้รับ เพียงครั้งเดียวและตามลำดับ.
การตั้งค่านี้ใช้เซสชันที่เชื่อถือได้ (<reliableSession enabled="true" />) ในการผูกมัดเช่น WSHttpBinding or NetTcpBinding.
- ความน่าเชื่อถือในระดับข้อความ รับประกันการยืนยันการส่งมอบระหว่างผู้ส่งและผู้รับ
- การสั่งซื้อ ช่วยให้มั่นใจได้ว่าการส่งมอบข้อมูลจะเป็นไปตามลำดับ แม้ในสภาพแวดล้อมแบบอะซิงโครนัสหรือเครือข่ายที่ไม่เสถียร
ตัวอย่าง: ระบบการเงินที่ลำดับการทำธุรกรรมมีความสำคัญอย่างยิ่ง (เช่น การซื้อขายหุ้น) อาศัยการส่งข้อความที่เชื่อถือได้เพื่อป้องกันการทำซ้ำหรือการสูญหาย
32) อธิบายวิธีการนำระบบรักษาความปลอดภัยมาใช้ใน WCF โดยใช้ใบรับรอง
WCF รองรับ การรักษาความปลอดภัยโดยใช้ใบรับรอง เพื่อการตรวจสอบสิทธิ์ ความสมบูรณ์ของข้อความ และการเข้ารหัส
Digiใบรับรอง tal (โดยทั่วไปคือ X.509) ใช้ในการตรวจสอบตัวตนของบริการและไคลเอ็นต์
ขั้นตอนสำคัญ:
- ติดตั้งใบรับรองใน Windows ที่เก็บใบรับรอง
- กำหนดค่าการเชื่อมต่อ WCF ด้วย
security mode="Message"orsecurity mode="TransportWithMessageCredential". - อ้างอิงใบรับรองผ่านการตั้งค่าหรือโค้ด
ตัวอย่าง:
<serviceCredentials> <serviceCertificate findValue="MyServiceCert" storeLocation="LocalMachine" storeName="My" /> </serviceCredentials>
ใบรับรองเป็นวิธีที่เหมาะสมกว่าในสภาพแวดล้อมระดับองค์กรที่ต้องการการตรวจสอบสิทธิ์ร่วมกันอย่างปลอดภัยโดยไม่ต้องพึ่งพา... Windows หนังสือรับรอง
33) Channel ใน WCF คืออะไร และทำงานอย่างไร?
A ช่อง ใน WCF นั้นเป็นส่วนประกอบหลักที่รับผิดชอบในการประมวลผลข้อความระหว่างการสื่อสาร ช่องทาง (Channels) ก่อตัวขึ้นเป็น แชนเนล สแต็คโดยแต่ละชั้นจะทำหน้าที่เฉพาะเจาะจง เช่น การเข้ารหัส การรักษาความปลอดภัย ความน่าเชื่อถือ หรือการส่งข้อมูล
ตัวอย่างการเรียงซ้อน:
Application ↓ Channel Stack (Security → Encoding → Transport) ↓ Network
ข้อความแต่ละข้อความจะไหลผ่านสแต็กนี้ก่อนที่จะส่งหรือหลังจากได้รับแล้ว
นักพัฒนาสามารถนำไปใช้งานได้จริงด้วยซ้ำ ช่องที่กำหนดเอง เพื่อขยายฟังก์ชันการทำงานของ WCF เช่น การเข้ารหัสหรือการบีบอัดข้อมูล
34) WCF และ Web Services Enhancements (WSE) แตกต่างกันอย่างไร?
WCF คือ ตัวตายตัวแทน สำหรับผู้สูงอายุ WSE (Web Services Enhancements) กรอบ.
| แง่มุม | วสท | WCF |
|---|---|---|
| กรอบ | ส่วนเสริมสำหรับ .NET 2.0/3.0 | ผสานรวมเข้ากับ .NET Framework 3.0 ขึ้นไป |
| การสนับสนุนโปรโตคอล | สบู่เท่านั้น | SOAP, REST, TCP, MSMQ, Named Pipes |
| ความปลอดภัย/ธุรกรรม | การสนับสนุน WS-* มีจำกัด | มาตรฐาน WS-* ฉบับเต็ม |
| องค์ประกอบ | ตามรหัส | XML + การกำหนดค่า |
| ขยาย | ต่ำสุด | จุดสูง |
WCF ได้รวมรูปแบบการสื่อสารทั้งหมด (WSE, MSMQ, Remoting) เข้าไว้ด้วยกัน ทำให้ WSE ล้าสมัยไปหลังจาก .NET 3.0
35) คุณจะนำระบบบันทึกและติดตามข้อมูลระดับข้อความมาใช้ใน WCF ได้อย่างไร?
การบันทึกและติดตามการทำงานใน WCF ทำได้โดยใช้ ระบบการวินิจฉัย ตัวรับฟังตามเนมสเปซและการกำหนดค่า
การกำหนดค่าตัวอย่าง:
<system.diagnostics>
<sources>
<source name="System.ServiceModel" switchValue="Information, ActivityTracing">
<listeners>
<add name="xml" type="System.Diagnostics.XmlWriterTraceListener" initializeData="WCFTrace.svclog" />
</listeners>
</source>
</sources>
</system.diagnostics>
ระบบจะบันทึกกิจกรรมการส่งข้อความลงในไฟล์ .svclog ไฟล์ที่สามารถดูได้ใน เครื่องมือแสดงข้อมูลการติดตามบริการ (SvcTraceViewer.exe).
สิ่งนี้มีความสำคัญอย่างยิ่งสำหรับการวินิจฉัยปัญหาคอขวดด้านประสิทธิภาพ ปัญหาการเชื่อมโยง หรือข้อยกเว้นด้านความปลอดภัยในสภาพแวดล้อมการใช้งานจริง
36) คุณจะจัดการการกำหนดเวอร์ชันในบริการ WCF ได้อย่างไร?
การกำหนดเวอร์ชันของบริการช่วยให้มั่นใจได้ถึงความเข้ากันได้กับเวอร์ชันก่อนหน้าเมื่อทำการแก้ไขสัญญาหรือโครงสร้างข้อมูล
แนวทางปฏิบัติที่ดีที่สุด ได้แก่:
- จุดเชื่อมต่อใหม่: รองรับการใช้งานหลายเวอร์ชัน (v1, v2) โดยใช้ที่อยู่หรือการเชื่อมต่อที่แตกต่างกัน
- การกำหนดเวอร์ชันของ DataContract: ใช้
[DataMember(IsRequired = false)]และ[DataMember(Order)]เพื่อจัดการกับสมาชิกเสริม - การกำหนดเวอร์ชันของอินเทอร์เฟซ: ควรขยายอินเทอร์เฟซแทนการแก้ไขอินเทอร์เฟซที่มีอยู่แล้ว
ตัวอย่าง: เปิดเผย ICustomerServiceV2 สืบทอดมาจาก ICustomerServiceV1 เพื่อเพิ่มวิธีการใหม่โดยไม่ทำให้ไคลเอนต์เดิมเสียหาย
การกำหนดเวอร์ชันที่เหมาะสมช่วยให้การพัฒนาเป็นไปอย่างราบรื่นโดยไม่กระทบต่อการทำงานร่วมกันที่มีอยู่เดิม
37) Custom Bindings คืออะไร และควรใช้เมื่อใด?
A ผูกเอง ช่วยให้นักพัฒนาสามารถกำหนดโครงสร้างช่องทางการสื่อสารของตนเองได้ โดยการรวมองค์ประกอบการเชื่อมต่อด้วยตนเอง (การขนส่ง การเข้ารหัส ความปลอดภัย)
ตัวอย่าง:
<customBinding>
<binding name="MyCustomBinding">
<binaryMessageEncoding />
<tcpTransport />
</binding>
</customBinding>
ใช้กรณี:
- เมื่อไม่มีการผูกมัดแบบมาตรฐาน (เช่น
NetTcpBinding,WSHttpBinding) ตรงตามข้อกำหนดเฉพาะ - เมื่อผสมผสานประเภทการเข้ารหัสและการส่งข้อมูลที่ไม่รองรับเข้าด้วยกัน
- เมื่อทำการเชื่อมต่อกับระบบที่เป็นกรรมสิทธิ์ซึ่งต้องการการตั้งค่าการสื่อสารเฉพาะ
การตั้งค่าการผูกคีย์แบบกำหนดเองช่วยให้ควบคุมได้ละเอียดขึ้น แต่ก็เพิ่มความซับซ้อนในการกำหนดค่าด้วย
38) การสตรีมมิ่งใน WCF คืออะไร และมีประโยชน์อย่างไร?
ที่พริ้ว ช่วยให้ WCF สามารถส่งข้อมูลขนาดใหญ่ (เช่น ไฟล์ วิดีโอ) เป็นส่วนๆ แทนที่จะบัฟเฟอร์ข้อความทั้งหมดไว้ในหน่วยความจำ
สิ่งนี้สามารถทำได้โดยการตั้งค่า transferMode="Streamed" ในการกำหนดค่าการผูกมัด
<basicHttpBinding> <binding transferMode="Streamed" maxReceivedMessageSize="67108864" /> </basicHttpBinding>
ข้อดี:
- ช่วยลดการใช้หน่วยความจำ
- ช่วยเพิ่มประสิทธิภาพในการรับส่งข้อมูลขนาดใหญ่
- เหมาะสำหรับแอปพลิเคชันการแชร์ไฟล์หรือการถ่ายโอนสื่อ
อย่างไรก็ตาม การสตรีมจะปิดใช้งาน WS-ReliableMessaging และคุณสมบัติความปลอดภัยบางอย่าง ดังนั้นจึงต้องใช้งานอย่างระมัดระวัง
39) คุณจะย้ายบริการ WCF ไปยัง .NET Core หรือ gRPC ได้อย่างไร?
WCF ไม่ได้รับการสนับสนุนโดยตรงใน .NET Core หรือ .NET 6 ขึ้นไป
เพื่อปรับปรุงบริการที่มีอยู่ให้ทันสมัยยิ่งขึ้น Microsoft แนะนำให้ย้ายไปที่ คอร์WCF (พอร์ตโอเพนซอร์ส) หรือ ก.ร.ป.
| การโยกย้าย Target | ที่ดีที่สุดสำหรับ | ข้อดี |
|---|---|---|
| คอร์WCF | รักษาความเข้ากันได้กับ WCF | เปลี่ยนแปลงโค้ดเพียงเล็กน้อย API ยังคงคล้ายคลึงกัน |
| ก.ร.ป | การพัฒนาไมโครเซอร์วิสใหม่ | ประสิทธิภาพสูง รองรับหลายแพลตฟอร์ม และเน้นการใช้งานตามสัญญาเป็นหลัก (Protobuf) |
| ASP.NET Core Web API | การปรับปรุงให้ทันสมัยบนพื้นฐานของ REST | ความเรียบง่ายและการใช้งานที่แพร่หลาย |
โดยทั่วไป การย้ายระบบจะเกี่ยวข้องกับการแทนที่เอนด์พอยต์ WCF ที่ใช้การกำหนดค่าด้วย การกำหนดเส้นทางตามคุณลักษณะ และการนำสัญญาข้อมูลกลับมาใช้ใหม่โดยใช้ DTOs (Data Objectives)
40) ปัจจัยสำคัญที่ควรพิจารณาในการออกแบบโซลูชัน WCF ระดับองค์กรมีอะไรบ้าง?
การออกแบบระบบ WCF ระดับองค์กรจำเป็นต้องสร้างสมดุลระหว่างความสามารถในการขยายขนาด ความน่าเชื่อถือ และความสามารถในการบำรุงรักษา
ข้อควรพิจารณาที่สำคัญ:
- การรักษาความปลอดภัย: ดำเนินการรักษาความปลอดภัยในระดับการขนส่งและระดับข้อความ
- scalability: กำหนดค่าโหมดการจำกัดปริมาณการใช้งาน โหมดอินสแตนซ์ และโหมดการทำงานพร้อมกัน
- ความทนทานต่อความผิดพลาด: ใช้สัญญาการจัดการข้อผิดพลาดและการลองส่งข้อความซ้ำ
- การตรวจสอบ: เปิดใช้งานการวินิจฉัย การติดตาม และการบันทึกข้อมูลแบบรวมศูนย์
- ความสามารถในการทำงานร่วมกัน: เลือกการเชื่อมต่อ (HTTP, TCP, MSMQ) ที่สอดคล้องกับเทคโนโลยีของไคลเอ็นต์
- การบำรุงรักษา: ใช้กลยุทธ์การกำหนดเวอร์ชันและการแยกการกำหนดค่า
ตัวอย่าง: โซลูชัน WCF ของธนาคารขนาดใหญ่อาจใช้ NetTcpBinding สำหรับบริการความเร็วสูงภายในและ WSHttpBinding เพื่อรองรับ API ภายนอกที่ปลอดภัย พร้อมระบบโฮสติ้งแบบกระจายโหลดบน IIS/WAS
🔍 คำถามสัมภาษณ์งาน WCF ยอดนิยม พร้อมสถานการณ์จริงและคำตอบเชิงกลยุทธ์
ด้านล่างนี้คือ 10 คำถามและคำตอบที่เหมือนจริงในการสัมภาษณ์งาน มุ่งเน้นไปที่ Windows การสื่อสาร Foundation (WCF)ชุดนี้ประกอบด้วยส่วนผสมที่ลงตัวของ คำถามที่อิงตามความรู้ พฤติกรรม และสถานการณ์เขียนด้วยสำนวนการสัมภาษณ์แบบมืออาชีพ
1) คืออะไร Windows การสื่อสาร Foundationและเหตุใดจึงถูกนำไปใช้ในแอปพลิเคชันระดับองค์กร?
สิ่งที่คาดหวังจากผู้สมัคร: ผู้สัมภาษณ์ต้องการประเมินความเข้าใจพื้นฐานของคุณเกี่ยวกับ WCF และบทบาทของมันในการสร้างระบบกระจายศูนย์
ตัวอย่างคำตอบ: Windows การสื่อสาร Foundation เป็นเฟรมเวิร์กสำหรับการสร้างแอปพลิเคชันที่เน้นการให้บริการ ช่วยให้การสื่อสารระหว่างส่วนประกอบแบบกระจายศูนย์มีความปลอดภัย เชื่อถือได้ และทำงานร่วมกันได้ โดยใช้โปรโตคอลต่างๆ เฟรมเวิร์กนี้มักใช้ในแอปพลิเคชันระดับองค์กร เนื่องจากรองรับกลไกการขนส่งหลายรูปแบบ คุณสมบัติความปลอดภัยที่แข็งแกร่ง และความสามารถในการปรับขนาดสำหรับระบบที่ซับซ้อน
2) คุณช่วยอธิบายหลักการพื้นฐานของ WCF (WCF) ได้ไหม?
สิ่งที่คาดหวังจากผู้สมัคร: ผู้สัมภาษณ์ต้องการทดสอบความเข้าใจเชิงลึกของคุณเกี่ยวกับส่วนประกอบหลักของ WCF
ตัวอย่างคำตอบ: หลักการพื้นฐานของ WCF ย่อมาจาก Address, Binding และ Contract Address ระบุตำแหน่งที่ตั้งของบริการ Binding กำหนดวิธีการสื่อสารของบริการ รวมถึงโปรโตคอลและการเข้ารหัส และ Contract กำหนดการดำเนินการที่บริการเปิดเผย ทั้งหมดนี้รวมกันเพื่ออธิบายว่าไคลเอ็นต์โต้ตอบกับบริการ WCF อย่างไร
3) คุณจัดการด้านความปลอดภัยในบริการ WCF อย่างไร?
สิ่งที่คาดหวังจากผู้สมัคร: ผู้สัมภาษณ์ต้องการเข้าใจแนวทางของคุณในการปกป้องข้อมูลและสร้างความมั่นใจในการสื่อสารที่ปลอดภัย
ตัวอย่างคำตอบ: การรักษาความปลอดภัยของ WCF สามารถทำได้โดยใช้การรักษาความปลอดภัยระดับการขนส่ง การรักษาความปลอดภัยระดับข้อความ หรือการผสมผสานทั้งสองอย่าง ในบทบาทก่อนหน้านี้ ผมได้นำการรักษาความปลอดภัยระดับการขนส่งมาใช้โดยใช้ HTTPS สำหรับบริการที่ไวต่อประสิทธิภาพ และการรักษาความปลอดภัยระดับข้อความเมื่อต้องการการป้องกันแบบครบวงจรข้ามตัวกลางต่างๆ
4) อธิบายสถานการณ์ที่คุณต้องเลือกระหว่าง WCF bindings ที่แตกต่างกัน
สิ่งที่คาดหวังจากผู้สมัคร: ผู้สัมภาษณ์กำลังประเมินทักษะการตัดสินใจของคุณในสถานการณ์จริง
ตัวอย่างคำตอบ: ในตำแหน่งงานก่อนหน้านี้ ผมต้องเลือกระหว่าง BasicHttpBinding และ NetTcpBinding เนื่องจากบริการดังกล่าวถูกใช้งานโดยลูกค้าภายนอกและต้องการความสามารถในการทำงานร่วมกัน ผมจึงเลือก BasicHttpBinding ส่วนสำหรับการสื่อสารภายในที่มีประสิทธิภาพสูง ผมเลือก NetTcpBinding เนื่องจากมีประสิทธิภาพและรองรับการเข้ารหัสแบบไบนารี
5) คุณจัดการกับข้อยกเว้นและข้อผิดพลาดในบริการ WCF อย่างไร?
สิ่งที่คาดหวังจากผู้สมัคร: ผู้สัมภาษณ์ต้องการประเมินว่าคุณออกแบบบริการที่มีประสิทธิภาพและใช้งานง่ายได้อย่างไร
ตัวอย่างคำตอบ: ฉันจัดการข้อยกเว้นใน WCF โดยใช้ Fault Contracts ซึ่งช่วยให้เซอร์วิสสามารถส่งข้อมูลข้อผิดพลาดที่มีโครงสร้างและมีความหมายกลับไปยังไคลเอ็นต์ได้ แทนที่จะเปิดเผยข้อยกเว้นภายใน ฉันกำหนดข้อความข้อผิดพลาดแบบกำหนดเองซึ่งช่วยให้ไคลเอ็นต์เข้าใจและจัดการข้อผิดพลาดได้อย่างราบรื่น
6) คุณมีแนวทางอย่างไรในการเพิ่มประสิทธิภาพการทำงานในแอปพลิเคชัน WCF?
สิ่งที่คาดหวังจากผู้สมัคร: ผู้สัมภาษณ์กำลังมองหาผู้ที่มีประสบการณ์จริงในการปรับปรุงประสิทธิภาพการบริการ
ตัวอย่างคำตอบ: การเพิ่มประสิทธิภาพการทำงานใน WCF เกี่ยวข้องกับการเลือกการเชื่อมโยงที่เหมาะสม การเปิดใช้งานการจัดการอินสแตนซ์และการทำงานพร้อมกัน และการใช้การเรียงลำดับข้อมูลที่ถูกต้อง ในงานก่อนหน้านี้ ผมได้ปรับปรุงประสิทธิภาพโดยการเปลี่ยนจากการเข้ารหัสข้อความเป็นการเข้ารหัสไบนารี และโดยการกำหนดค่าบริการให้ใช้การสร้างอินสแตนซ์ต่อการเรียกใช้ในกรณีที่เหมาะสม
7) คุณช่วยอธิบายความแตกต่างระหว่างบริการ WCF แบบมีสถานะ (stateful) และแบบไม่มีสถานะ (stateless) ได้ไหม?
สิ่งที่คาดหวังจากผู้สมัคร: ผู้สัมภาษณ์ต้องการทดสอบความเข้าใจของคุณเกี่ยวกับรูปแบบการออกแบบบริการ (Service Design Patterns)
ตัวอย่างคำตอบ: บริการ WCF แบบไร้สถานะจะไม่เก็บรักษาข้อมูลเฉพาะของลูกค้าแต่ละรายระหว่างการร้องขอ ทำให้สามารถปรับขนาดได้ดีกว่าและจัดการได้ง่ายกว่า ในขณะที่บริการแบบมีสถานะจะเก็บรักษาข้อมูลเซสชันไว้ระหว่างการเรียกใช้งานหลายครั้ง ซึ่งอาจทำให้ขั้นตอนการทำงานบางอย่างง่ายขึ้น แต่ก็อาจลดความสามารถในการปรับขนาดลงได้ การเลือกใช้ขึ้นอยู่กับข้อกำหนดทางธุรกิจและปริมาณงานที่คาดการณ์ไว้
8) อธิบายถึงปัญหาที่ท้าทายเกี่ยวกับ WCF ที่คุณเคยประสบ และวิธีการที่คุณแก้ไขปัญหานั้น
สิ่งที่คาดหวังจากผู้สมัคร: ผู้สัมภาษณ์กำลังประเมินทักษะการแก้ปัญหาและความสามารถในการปรับตัว
ตัวอย่างคำตอบ: ในบทบาทงานล่าสุดของฉัน ฉันพบปัญหาการสื่อสารล้มเหลวเป็นระยะๆ เนื่องจากการตั้งค่าหมดเวลาที่ไม่ถูกต้อง ฉันแก้ไขปัญหาโดยการวิเคราะห์บันทึกการบริการ ปรับค่าหมดเวลา และใช้ตรรกะการลองใหม่ ซึ่งช่วยเพิ่มความน่าเชื่อถือของการบริการได้อย่างมากภายใต้สภาวะที่มีภาระงานสูงสุด
9) คุณจะมั่นใจได้อย่างไรว่าการกำหนดเวอร์ชันและความเข้ากันได้กับเวอร์ชันก่อนหน้าในบริการ WCF เป็นไปอย่างราบรื่น?
สิ่งที่คาดหวังจากผู้สมัคร: ผู้สัมภาษณ์ต้องการเข้าใจว่าคุณรับมือกับการเปลี่ยนแปลงของบริการโดยไม่ทำให้ลูกค้าปัจจุบันเสียหายได้อย่างไร
ตัวอย่างคำตอบ: ฉันรับประกันความเข้ากันได้กับเวอร์ชันก่อนหน้าโดยใช้สัญญาที่มีการกำหนดเวอร์ชันและหลีกเลี่ยงการเปลี่ยนแปลงที่ส่งผลกระทบต่อการทำงานที่มีอยู่ ฟังก์ชันการทำงานใหม่จะถูกนำเสนอผ่านสัญญาบริการใหม่หรือสมาชิกข้อมูลเสริม ซึ่งช่วยให้ไคลเอนต์รุ่นเก่าสามารถใช้งานต่อไปได้โดยไม่ต้องแก้ไขใดๆ
10) คุณรับมือกับกำหนดเวลาที่กระชั้นชิดอย่างไรเมื่อทำงานในโครงการที่ใช้ WCF?
สิ่งที่คาดหวังจากผู้สมัคร: ผู้สัมภาษณ์กำลังประเมินทักษะการบริหารเวลาและทักษะการทำงานร่วมกัน
ตัวอย่างคำตอบ: เมื่อเผชิญกับกำหนดเวลาที่กระชั้นชิด ผมจะให้ความสำคัญกับฟังก์ชันการทำงานของบริการที่สำคัญและมุ่งเน้นการส่งมอบโซลูชันหลักที่มีเสถียรภาพก่อน ผมสื่อสารกับผู้มีส่วนได้ส่วนเสียอย่างชัดเจน แบ่งงานออกเป็นขั้นตอนย่อยที่จัดการได้ และทำงานร่วมกับสมาชิกในทีมอย่างใกล้ชิดเพื่อแก้ไขปัญหาอย่างรวดเร็วในขณะที่ยังคงรักษาคุณภาพของบริการไว้
