บทช่วยสอนบริการเว็บ SOAP: SOAP Protocol คืออะไร ตัวอย่าง

SOAP คืออะไร?

SOAP เป็นโปรโตคอลที่ใช้ XML สำหรับการเข้าถึงบริการเว็บผ่าน HTTP มีข้อกำหนดบางประการที่สามารถใช้ได้กับทุกแอปพลิเคชัน

SOAP เป็นที่รู้จักในชื่อ Simple Object Access Protocol แต่ในเวลาต่อมาได้มีการย่อเหลือเพียง SOAP v1.2 SOAP เป็นโปรโตคอลหรืออีกนัยหนึ่งคือคำจำกัดความของวิธีที่บริการเว็บสื่อสารกันหรือสื่อสารกับแอปพลิเคชันไคลเอนต์ที่เรียกใช้งาน

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

บทนำสบู่

ในโลกปัจจุบัน มีแอปพลิเคชั่นจำนวนมากที่สร้างขึ้นจากภาษาการเขียนโปรแกรมที่แตกต่างกัน ตัวอย่างเช่น อาจมีการออกแบบเว็บแอปพลิเคชันขึ้นมา Javaอีกหนึ่งรายการใน .Net และอีกรายการใน PHP.

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

วิธีการหนึ่งที่ใช้ในการจัดการกับความซับซ้อนนี้คือการใช้ XML (Extensible Markup Language) เป็นภาษาตัวกลางในการแลกเปลี่ยนข้อมูลระหว่างแอปพลิเคชัน

ภาษาการเขียนโปรแกรมทุกภาษาสามารถเข้าใจภาษามาร์กอัป XML ได้ ดังนั้น XML จึงถูกใช้เป็นสื่อหลักในการแลกเปลี่ยนข้อมูล

แต่ไม่มีข้อกำหนดมาตรฐานเกี่ยวกับการใช้ XML ในทุกภาษาการเขียนโปรแกรมสำหรับการแลกเปลี่ยนข้อมูล นั่นคือที่มาของซอฟต์แวร์ SOAP

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

ข้อดีของสบู่

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

  • เมื่อพัฒนาบริการบนเว็บที่ใช้ SOAP คุณจำเป็นต้องมีภาษาที่สามารถใช้สำหรับบริการเว็บเพื่อพูดคุยกับแอปพลิเคชันไคลเอนต์ สบู่เป็นสื่อกลางที่สมบูรณ์แบบซึ่งได้รับการพัฒนาเพื่อให้บรรลุวัตถุประสงค์นี้ โปรโตคอลนี้ยังแนะนำโดยสมาคม W3C ซึ่งเป็นหน่วยงานกำกับดูแลมาตรฐานเว็บทั้งหมด
  • SOAP เป็นโปรโตคอลน้ำหนักเบาที่ใช้สำหรับการแลกเปลี่ยนข้อมูลระหว่างแอปพลิเคชัน สังเกตคำหลัก 'เบา- เนื่องจากการเขียนโปรแกรม SOAP ขึ้นอยู่กับภาษา XML ซึ่งตัวมันเองเป็นภาษาแลกเปลี่ยนข้อมูลน้ำหนักเบา ดังนั้น SOAP จึงเป็นโปรโตคอลที่อยู่ในหมวดหมู่เดียวกัน
  • SOAP ได้รับการออกแบบมาให้เป็นอิสระจากแพลตฟอร์มและยังได้รับการออกแบบมาให้เป็นอิสระจากระบบปฏิบัติการอีกด้วย ดังนั้นโปรโตคอล SOAP จึงสามารถทำงานกับแอปพลิเคชันที่ใช้ภาษาการเขียนโปรแกรมใดก็ได้บนทั้งสองแพลตฟอร์ม Windows และ ลินุกซ์ เวที
  • มันทำงานบนโปรโตคอล HTTP –SOAP ทำงานบนโปรโตคอล HTTP ซึ่งเป็นโปรโตคอลเริ่มต้นที่ใช้โดยเว็บแอปพลิเคชันทั้งหมด ดังนั้นจึงไม่มีการปรับแต่งใด ๆ ที่จำเป็นในการเรียกใช้บริการเว็บที่สร้างขึ้นบนโปรโตคอล SOAP เพื่อทำงานบนเวิลด์ไวด์เว็บ

