บริการสามารถมีหลายจุดสิ้นสุดได้หรือไม่?

เมื่อพัฒนาบริการ โดยเฉพาะในสภาพแวดล้อมเช่น .NET หรือ WCF คุณอาจสงสัยว่า: บริการสามารถมีหลายจุดสิ้นสุดได้หรือไม่? คำถามนี้มักเกิดขึ้นเมื่อคุณมีความต้องการที่แตกต่างกันในหลายๆ การดำเนินงานหรือการตั้งค่าในบริการเดียวกัน ตัวอย่างเช่น คุณอาจมีบริการที่รองรับการตั้งค่าบางอย่างเฉพาะผ่าน net.tcp และคุณต้องการเพิ่มโปรโตคอลหรือวิธีการอื่น ๆ อย่างมีประสิทธิภาพ

ในโพสต์นี้ เราจะสำรวจ แนวทางในการมีหลายจุดสิ้นสุดในบริการเดียว และแยกย่อยขั้นตอนที่คุณต้องทำเพื่อให้การสื่อสารเป็นไปอย่างราบรื่นโดยไม่ต้องสร้างโฮสต์ใหม่ทั้งหมด

ทำความเข้าใจกับจุดสิ้นสุดของบริการ

ก่อนที่จะดำดิ่งสู่การกำหนดค่าหลายจุดสิ้นสุด เป็นสิ่งสำคัญที่จะต้องเข้าใจว่าจุดสิ้นสุดของบริการคืออะไร ในคำง่าย ๆ จุดสิ้นสุดเป็นที่อยู่เฉพาะที่บริการของคุณสามารถเข้าถึงได้ แต่ละจุดสิ้นสุดประกอบด้วยสามส่วนหลัก:

  1. ที่อยู่: URI ที่บริการของคุณสามารถเข้าถึงได้
  2. การเชื่อมต่อ: โปรโตคอลการสื่อสารที่ใช้ (เช่น net.tcp, HTTP, เป็นต้น)
  3. สัญญา: อินเทอร์เฟซที่กำหนดว่าบริการทำอะไร

เพื่อที่จะเพิ่มจุดสิ้นสุดหลายจุดในบริการเดียวได้อย่างประสบผลสำเร็จ คุณต้องมั่นใจว่าจุดสิ้นสุดแต่ละจุดมีการรวมกันที่ไม่ซ้ำกันของสามส่วนนี้

การเพิ่มจุดสิ้นสุดหลายจุดในบริการของคุณ

ขั้นตอนที่ 1: กำหนดที่อยู่ที่ไม่ซ้ำกัน

เมื่อคุณตั้งค่าหลายจุดสิ้นสุด ให้เริ่มต้นจากการระบุที่อยู่ที่ไม่ซ้ำกันสำหรับแต่ละจุดสิ้นสุด ตัวอย่างเช่น หากคุณใช้ net.tcp เป็นหลัก ให้เพิ่มจุดสิ้นสุดอื่นโดยใช้ที่อยู่ที่แตกต่างกัน เช่น HTTP ใน บริการที่โฮสต์โดย IIS (ที่แสดงในรูปแบบไฟล์ .SVC) ที่อยู่จุดสิ้นสุดของคุณสามารถตั้งค่าเป็น URI เชิงสัมพัทธ์ ความยืดหยุ่นนี้ช่วยให้คุณสามารถจัดหมวดหมู่ความสามารถที่แตกต่างกัน

ขั้นตอนที่ 2: ตั้งค่าการเชื่อมต่อที่แตกต่างกัน

กำหนดว่าบริการของคุณจะรองรับการเชื่อมต่อใดบ้าง ตัวอย่างเช่น หากคุณมีบริการที่ทำงานด้วย net.tcp โดยทั่วไป คุณอาจต้องการจุดสิ้นสุดอื่นที่รองรับ basicHttpBinding เพื่อให้เข้าถึงได้กว้างขึ้น

นี่คือสิ่งที่คุณสามารถกำหนดได้:

  • จุดสิ้นสุดที่ 1: สิงหาคมด้วย net.tcp
  • จุดสิ้นสุดที่ 2: การเข้าถึงทั่วไปผ่าน basicHttpBinding

ขั้นตอนที่ 3: กำหนดสัญญา

ให้แน่ใจว่าจุดสิ้นสุดแต่ละจุดใช้สัญญาที่กำหนดไว้ สัญญามีความสำคัญเพราะช่วยแจ้งให้ลูกค้าทราบว่าจะโต้ตอบกับบริการอย่างไร ให้แน่ใจว่าสัญญาทุกข้อปฏิบัติตามการดำเนินการที่เหมาะสมสำหรับแต่ละจุดสิ้นสุด

ขั้นตอนที่ 4: อัปเดตโค้ดของลูกค้า

เมื่อพัฒนาหรือสร้างโค้ดของลูกค้า ให้แน่ใจว่าโครงการ Visual Studio ของคุณหรือเครื่องมือเช่น wsdl.exe ระบุชื่อจุดสิ้นสุดในตัวสร้างได้อย่างถูกต้อง การแมปจุดสิ้นสุดอย่างถูกต้องจะช่วยให้คำขอของลูกค้าถึงเป้าหมายที่ตั้งใจไว้

ตัวอย่างการกำหนดค่า

นี่คือตัวอย่างแนวคิดเกี่ยวกับสิ่งที่การกำหนดค่าในไฟล์บริการของคุณอาจมีลักษณะดังนี้:

<service name="YourServiceNamespace.YourServiceClass">
  <endpoint address="net.tcp://localhost:8080/YourService"
            binding="netTcpBinding"
            contract="YourServiceNamespace.IYourService" />
  <endpoint address="http://localhost:8080/YourService"
            binding="basicHttpBinding"
            contract="YourServiceNamespace.IYourService" />
</service>

สรุป

โดยสรุป มันเป็นไปได้อย่างแท้จริงที่จะมีหลายจุดสิ้นสุดในบริการเดียวโดยไม่จำเป็นต้องสร้างโฮสต์ใหม่ทั้งหมด โดยการปฏิบัติตามขั้นตอนที่กล่าวถึง—การตั้งค่าที่อยู่ที่ไม่ซ้ำกัน การตั้งค่าการเชื่อมต่อที่เหมาะสม และการกำหนดสัญญา—คุณสามารถเพิ่มประสิทธิภาพในการสื่อสารของบริการของคุณ

สำหรับข้อมูลเพิ่มเติมที่ละเอียดขึ้น คุณสามารถตรวจสอบบทความ MSDN อย่างเป็นทางการเกี่ยวกับ หลายจุดสิ้นสุด

ไม่ว่าคุณจะกำลังสร้างแอปพลิเคชันขนาดใหญ่หรือบริการขนาดเล็ก การเข้าใจวิธีการจัดการหลายจุดสิ้นสุดอย่างมีประสิทธิภาพสามารถทำให้บริการของคุณโดดเด่นในเรื่องความยืดหยุ่นและการเข้าถึงของผู้ใช้