WSDL คืออะไร? ความหมายและตัวอย่าง

⚡ สรุปอย่างชาญฉลาด

WSDL (บริการเว็บ DescriptWSDL (Web Service Licensing) คือไฟล์ XML ที่บอกแอปพลิเคชันไคลเอ็นต์ว่าเว็บเซอร์วิสทำอะไรและเรียกใช้งานอย่างไร เอกสารนี้จะอธิบายโครงสร้าง WSDL องค์ประกอบ ข้อความ ประเภทพอร์ต การผูกข้อมูล และตัวอย่างการเผยแพร่

  • 📄 คำจำกัดความหลัก: WSDL คือไฟล์ XML ที่อธิบายตำแหน่งที่ตั้ง การทำงาน และข้อความที่บริการเว็บรับและส่งคืน
  • 🏗️ โครงสร้างเอกสาร: เอกสาร WSDL ถูกจัดระเบียบเป็นองค์ประกอบต่างๆ ได้แก่ ประเภท ข้อความ ประเภทพอร์ต การผูก และบริการ โดยทั้งหมดถูกห่อหุ้มด้วยส่วนกำหนดคำจำกัดความ (definitions root)
  • 🔤 องค์ประกอบสำคัญ: องค์ประกอบ types กำหนดประเภทข้อมูล องค์ประกอบ message กำหนดข้อมูลที่แลกเปลี่ยน องค์ประกอบ portType จัดกลุ่มการดำเนินการ และองค์ประกอบ binding เชื่อมโยงการดำเนินการเหล่านั้นกับโปรโตคอล
  • ✉️ ข้อความและพอร์ต: แต่ละเมธอดบนเว็บใช้ข้อความขาเข้าและข้อความขาออก ซึ่งรวมกันเป็นหนึ่งการดำเนินการที่เปิดเผยผ่านประเภทพอร์ต
  • 🛠️ สร้างโดยอัตโนมัติ: โปรแกรมแก้ไขข้อความ เช่น Visual Studio และ Eclipse สร้างไฟล์ WSDL โดยอัตโนมัติ ซึ่งแอปพลิเคชันไคลเอ็นต์จะนำไปใช้ในการเรียกใช้บริการ

WSDL คืออะไร

WSDL คืออะไร?

บริการเว็บ Descriptภาษาไอออน (WSDL) เป็นไฟล์ที่ใช้ XML ซึ่งโดยพื้นฐานแล้วจะบอกแอปพลิเคชันไคลเอนต์ว่าบริการเว็บทำอะไร ไฟล์ WSDL ใช้เพื่ออธิบายโดยสรุปว่าบริการบนเว็บทำอะไร และให้ข้อมูลทั้งหมดที่จำเป็นแก่ลูกค้าในการเชื่อมต่อกับบริการเว็บ และใช้ฟังก์ชันทั้งหมดที่มีให้โดยบริการเว็บ

ในบทเรียนนี้ เราจะมุ่งเน้นไปที่ส่วนที่สำคัญที่สุดของเว็บเซอร์วิส นั่นก็คือ WSDL หรือ Web Services Descriptภาษาไอออน มันทำหน้าที่เป็นคอนtract ระหว่างเว็บเซอร์วิสและไคลเอ็นต์ใด ๆ ที่ต้องการใช้งาน

โครงสร้างของเอกสาร WSDL

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

  • ไฟล์ WSDL ประกอบด้วยตำแหน่งที่ตั้งของเว็บเซอร์วิส และ
  • วิธีการที่ถูกเปิดเผยโดยบริการเว็บ

ไฟล์ WSDL อาจดูซับซ้อนสำหรับผู้ใช้ทั่วไป แต่ไฟล์นี้ประกอบด้วยข้อมูลที่จำเป็นทั้งหมดที่แอปพลิเคชันไคลเอ็นต์ใด ๆ ต้องการเพื่อใช้งานเว็บเซอร์วิสที่เกี่ยวข้อง โครงสร้างทั่วไปของไฟล์ WSDL มีดังนี้:

  • คำนิยาม
  • Targetnamespace
  • ประเภทข้อมูล
  • Messages
  • ประเภทพอร์ต
  • ผูก
  • บริการ

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

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

<!-- WSDL definition structure -->
<definitions
      name="Guru99Service"
      targetNamespace=http://example.org/math/
      xmlns=http://schemas.xmlsoap.org/wsdl/>
   <!-- abstract definitions -->
      <types> ...
      <message> ...
      <portType> ...

   <!-- concrete definitions -->
      <binding> ...
      <service> ...
</definition>

ด้านล่างนี้คือแผนภาพแสดงโครงสร้างของไฟล์ WSDL

โครงสร้างของเอกสาร WSDL

โครงสร้างของ WSDL

องค์ประกอบ WSDL

ไฟล์ WSDL ประกอบด้วยส่วนหลักดังต่อไปนี้:

  1. การขอ แท็กนี้ใช้สำหรับกำหนดชนิดข้อมูลที่ซับซ้อนทั้งหมดที่จะใช้ในการแลกเปลี่ยนข้อความระหว่างแอปพลิเคชันไคลเอ็นต์และเว็บเซอร์วิส สิ่งนี้สำคัญเพราะหากเว็บเซอร์วิสทำงานกับชนิดข้อมูลที่ซับซ้อน แอปพลิเคชันไคลเอ็นต์จะต้องรู้วิธีประมวลผล ชนิดข้อมูลเช่น float, numbers และ strings เป็นชนิดข้อมูลพื้นฐาน แต่เว็บเซอร์วิสอาจมีชนิดข้อมูลที่มีโครงสร้าง ตัวอย่างเช่น อาจมีชนิดข้อมูลที่เรียกว่า EmployeeDataType ซึ่งมี 2 องค์ประกอบคือ “EmployeeName” ซึ่งเป็นชนิด string และ “EmployeeID” ซึ่งเป็นชนิด number หรือ integer รวมกันแล้วจะเป็นชนิดข้อมูลที่ซับซ้อน
  2. การขอ แท็กใช้สำหรับกำหนดข้อความที่แลกเปลี่ยนระหว่างแอปพลิเคชันไคลเอ็นต์และเว็บเซิร์ฟเวอร์ ข้อความเหล่านี้จะอธิบายการดำเนินการอินพุตและเอาต์พุตที่เว็บเซอร์วิสสามารถดำเนินการได้ ตัวอย่างของข้อความอาจเป็นข้อความที่รับ EmployeeID ของพนักงาน และข้อความเอาต์พุตอาจเป็นชื่อของพนักงานโดยอิงจาก EmployeeID ที่ให้มา
  3. การขอ แท็กนี้ใช้เพื่อห่อหุ้มข้อความอินพุตและเอาต์พุตทั้งหมดเป็นการดำเนินการเชิงตรรกะหนึ่งเดียว ดังนั้นอาจมีการดำเนินการที่เรียกว่า "GetEmployee" ซึ่งรวมข้อความอินพุตของการยอมรับ EmployeeID จากแอปพลิเคชันไคลเอนต์แล้วส่ง EmployeeName เป็นข้อความเอาต์พุต
  4. การขอ แท็กใช้สำหรับผูกการทำงานเข้ากับประเภทพอร์ตเฉพาะ เพื่อให้เมื่อแอปพลิเคชันไคลเอ็นต์เรียกใช้ประเภทพอร์ตที่เกี่ยวข้อง แอปพลิเคชันจะสามารถเข้าถึงการทำงานที่ผูกไว้กับพอร์ตนั้นได้ ประเภทพอร์ตก็เหมือนกับอินเทอร์เฟซ ดังนั้นหากแอปพลิเคชันไคลเอ็นต์ต้องการใช้เว็บเซอร์วิส พวกเขาจะต้องใช้ข้อมูลการผูกเพื่อตรวจสอบให้แน่ใจว่าพวกเขาสามารถเชื่อมต่อกับอินเทอร์เฟซที่เว็บเซอร์วิสนั้นจัดให้ได้
  5. การขอ แท็กคือชื่อที่กำหนดให้กับเว็บเซอร์วิสนั้นๆ ในขั้นต้น เมื่อแอปพลิเคชันไคลเอ็นต์เรียกใช้เว็บเซอร์วิส มันจะเรียกใช้โดยใช้ชื่อของเว็บเซอร์วิส ตัวอย่างเช่น เว็บเซอร์วิสอาจอยู่ที่ที่อยู่เช่น http://localhost/Guru99/Tutorial.asmx. แท็กบริการจะมี URL มีการกำหนดค่าไว้ ซึ่งจะบอกแอปพลิเคชันไคลเอ็นต์ว่ามีบริการเว็บอยู่ที่ตำแหน่งนี้

ทำไมต้อง WSDL

เว็บเซอร์วิสเป็นส่วนประกอบสำคัญในการสร้างเว็บแอปพลิเคชันในยุคปัจจุบัน จุดประสงค์หลักคือการทำให้แอปพลิเคชันหลายตัวที่สร้างขึ้นด้วยภาษาโปรแกรมต่างๆ สามารถสื่อสารกันได้ ตัวอย่างเช่น เราสามารถให้เว็บแอปพลิเคชัน .NET สื่อสารกับเว็บแอปพลิเคชันอื่นได้ Java แอปพลิเคชันผ่านบริการบนเว็บ

เว็บเซอร์วิสมีคุณลักษณะสำคัญดังต่อไปนี้:

  • มันถูกสร้างขึ้นโดยใช้ภาษาการเขียนโปรแกรม XML เทคโนโลยีสมัยใหม่เกือบทั้งหมด เช่น .Net และ Java มีคำสั่งที่เกี่ยวข้องซึ่งมีความสามารถในการทำงานกับ XML ดังนั้น XML จึงถูกใช้เป็นภาษาที่เหมาะสมที่สุดสำหรับการสร้างบริการเว็บ
  • เว็บเซอร์วิสสื่อสารกันผ่านโปรโตคอล HTTP HTTP เป็นโปรโตคอลที่แอปพลิเคชันบนเว็บทุกตัวใช้ ดังนั้นจึงเป็นเรื่องสมเหตุสมผลที่จะทำให้แน่ใจว่าเว็บเซอร์วิสก็สามารถทำงานผ่านโปรโตคอล HTTP ได้เช่นกัน
  • บริการเว็บสอดคล้องกับข้อกำหนดภาษาเฉพาะ ข้อกำหนดนี้กำหนดโดย W3C ซึ่งเป็นหน่วยงานกำกับดูแลมาตรฐานเว็บทั้งหมด
  • บริการบนเว็บมีภาษาคำอธิบายที่เรียกว่า WSDL ซึ่งใช้เพื่ออธิบายบริการเว็บ

ไฟล์ WSDL เขียนด้วยภาษา XML เหตุผลที่เขียนด้วย XML ก็เพื่อให้ภาษาโปรแกรมใดๆ ก็สามารถอ่านไฟล์ได้ ดังนั้นหากแอปพลิเคชันไคลเอ็นต์เขียนด้วย .NET ก็จะเข้าใจไฟล์ XML นั้น ในทำนองเดียวกัน หากแอปพลิเคชันไคลเอ็นต์เขียนด้วยภาษาอื่นๆ ก็จะสามารถเข้าใจไฟล์ WSDL ได้เช่นกัน Java หากเป็นภาษาโปรแกรมมิ่ง ก็จะสามารถตีความไฟล์ WSDL ได้เช่นกัน

ความจำเป็นของ WSDL

ไฟล์ WSDL คือสิ่งที่เชื่อมโยงทุกอย่างเข้าด้วยกัน จากแผนภาพด้านบน คุณจะเห็นว่าคุณสามารถสร้างเว็บเซอร์วิสในภาษา .NET ได้ ดังนั้นนี่คือจุดที่เซอร์วิสถูกนำไปใช้งาน หากคุณไม่มีไฟล์ WSDL และต้องการ... Java เดิมทีการสร้างคลาสเพื่อใช้งานเว็บเซอร์วิสนั้นต้องใช้ความพยายามในการเขียนโค้ดอย่างมาก แต่ปัจจุบันด้วยไฟล์ WSDL ซึ่งเป็นไฟล์ XML ที่สามารถเข้าใจได้ด้วยภาษาโปรแกรมใดๆ คุณก็สามารถสร้างคลาสที่ใช้งานเว็บเซอร์วิสได้อย่างง่ายดาย Java คลาสใช้บริการเว็บ .Net ดังนั้นปริมาณความพยายามในการเขียนโค้ดจึงลดลงอย่างมาก

ส่วนข้อความ WSDL

WSDL ประกอบด้วยส่วนที่เรียกว่า “ข้อความ” ซึ่งแสดงโดย องค์ประกอบนี้ใช้เพื่ออธิบายข้อมูลที่แลกเปลี่ยนระหว่างเว็บเซอร์วิสและแอปพลิเคชันไคลเอ็นต์เป็นหลัก

บริการเว็บแต่ละบริการจะมีข้อความ 2 ประเภทเสมอ:

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

แต่ละข้อความก็จะมี องค์ประกอบที่ใช้อธิบายพารามิเตอร์ที่ใช้โดยข้อความอินพุตและเอาต์พุต

ด้านล่างนี้คือตัวอย่างง่ายๆ ของข้อความสำหรับบริการเว็บ หน้าที่ของบริการเว็บนี้คือการให้ชื่อของ "บทเรียน" เมื่อมีการส่ง "รหัสบทเรียน" เป็นพารามิเตอร์ไปยังบริการเว็บ

ส่วนข้อความ WSDL

  1. อย่างที่เราเห็น เว็บเซอร์วิสมีข้อความ 2 ข้อความ ข้อความหนึ่งสำหรับข้อมูลขาเข้า และอีกข้อความหนึ่งสำหรับข้อมูลขาออก
  2. ข้อความขาเข้ามีชื่อว่า TutorialNameRequest ซึ่งมีพารามิเตอร์หนึ่งตัวชื่อ TutorialID พารามิเตอร์นี้เป็นชนิดตัวเลข ซึ่งกำหนดโดยชนิด xsd:number
  3. ข้อความเอาต์พุตมีชื่อว่า TutorialNameResponse ซึ่งมีพารามิเตอร์หนึ่งตัวชื่อ TutorialName พารามิเตอร์นี้เป็นชนิดสตริง ซึ่งกำหนดโดยชนิด xsd:string

การผูกประเภทพอร์ต

ใน WSDL นั้น พอร์ตถูกใช้เพื่อกำหนดการทำงานที่สมบูรณ์หนึ่งอย่าง ซึ่งให้บริการโดยเว็บเซอร์วิส ในหัวข้อก่อนหน้านี้ เราได้เห็นว่าเว็บเซอร์วิสของเรามีข้อความ 2 ข้อความ ข้อความหนึ่งสำหรับรับข้อมูลเข้า เรียกว่า “TutorialNameRequest” และอีกข้อความหนึ่งสำหรับส่งข้อมูลออก เรียกว่า “TutorialNameResponse” ข้อความทั้งสองนี้รวมกันเป็นสิ่งที่เรียกว่า การทำงานที่สมบูรณ์หนึ่งอย่าง

WSDL ให้องค์ประกอบที่เรียกว่า ซึ่งใช้ในการกำหนดการดำเนินการต่างๆ ที่ให้บริการโดยเว็บเซอร์วิส

ประเภทพอร์ต การผูกพอร์ต ประเภทพอร์ต

ดังนั้นในตัวอย่างข้างต้นเราสามารถสังเกตได้ดังต่อไปนี้:

  1. ชื่อของประเภทพอร์ตที่ครอบคลุมการดำเนินการนั้นจะถูกกำหนดเป็น “Tutorial_PortType”
  2. การดำเนินการนี้มีชื่อว่า “Tutorial” ดังนั้นการดำเนินการของเราจึงให้ชื่อ TutorialName หากมีการระบุ TutorialID เป็นพารามิเตอร์อินพุต
  3. ต่อไปคือข้อความ 2 ข้อความของเรา ข้อความหนึ่งสำหรับข้อมูลนำเข้าและอีกข้อความหนึ่งสำหรับข้อมูลส่งออก ซึ่งเป็นส่วนประกอบของการดำเนินการของเรา

นอกจากนี้ยังมี องค์ประกอบก็ยังมี องค์ประกอบที่ใช้ในการกำหนดวิธีการถ่ายโอนข้อความ

ประเภทพอร์ต การเชื่อมต่อ

  1. ตัวอย่างข้างต้นแสดงให้เห็นว่าการผูกข้อมูลประกอบด้วยชื่อการผูกข้อมูล ซึ่งในกรณีของเราคือ “TutorialSoapBinding” การผูกข้อมูลในความหมายง่ายๆ คือ ข้อมูลที่แอปพลิเคชันไคลเอ็นต์ใช้เพื่อผูกตัวเองกับเว็บเซอร์วิส เมื่อผูกกับเว็บเซอร์วิสแล้ว แอปพลิเคชันนั้นก็จะสามารถเรียกใช้งานฟังก์ชันต่างๆ ที่เว็บเซอร์วิสเปิดเผยได้
  2. เลเยอร์การขนส่งระบุเป็น http:// ซึ่งหมายความว่าข้อความจะถูกส่งผ่านโปรโตคอล HTTP

การสร้างไฟล์ WSDL

ไฟล์ WSDL จะถูกสร้างขึ้นทุกครั้งที่มีการสร้างเว็บเซอร์วิสในภาษาโปรแกรมใดๆ ก็ตาม เนื่องจากไฟล์ WSDL ค่อนข้างซับซ้อนเกินกว่าจะสร้างขึ้นมาใหม่ทั้งหมดได้ จึงจำเป็นต้องใช้โปรแกรมแก้ไขข้อความต่างๆ เช่น Visual Studio สำหรับ .Net เป็นต้น Eclipse สำหรับ Java สร้างไฟล์ WSDL โดยอัตโนมัติ

ด้านล่างนี้เป็นตัวอย่างไฟล์ WSDL ที่สร้างขึ้นใน Visual Studio

<?xml version="1.0"?>
<definitions name="Tutorial"
      targetNamespace=http://Guru99.com/Tutorial.wsdl
      xmlns:tns=http://Guru99.com/Tutorial.wsdl
      xmlns:xsd1=http://Guru99.com/Tutorial.xsd
      xmlns:soap=http://schemas.xmlsoap.org/wsdl/soap/
      xmlns="http://schemas.xmlsoap.org/wsdl/">
   <types>
      <schema targetNamespace=http://Guru99.com/Tutorial.xsd
         xmlns="http://www.w3.org/2000/10/XMLSchema">
         <element name="TutorialNameRequest">
            <complexType>
               <all>
                  <element name="TutorialName" type="string"/>
               </all>
            </complexType>
         </element>
         <element name="TutorialIDRequest">
            <complexType>
               <all>
                  <element name="TutorialID" type="number"/>
               </all>
            </complexType>
         </element>
      </schema>
   </types>
   <message name="GetTutorialNameInput">
      <part name="body" element="xsd1:TutorialIDRequest"/>
   </message>
   <message name="GetTutorialNameOutput">
      <part name="body" element="xsd1:TutorialNameRequest"/>
   </message>
   <portType name="TutorialPortType">
      <operation name="GetTutorialName">
         <input message="tns:GetTutorialNameInput"/>
         <output message="tns:GetTutorialNameOutput"/>
      </operation>
   </portType>
   <binding name="TutorialSoapBinding" type="tns:TutorialPortType">
      <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
      <operation name="GetTutorialName">
         <soap:operation soapAction="http://Guru99.com/GetTutorialName"/>
         <input>
            <soap:body use="literal"/>
         </input>
         <output>
            <soap:body use="literal"/>
         </output>
      </operation>
   </binding>
   <service name="TutorialService">
      <documentation>TutorialService</documentation>
      <port name="TutorialPort" binding="tns:TutorialSoapBinding">
         <soap:address location="http://Guru99.com/Tutorial"/>
      </port>
   </service>
</definitions>

ไฟล์ WSDL ด้านบนดูซับซ้อนมากสำหรับผู้ใช้ทุกคน เราจะอธิบายส่วนต่างๆ อย่างละเอียดในบทเรียนถัดไป แต่สำหรับตอนนี้ เรามาดูภาพรวมว่าแต่ละส่วนของไฟล์ WSDL ทำหน้าที่อะไรบ้างกัน

การเผยแพร่ตัวอย่างบริการเว็บ

ต่อไปนี้เราจะมาดูตัวอย่างวิธีการเผยแพร่เว็บเซอร์วิสและใช้งานเว็บเซอร์วิสนั้นโดยใช้ Visual Studio ในตัวอย่างนี้ เราจะสร้างเว็บเซอร์วิสที่มี WebMethod หนึ่งตัว โดยเมธอดนี้จะรับพารามิเตอร์ประเภท Integer ที่ชื่อว่า “TutorialID” และจะส่งคืนค่าสตริงที่ชื่อว่า “Web Services”

จากนั้นเราจะสร้างแอปพลิเคชันแบบคอนโซล ซึ่งจะใช้งานเว็บเซอร์วิสนี้และเรียกเมธอดเว็บของเราตามลำดับ มาดูขั้นตอนที่จำเป็นในการดำเนินการตัวอย่างนี้กัน

ขั้นตอน 1) ขั้นตอนแรกคือการสร้างบริการเว็บของคุณ ขั้นตอนโดยละเอียดของวิธีการ Asp.Net ได้มีการอธิบายเกี่ยวกับการสร้างเว็บโปรเจ็กต์และเว็บเซอร์วิสไปแล้ว Good Farm Animal Welfare Awardsโปรดทำตามขั้นตอนเดียวกันเพื่อสร้างโปรเจ็กต์และเว็บเซอร์วิสตามลำดับ ส่วนสำคัญคือการใส่โค้ดด้านล่างลงในไฟล์เว็บเซอร์วิส