สบู่สำเร็จรูป

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

แผนภาพด้านล่างของสถาปัตยกรรม SOAP แสดงให้เห็นองค์ประกอบต่างๆ ของข้อความ SOAP

สบู่สำเร็จรูป
การสร้างบล็อคข้อความ SOAP

ข้อความ SOAP เป็นเพียงเอกสาร XML ซึ่งมีส่วนประกอบด้านล่างนี้

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

ตัวอย่างบริการ SOAP แบบง่ายที่มีประเภทที่ซับซ้อนแสดงด้านล่างนี้

สมมติว่าเราต้องการส่งประเภทข้อมูลที่มีโครงสร้างซึ่งประกอบด้วย "ชื่อบทช่วยสอน" และ "บทช่วยสอน" Description” จากนั้นเราจะกำหนดประเภทเชิงซ้อนดังแสดงด้านล่าง

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

<xsd:complexType>     
 <xsd:sequence>       
 	<xsd:element name="Tutorial Name" type="string"/>         
  	<xsd:element name="Tutorial Description"  type="string"/>
  </xsd:sequence>
</xsd:complexType>
  • องค์ประกอบ Body ที่ประกอบด้วยข้อมูลการเรียกและการตอบกลับ – องค์ประกอบนี้ประกอบด้วยข้อมูลจริงที่ต้องส่งระหว่างเว็บเซอร์วิสและแอปพลิเคชันที่เรียกใช้ ด้านล่างนี้คือตัวอย่างเว็บเซอร์วิส SOAP ของเนื้อหา SOAP ที่ใช้งานได้จริงบนประเภทที่ซับซ้อนซึ่งกำหนดไว้ในส่วนหัว ต่อไปนี้คือการตอบสนองของชื่อบทช่วยสอนและบทช่วยสอน Descriptไอออนที่ถูกส่งไปยังแอปพลิเคชันการโทรซึ่งเรียกใช้บริการเว็บนี้
<soap:Body>
   <GetTutorialInfo>
		<TutorialName>Web Services</TutorialName> 
		<TutorialDescription>All about web services</TutorialDescription> 
   </GetTutorialInfo>
</soap:Body>

โครงสร้างข้อความสบู่

สิ่งหนึ่งที่ควรทราบก็คือ ข้อความ SOAP มักจะสร้างขึ้นโดยอัตโนมัติโดยบริการบนเว็บเมื่อมีการเรียกใช้

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

ตามที่ได้กล่าวไว้ในหัวข้อก่อนหน้าของบทช่วยสอน SOAP นี้ ข้อความ SOAP ง่าย ๆ มีองค์ประกอบดังต่อไปนี้

  • องค์ประกอบซองจดหมาย
  • องค์ประกอบส่วนหัวและ
  • องค์ประกอบของร่างกาย
  • องค์ประกอบข้อบกพร่อง (ไม่บังคับ)

ลองดูตัวอย่างด้านล่างของข้อความ SOAP แบบง่ายๆ และดูว่าองค์ประกอบใดทำหน้าที่ได้จริง

โครงสร้างข้อความสบู่

โครงสร้างข้อความสบู่
  1. ตามที่เห็นจากข้อความ SOAP ข้างต้น ส่วนแรกของข้อความ SOAP คือองค์ประกอบซองจดหมายซึ่งใช้ในการห่อหุ้มข้อความ SOAP ทั้งหมด
  2. องค์ประกอบถัดไปคือเนื้อหา SOAP ซึ่งประกอบด้วยรายละเอียดของข้อความจริง
  3. ข้อความของเราประกอบด้วยบริการเว็บซึ่งมีชื่อว่า "Guru99WebService"
  4. “Guru99Webservice” ยอมรับพารามิเตอร์ประเภท 'int' และมีชื่อ TutorialID

ตอนนี้ข้อความ SOAP ข้างต้นจะถูกส่งผ่านระหว่างบริการเว็บและแอปพลิเคชันไคลเอนต์

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

องค์ประกอบซองจดหมายสบู่

ส่วนแรกของ Building Block คือ SOAP Envelope

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

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

สามารถสังเกตจุดต่อไปนี้ได้บนองค์ประกอบซองจดหมาย SOAP

  • ทุกข้อความ SOAP ต้องมีองค์ประกอบ Envelope รูท จำเป็นอย่างยิ่งสำหรับข้อความ SOAP ที่จะต้องมีองค์ประกอบซองจดหมาย
  • องค์ประกอบซองจดหมายทุกรายการต้องมีองค์ประกอบตัวสบู่อย่างน้อยหนึ่งองค์ประกอบ
  • หากองค์ประกอบ Envelope มีองค์ประกอบส่วนหัว จะต้องมีองค์ประกอบไม่เกิน 1 รายการ และจะต้องปรากฏเป็นองค์ประกอบย่อยแรกของ Envelope ก่อนองค์ประกอบเนื้อหา
  • ซองจดหมายจะเปลี่ยนไปเมื่อเวอร์ชัน SOAP เปลี่ยนไป
  • โปรเซสเซอร์ SOAP ที่สอดคล้องกับ v1.1 จะสร้างข้อผิดพลาดเมื่อได้รับข้อความที่มีเนมสเปซซองจดหมาย v1.2
  • ตัวประมวลผล SOAP ที่สอดคล้องกับ v1.2 สร้างข้อบกพร่องเวอร์ชันไม่ตรงกันหากได้รับข้อความที่ไม่มีเนมสเปซซองจดหมาย v1.2

ด้านล่างนี้เป็นตัวอย่าง SOAP API ของเวอร์ชัน 1.2 ขององค์ประกอบซองจดหมาย SOAP

<?xml version="1.0"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://www.w3.org/2001/12/soap-envelope" SOAP-ENV:encodingStyle=" http://www.w3.org/2001/12/soap-encoding">
          <soap:Body>
        <Guru99WebService xmlns="http://tempuri.org/">
                  <TutorialID>int</TutorialID>
                </Guru99WebService>
          </soap:Body>
</SOAP-ENV:Envelope>

ข้อความแสดงข้อผิดพลาด

เมื่อมีการร้องขอไปยังบริการเว็บ SOAP การตอบสนองที่ส่งคืนอาจมี 2 รูปแบบ คือ การตอบสนองที่สำเร็จหรือการตอบสนองข้อผิดพลาด เมื่อสร้างความสำเร็จ การตอบกลับจากเซิร์ฟเวอร์จะเป็นข้อความ SOAP เสมอ แต่ถ้าเกิดข้อผิดพลาด SOAP ข้อผิดพลาดเหล่านั้นจะถูกส่งกลับเป็นข้อผิดพลาด “HTTP 500”