การเผยแพร่ตัวอย่างโค้ดเว็บเซอร์วิส

namespace webservic_asmx
{
   [WebService(Name = "Guru99 Web service")]
   public class TutorialService : System.Web.Services.WebService
   {
      [WebMethod]
      public string GetTutorialService(int TutorialID)
      {
         string TutorialName = "Web Services";
         return TutorialName;
      }
   }
}

Code คำอธิบาย:

  1. ในที่นี้เรากำลังสร้าง WebMethod ที่ชื่อว่า “Guru"99WebService" ในเมธอดเว็บนี้ เราได้รวมพารามิเตอร์จำนวนเต็มไว้ด้วย ซึ่งจะต้องส่งผ่านทุกครั้งที่มีการเรียกใช้เมธอดเว็บนี้
  2. ต่อไป เราจะกำหนดตัวแปรที่เรียกว่า “TutorialName” ซึ่งจะเก็บค่าสตริงของ “Web Services” นี่คือค่าที่จะถูกส่งกลับเมื่อมีการเรียกใช้บริการเว็บ

ขั้นตอน 2) เมื่อเรากำหนดไฟล์เว็บเซอร์วิสเสร็จแล้ว ขั้นตอนต่อไปคือการสร้างโปรเจ็กต์ไคลเอ็นต์ที่จะใช้งานเว็บเซอร์วิสนี้ มาสร้างแอปพลิเคชันคอนโซลอย่างง่ายที่จะเรียกใช้เว็บเซอร์วิสนี้ โดยเรียกใช้ “Guru99WebService” จากนั้นแสดงผลลัพธ์ของเมธอดเว็บในหน้าจอคอนโซลล็อก ทำตามขั้นตอนด้านล่างเพื่อสร้างแอปพลิเคชันคอนโซล คลิกขวาที่ไฟล์โซลูชัน Visual Studio แล้วเลือกตัวเลือก เพิ่ม->โครงการใหม่