ข้อความข้อผิดพลาด SOAP ประกอบด้วยองค์ประกอบต่อไปนี้

  1. – นี่คือรหัสที่กำหนดรหัสของข้อผิดพลาด รหัสความผิดปกติอาจเป็นค่าใดค่าหนึ่งด้านล่างก็ได้
    1. SOAP-ENV:VersionMismatch – นี่คือเมื่อพบเนมสเปซที่ไม่ถูกต้องสำหรับองค์ประกอบ SOAP Envelope
    2. SOAP-ENV:MustUnderstand – ไม่เข้าใจองค์ประกอบย่อยขององค์ประกอบส่วนหัว ซึ่งมีแอตทริบิวต์ mustUnderstand ตั้งค่าเป็น "1" ไม่เข้าใจ
    3. SOAP-ENV: ไคลเอ็นต์ – ข้อความมีรูปแบบไม่ถูกต้องหรือมีข้อมูลที่ไม่ถูกต้อง
    4. SOAP-ENV: เซิร์ฟเวอร์ - เกิดปัญหากับเซิร์ฟเวอร์ ดังนั้นข้อความจึงไม่สามารถดำเนินการต่อได้
  2. – นี่คือข้อความที่ให้คำอธิบายโดยละเอียดของข้อผิดพลาด
  3. (ไม่จำเป็น)– นี่คือสตริงข้อความที่ระบุว่าใครเป็นสาเหตุของความผิด
  4. (ไม่จำเป็น) – นี่คือองค์ประกอบสำหรับข้อความแสดงข้อผิดพลาดเฉพาะแอปพลิเคชัน ดังนั้นแอปพลิเคชันอาจมีข้อความแสดงข้อผิดพลาดเฉพาะสำหรับสถานการณ์ตรรกะทางธุรกิจที่แตกต่างกัน

ตัวอย่างข้อความแสดงข้อผิดพลาด

ตัวอย่างของข้อความแสดงข้อผิดพลาดแสดงไว้ด้านล่าง ข้อผิดพลาดจะถูกสร้างขึ้นถ้าสถานการณ์สมมติที่ไคลเอนต์พยายามใช้วิธีการที่เรียกว่า TutorialID ในคลาส GetTutorial

ข้อความแสดงข้อผิดพลาดด้านล่างจะถูกสร้างขึ้นในกรณีที่ไม่มีวิธีการในคลาสที่กำหนด

<?xml version='1.0' encoding='UTF-8'?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" xmlns:xsd="http://www.w3.org/1999/XMLSchema">
      <SOAP-ENV:Body>
         <SOAP-ENV:Fault>
         <faultcode xsi:type="xsd:string">SOAP-ENV:Client</faultcode>
        <faultstring xsi:type="xsd:string">
            Failed to locate method (GetTutorialID) in class (GetTutorial)
         </faultstring>
    </SOAP-ENV:Fault>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Output:

เมื่อคุณรันโค้ดข้างต้น มันจะแสดงข้อผิดพลาดเช่น “ล้มเหลวในการค้นหาวิธีการ (GetTutorialID) ในคลาส (GetTutorial)”

แบบจำลองการสื่อสารสบู่

การสื่อสารทั้งหมดด้วย SOAP กระทำผ่านโปรโตคอล HTTP ก่อนที่จะมี SOAP มากมาย บริการเว็บ ใช้รูปแบบ RPC (Remote Procedure Call) มาตรฐานสำหรับการสื่อสาร นี่เป็นการสื่อสารประเภทที่ง่ายที่สุด แต่ก็มีข้อจำกัดมากมาย

ในบทช่วยสอน SOAP API นี้ ลองพิจารณาแผนภาพด้านล่างเพื่อดูว่าการสื่อสารนี้ทำงานอย่างไร ในตัวอย่างนี้ สมมติว่าเซิร์ฟเวอร์โฮสต์บริการเว็บซึ่งมี 2 วิธีดังนี้

  • รับพนักงาน – นี่จะได้รับรายละเอียดพนักงานทั้งหมด
  • ตั้งพนักงาน – นี่จะเป็นการกำหนดค่ารายละเอียด เช่น แผนกพนักงาน เงินเดือน ฯลฯ ตามลำดับ

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

แบบจำลองการสื่อสารสบู่

รูปแบบการสื่อสารข้างต้นมีข้อจำกัดร้ายแรงด้านล่าง

  1. ไม่ขึ้นกับภาษา – เซิร์ฟเวอร์ที่โฮสต์เมธอดจะอยู่ในภาษาการเขียนโปรแกรมเฉพาะ และโดยปกติการเรียกไปยังเซิร์ฟเวอร์จะอยู่ในภาษาการเขียนโปรแกรมนั้นเท่านั้น
  2. ไม่ใช่โปรโตคอลมาตรฐาน – เมื่อมีการเรียกไปยังขั้นตอนระยะไกล การโทรจะไม่ดำเนินการผ่านโปรโตคอลมาตรฐาน นี่เป็นปัญหาเนื่องจากการสื่อสารทั้งหมดบนเว็บส่วนใหญ่ต้องทำผ่านโปรโตคอล HTTP
  3. ไฟร์วอลล์ – เนื่องจากการเรียก RPC ไม่ได้ดำเนินการผ่านโปรโตคอลปกติ จึงจำเป็นต้องเปิดพอร์ตแยกต่างหากบนเซิร์ฟเวอร์เพื่อให้ไคลเอ็นต์สามารถสื่อสารกับเซิร์ฟเวอร์ได้ โดยปกติไฟร์วอลล์ทั้งหมดจะบล็อกการรับส่งข้อมูลประเภทนี้ และโดยทั่วไปจำเป็นต้องมีการกำหนดค่าจำนวนมากเพื่อให้แน่ใจว่าการสื่อสารประเภทนี้ระหว่างไคลเอนต์และเซิร์ฟเวอร์จะทำงานได้

เพื่อเอาชนะข้อจำกัดทั้งหมดที่อ้างถึงข้างต้น SOAP จะใช้รูปแบบการสื่อสารด้านล่าง

แบบจำลองการสื่อสารสบู่

  1. ไคลเอนต์จะจัดรูปแบบข้อมูลเกี่ยวกับการเรียกขั้นตอนและอาร์กิวเมนต์ใด ๆ ลงในข้อความ SOAP และส่งไปยังเซิร์ฟเวอร์โดยเป็นส่วนหนึ่งของคำขอ HTTP กระบวนการห่อหุ้มข้อมูลลงในข้อความ SOAP นี้เรียกว่า มาร์แชลล์.
  2. จากนั้นเซิร์ฟเวอร์จะแกะข้อความที่ลูกค้าส่ง ดูว่าลูกค้าร้องขออะไร จากนั้นจึงส่งการตอบกลับที่เหมาะสมกลับไปยังลูกค้าในรูปแบบข้อความ SOAP แนวทางปฏิบัติในการแกะคำขอที่ส่งโดยลูกค้าเรียกว่า การแบ่งเขต

ตัวอย่างสบู่เชิงปฏิบัติ

ในบทช่วยสอน SoapUI นี้ เรามาดูตัวอย่าง SOAP ที่ใช้งานได้จริง

อาจเป็นหนึ่งในวิธีที่ดีที่สุดในการดูว่าข้อความ SOAP ถูกสร้างขึ้นได้อย่างไรคือการดูการทำงานของบริการเว็บ

หัวข้อนี้จะดูการใช้ Microsoftกรอบงาน .Net เพื่อสร้างบริการเว็บ ASMX บริการเว็บประเภทนี้รองรับทั้ง SOAP เวอร์ชัน 1.1 และเวอร์ชัน 1.2

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

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

บริการทางเว็บนี้จะโฮสต์อยู่ใน Asp.Net แอปพลิเคชันเว็บ จากนั้นเราจะเรียกใช้บริการเว็บและดูผลลัพธ์ที่บริการเว็บส่งคืน

นอกจากนี้ Visual Studio ยังแสดงให้เราเห็นข้อความ SOAP ที่ถูกส่งระหว่างเว็บเซอร์วิสและแอปพลิเคชันที่เรียกอีกด้วย

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

โปรดตรวจสอบให้แน่ใจว่าคุณได้ติดตั้ง Visual Studio 2013 ไว้ในระบบของคุณแล้วสำหรับตัวอย่างนี้

ขั้นตอน 1) ขั้นตอนแรกคือการสร้างแอปพลิเคชันเว็บ ASP.Net ที่ว่างเปล่า จาก Visual Studio 2013 คลิกที่ตัวเลือกเมนู File->New project