การเผยแพร่ตัวอย่างบริการเว็บ เพิ่มโครงการใหม่

ขั้นตอน 3) ในขั้นตอนนี้

  1. ตรวจสอบให้แน่ใจว่าได้เลือก Visual ก่อน C# Windows ตัวเลือก. จากนั้นเลือกตัวเลือกในการสร้างแอปพลิเคชันคอนโซล
  2. ตั้งชื่อโครงการของคุณซึ่งในกรณีของเราเรียกว่า "DemoApplication"

การเผยแพร่แอปพลิเคชันคอนโซลตัวอย่างเว็บเซอร์วิส

หลังจากคลิกปุ่ม OK ในหน้าจอด้านบน คุณจะสามารถเห็นโปรเจ็กต์ใน Solution Explorer ใน Visual Studio ได้

การเผยแพร่ตัวอย่างบริการเว็บในตัวสำรวจโซลูชัน

ขั้นตอน 4) ในขั้นตอนนี้ คุณจะตั้งค่าแอปพลิเคชันคอนโซล DemoApplication ให้เป็นโปรเจกต์เริ่มต้น เพื่อให้แน่ใจว่าแอปพลิเคชันนี้จะเริ่มทำงานเป็นอันดับแรกเมื่อเรียกใช้โปรเจกต์ Visual Studio ทั้งหมด แอปพลิเคชันคอนโซลนี้จะเรียกใช้เว็บเซอร์วิสซึ่งจะถูกเรียกใช้โดยอัตโนมัติโดย Visual Studio ในการดำเนินการขั้นตอนนี้ ให้คลิกขวาที่โปรเจกต์ DemoApplication แล้วเลือกตัวเลือก “ตั้งค่าเป็นโปรเจกต์เริ่มต้น”