ตัวอย่างข้อความ SOAP

เมื่อคุณคลิกที่ตัวเลือก New Project แล้ว Visual Studio จะแสดงกล่องโต้ตอบอีกอันให้คุณเลือกประเภทของโครงการและให้รายละเอียดที่จำเป็นของโครงการ ซึ่งจะอธิบายในขั้นตอนต่อไป

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

  1. ให้แน่ใจว่าได้เลือกก่อน C# เทมเพลตเว็บของแอปพลิเคชันบนเว็บ ASP.NET โปรเจ็กต์จะต้องเป็นประเภทนี้จึงจะสร้างโปรเจ็กต์บริการ SOAP ได้ เมื่อเลือกตัวเลือกนี้ Visual Studio จะดำเนินการตามขั้นตอนที่จำเป็นในการเพิ่มไฟล์ที่จำเป็นสำหรับแอปพลิเคชันบนเว็บ
  2. ตั้งชื่อโครงการของคุณซึ่งในกรณีของเราถูกกำหนดเป็น webservice.asmx จากนั้นตรวจสอบให้แน่ใจว่าได้ระบุตำแหน่งที่จะจัดเก็บไฟล์โครงการ

ตัวอย่างข้อความ SOAP

เมื่อเสร็จแล้ว คุณจะเห็นไฟล์โปรเจ็กต์ที่สร้างขึ้นในตัวสำรวจโซลูชันใน Visual Studio 2013

ตัวอย่างข้อความ SOAP

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

เราจะเพิ่มไฟล์บริการเว็บในโครงการของเรา

  1. ขั้นแรกให้คลิกขวาที่ไฟล์โครงการดังที่แสดงด้านล่าง

ตัวอย่างข้อความ SOAP

  1. เมื่อคุณคลิกขวาที่ไฟล์โปรเจ็กต์ คุณจะมีโอกาสเลือกตัวเลือก “เพิ่ม->บริการเว็บ (ASMX) เพื่อเพิ่มไฟล์บริการเว็บ เพียงระบุชื่อ Tutorial Service สำหรับไฟล์ชื่อบริการเว็บ

ตัวอย่างข้อความ SOAP

ขั้นตอน 4) เพิ่มโค้ดต่อไปนี้ลงในไฟล์ asmx ของบริการการสอนของคุณ

ตัวอย่างข้อความ SOAP

คำอธิบายรหัส:

  1. โค้ดบรรทัดนี้ระบุชื่อไฟล์บริการเว็บของคุณ นี่เป็นขั้นตอนสำคัญเนื่องจากจะทำให้แอปพลิเคชันไคลเอ็นต์สามารถเรียกใช้บริการเว็บผ่านชื่อของบริการเว็บได้
  2. โดยปกติไฟล์คลาสจะใช้ในการสรุปการทำงานของบริการเว็บ ดังนั้นไฟล์คลาสจะมีคำจำกัดความของวิธีการเว็บทั้งหมดซึ่งจะมอบฟังก์ชันการทำงานบางอย่างให้กับแอปพลิเคชันไคลเอนต์
  3. ในที่นี้ [WebMethod] เรียกว่าแอตทริบิวต์ที่อธิบายฟังก์ชัน ขั้นตอนต่อมาจะสร้างฟังก์ชันที่เรียกว่า “Guru99WebService” แต่เมื่อรวมขั้นตอนในการเพิ่มแอตทริบิวต์ [WebMethod] นี้ไว้ด้วย จะทำให้แน่ใจได้ว่าแอปพลิเคชันไคลเอ็นต์สามารถเรียกใช้วิธีนี้ได้ หากไม่มีแอตทริบิวต์นี้ แอปพลิเคชันไคลเอ็นต์จะไม่สามารถเรียกใช้เมธอดนี้ได้
  4. ที่นี่เรากำลังกำหนดฟังก์ชันที่เรียกว่า 'Guru99WebService' ซึ่งจะใช้ในการส่งคืนสตริงไปยังแอปพลิเคชันไคลเอนต์ที่เรียก ฟังก์ชันนี้เป็นบริการบนเว็บซึ่งสามารถเรียกใช้โดยแอปพลิเคชันไคลเอ็นต์ใดก็ได้
  5. เรากำลังใช้คำสั่ง return เพื่อส่งคืนสตริง “นี่คือบริการเว็บ Guru99” ไปยังแอปพลิเคชันไคลเอนต์

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