การเผยแพร่ชุดตัวอย่างบริการเว็บเป็นโครงการเริ่มต้น

ขั้นตอน 5) ขั้นตอนต่อไปคือการเพิ่มหมายเลขอ้างอิงบริการของ “Guruเพิ่ม "99Webservice" ลงในแอปพลิเคชันคอนโซลของเรา เพื่อให้ DemoApplication สามารถอ้างอิงถึงเว็บเซอร์วิสและเมธอดเว็บทั้งหมดในเว็บเซอร์วิสได้ วิธีการทำคือ คลิกขวาที่ไฟล์โปรเจ็กต์ DemoApplication แล้วเลือกเมนู Add->Service Reference

การเผยแพร่ตัวอย่างบริการเว็บ เพิ่มการอ้างอิงบริการ

ขั้นตอน 6) ในขั้นตอนนี้ เราจะระบุค่าต่างๆ ที่จำเป็นสำหรับการเพิ่มหมายเลขอ้างอิงบริการของเรา

  1. ขั้นแรก เราต้องเลือกตัวเลือกการค้นหา ตัวเลือกนี้จะเลือกไฟล์ WSDL สำหรับเว็บเซอร์วิส TutorialService ของเราโดยอัตโนมัติ
  2. ต่อไป เราควรตั้งชื่อให้กับหมายเลขอ้างอิงบริการของเรา ในกรณีของเรา เราตั้งชื่อว่า Guru99เว็บเซอร์วิส
  3. จากนั้นเราต้องขยายตัวเลือก TutorialService.asmx เพื่อให้เราเห็นเมธอด “GetTutorialService” ทางด้านขวามือ โดย TutorialService.asmx คือชื่อไฟล์ Visual Studio .Net ของเรา ซึ่งมีโค้ดสำหรับเว็บเซอร์วิสของเราอยู่
  4. จากนั้นเราจะมาดูเมธอดบนเว็บของเรา ซึ่งก็คือเมธอด “GetTutorialService”

การเผยแพร่ค่าอ้างอิงบริการตัวอย่างเว็บเซอร์วิส

เมื่อเราคลิกปุ่ม “ตกลง” โค้ดที่จำเป็นทั้งหมดสำหรับการเข้าถึงเว็บเซอร์วิสนี้จะถูกเพิ่มลงในแอปพลิเคชัน DemoApplication Console ของเรา ดังที่แสดงด้านล่าง ภาพหน้าจอแสดงให้เห็นว่า “Guru99Webservice ถูกเพิ่มเข้าไปในแอปพลิเคชันคอนโซลของเราเรียบร้อยแล้ว

การเผยแพร่บริการตัวอย่างเว็บเซอร์วิสที่เพิ่มเข้ามา

ขั้นตอน 7) ขั้นตอนต่อไปคือการเพิ่มโค้ดลงในแอปพลิเคชันคอนโซลของเราเพื่อเข้าถึงเมธอดเว็บในเว็บเซอร์วิสของเรา เปิดไฟล์โค้ด Program.cs ซึ่งมาพร้อมกับแอปพลิเคชันคอนโซลโดยอัตโนมัติ และเพิ่มโค้ดด้านล่างนี้

การเผยแพร่โค้ด Web Service Example Program.cs

namespace DemoApplication
{
   class Program
   {
      static void Main(string[] args)
      {
         var client = new Guru99Webservice.Guru99WebserviceSoapClient();

         Console.WriteLine(client.GetTutorialService(1));

         Console.ReadKey();
      }
   }
}