Output:

ตัวอย่างข้อความ SOAP

  • ผลลัพธ์แสดงให้เห็นอย่างชัดเจนว่าชื่อของบริการบนเว็บของเราคือ “Guru99 Web Service” ซึ่งเป็นผลมาจากการให้ชื่อสำหรับบริการบนเว็บของเรา
  • เรายังเห็นว่าเราสามารถเรียกใช้บริการเว็บได้ หากเราคลิกปุ่มเรียกใช้ เราจะได้รับการตอบสนองด้านล่างในเว็บเบราว์เซอร์

ตัวอย่างข้อความ SOAP

ผลลัพธ์ข้างต้น

  • มันแสดงให้เห็นอย่างชัดเจนว่าโดยการเรียกใช้เมธอดเว็บ สตริง “นี่คือบริการเว็บ Guru99” จะถูกส่งกลับ
  • นอกจากนี้ Visual Studio ยังช่วยให้คุณสามารถดูคำขอและการตอบสนองข้อความ SOAP ซึ่งสร้างขึ้นเมื่อเรียกใช้บริการเว็บข้างต้น

คำขอ SOAP ซึ่งสร้างขึ้นเมื่อมีการเรียกใช้บริการเว็บแสดงไว้ด้านล่าง

ตัวอย่างข้อความ SOAP

คำอธิบายรหัส:

  1. ส่วนแรกของข้อความ SOAP คือองค์ประกอบซองจดหมายซึ่งเป็นสิ่งที่ถูกกล่าวถึงในบทที่แล้ว นี่คือองค์ประกอบการห่อหุ้มที่มีอยู่ในทุกข้อความ SOAP
  2. SOAP Body เป็นองค์ประกอบถัดไปและประกอบด้วยรายละเอียดที่แท้จริงของข้อความ SOAP
  3. ส่วนที่สามคือองค์ประกอบที่ระบุว่าเราต้องการเรียกใช้บริการที่เรียกว่า 'Guru99WebService'

ตัวอย่างข้อความ SOAP

<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  
    <soap:Body>
      
        <Guru99WebServiceResponse xmlns="http://tempuri.org/">
          
            <Guru99WebServiceResult>string</Guru99WebServiceResult>
          
        </Guru99WebServiceResponse>
    </soap:Body>
</soap:Envelope>

คำอธิบายรหัส:

  1. ส่วนแรกของข้อความ SOAP คือองค์ประกอบซองจดหมายซึ่งเป็นสิ่งที่ถูกกล่าวถึงในบทที่แล้ว นี่คือองค์ประกอบการห่อหุ้มที่มีอยู่ในทุกข้อความ SOAP
  2. SOAP Body เป็นองค์ประกอบถัดไปและประกอบด้วยรายละเอียดที่แท้จริงของข้อความ SOAP
  3. ส่วนที่น่าสนใจที่คุณจะเห็นตอนนี้คือแอตทริบิวต์ 'สตริง' ซึ่งจะแจ้งให้แอปพลิเคชันไคลเอนต์ทราบว่าเว็บเซอร์วิสที่กำลังเรียกใช้จะส่งคืนอ็อบเจ็กต์ที่มีประเภทสตริง ซึ่งมีประโยชน์มากเพราะหากแอปพลิเคชันไคลเอนต์ไม่ทราบว่าเว็บเซอร์วิสส่งคืนอะไร

สรุป

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