Code คำอธิบาย:

  1. ขั้นตอนแรกคือการเลือกไฟล์ Program.cs ไฟล์นี้เป็นไฟล์หลักที่ Visual Studio สร้างขึ้นเมื่อสร้างแอปพลิเคชันคอนโซล ไฟล์นี้จะเป็นไฟล์ที่ถูกเรียกใช้งานเมื่อแอปพลิเคชันคอนโซล (ในกรณีของเราคือ DemoApplication) ถูกเรียกใช้
  2. จากนั้นเราจะสร้างตัวแปรชื่อ “client” ซึ่งจะถูกกำหนดค่าให้เป็นอินสแตนซ์ของการอ้างอิงบริการที่เราสร้างไว้ในขั้นตอนก่อนหน้านี้ ในกรณีของเรา การอ้างอิงบริการคือ 'Guru99เว็บเซอร์วิสGuru99WebserviceSoapClient()'.
  3. จากนั้นเราจะเรียกใช้เมธอดเว็บของเรา 'GetTutorialService' ในเว็บเซอร์วิส TutorialService โปรดจำไว้ว่าเมธอด GetTutorialService ของเรารับพารามิเตอร์เป็นจำนวนเต็ม ดังนั้นเราจึงส่งพารามิเตอร์จำนวนเต็มไปยังเมธอดเว็บนั้น
  4. บรรทัดสุดท้ายนี้มีไว้เพื่อให้หน้าจอบันทึกข้อมูลในคอนโซลยังคงทำงานอยู่ เพื่อให้เราสามารถดูผลลัพธ์ได้ คำสั่งนี้จะรอรับข้อมูลจากผู้ใช้

เอาท์พุต

เมื่อทำตามขั้นตอนทั้งหมดข้างต้นแล้ว และเรียกใช้งานแอปพลิเคชันสาธิต (DemoApplication) ผลลัพธ์ต่อไปนี้จะปรากฏขึ้น

การเผยแพร่ผลลัพธ์ตัวอย่างบริการเว็บ

จากเอาต์พุต เราจะเห็นได้ชัดเจนว่า DemoApplication เรียกใช้บริการเว็บของเรา และสตริงที่ส่งคืนโดยบริการเว็บจะแสดงอยู่ในบันทึกคอนโซลของเรา

คำถามที่พบบ่อย

AI สามารถอ่านไฟล์ WSDL ที่ซับซ้อน อธิบายการทำงานด้วยภาษาที่เข้าใจง่าย สร้างคำขอตัวอย่าง และระบุความไม่ตรงกันระหว่างคอนฟิกกับคอนฟิกได้tracและขั้นตอนการนำไปใช้งาน ซึ่งจะช่วยเร่งการผสานรวมกับบริการเว็บ SOAP ที่ไม่คุ้นเคยหรือเก่ากว่าเดิม

ใช่แล้ว ผู้ช่วย AI สามารถแปลงคำจำกัดความ WSDL ให้เป็นไคลเอนต์สตับ โมเดลข้อมูล และตัวอย่างการเรียกใช้ในภาษาต่างๆ เช่น C# ได้ Javaหรือ Pythonนักพัฒนาควรตรวจสอบโค้ดที่สร้างขึ้นอีกครั้งเพื่อให้แน่ใจว่ามีการใช้เนมสเปซที่ถูกต้องและมีการจัดการข้อผิดพลาดอย่างเหมาะสม

SOAP คือโปรโตคอลการส่งข้อความที่ใช้ส่งคำขอและคำตอบในรูปแบบ XML ส่วน WSDL คือไฟล์คำอธิบายที่บอกให้ไคลเอ็นต์ทราบว่าบริการเว็บ SOAP มีฟังก์ชันการทำงานอะไรบ้างและวิธีการเรียกใช้ฟังก์ชันเหล่านั้น ทั้งสองอย่างนี้ใช้ร่วมกัน

ใช่แล้ว WSDL ยังคงเป็นมาตรฐานสำหรับเว็บเซอร์วิส SOAP ในระบบองค์กร ระบบธนาคาร และหน่วยงานภาครัฐที่ต้องการการเชื่อมต่ออย่างเป็นทางการtracโดยทั่วไป REST API รุ่นใหม่ๆ มักใช้ OpenAPI (Swagger) แทน แต่การผสานรวมแบบเก่าๆ จำนวนมากยังคงพึ่งพา WSDL อยู่

สรุปโพสต์นี้ด้วย: