บทช่วยสอน การประยุกต์ใช้งาน Web Services ทับทิม - SOAP4R ที่ดีที่สุดในปี 2024 ในบทช่วยสอนนี้ คุณสามารถเรียนรู้ SOAP คืออะไร?,การติดตั้ง SOAP4R,บริการ SOAP4R,ลูกค้า SOAP4R,

การประยุกต์ใช้งาน Web Services ทับทิม - SOAP4R

SOAP คืออะไร?

Simple Object Access Protocol (SOAP เขียนทั้งหมดสำหรับ Simple Object Access Protocol) เป็นข้อกำหนดโปรโตคอลสำหรับการแลกเปลี่ยนข้อมูล

SOAP เป็นโปรโตคอลที่ใช้ XML ง่ายๆที่ช่วยให้การใช้งานในการแลกเปลี่ยนข้อมูลผ่าน HTTP

Simple Object Access Protocol เป็นโปรโตคอลสำหรับสเปคข้อมูลแลกเปลี่ยนเป็นเบาง่ายขึ้นอยู่กับ XML (เป็นส่วนหนึ่งของมาตรฐานทั่วไป Markup Language ใต้) โปรโตคอลซึ่งถูกออกแบบมาเพื่อแลกเปลี่ยนโครงสร้างบนเว็บ และบ่มข้อมูล

โปรดดูการสอน SOAP เพิ่มเติมได้ที่: /soap/soap-tutorial


การติดตั้ง SOAP4R

SOAP4R ฮิโรชินาคามูระพัฒนาโดยการดำเนินงานของสบู่สำหรับการใช้งานทับทิม

SOAP4R ดาวน์โหลด: http://raa.ruby-lang.org/project/soap4r/

หมายเหตุ: สภาพแวดล้อมทับทิมของคุณอาจติดตั้งไว้แล้วส่วนประกอบ

ภายใต้ Linux คุณสามารถติดตั้งส่วนประกอบโดยใช้อัญมณีคำสั่งต่อไปนี้:

$ gem install soap4r --include-dependencies

หากคุณอยู่ภายใต้สภาพแวดล้อมการพัฒนาหน้าต่างที่คุณจะต้องดาวน์โหลดไฟล์ซิปและติดตั้งโดยการดำเนินการ install.rb


บริการ SOAP4R

SOAP4R สนับสนุนทั้งสองประเภทที่แตกต่างกันในการให้บริการ:

  • ขึ้นอยู่กับ CGI / บริการ FastCGI (SOAP :: RPC :: CGIStub)
  • บริการอิสระ (SOAP :: RPC: StandaloneServer)

กวดวิชานี้จะแสดงวิธีการสร้าง SOAP บริการอิสระ ดำเนินการดังนี้

ขั้นตอนที่ 1 - มรดก SOAP :: RPC :: StandaloneServer

เพื่อให้บรรลุเซิร์ฟเวอร์ที่แยกต่างหากของตัวเองคุณจะต้องเขียนคลาสใหม่ที่เป็นสบู่ :: RPC :: StandaloneServer หมวดย่อย:

class MyServer < SOAP::RPC::StandaloneServer
  ththththththth.
end

หมายเหตุ: หากคุณต้องการเขียน FastCGI เซิร์ฟเวอร์ที่ใช้แล้วคุณจำเป็นที่จะขยาย SOAP :: RPC :: ระดับ CGIStub ส่วนที่เหลือของโปรแกรมจะยังคงไม่เปลี่ยนแปลง

ขั้นตอนที่สอง - กำหนดวิธีการประมวลผล

ต่อไปเรากำหนดวิธีการบริการเว็บเรากำหนดดังต่อไปนี้สองวิธีหนึ่งคือผลรวมของตัวเลขสองหนึ่งคือหารด้วยจำนวนสอง:

class MyServer < SOAP::RPC::StandaloneServer
   ththththththth.

   # 处理方法
   def add(a, b)
      return a + b
   end
   def div(a, b) 
      return a / b 
   end
end

ขั้นตอนที่สาม - วิธีการประมวลผลสิ่งพิมพ์

ต่อไปเราจะเพิ่มวิธีการที่กำหนดไว้บนเซิร์ฟเวอร์เริ่มต้นมีการเปิดเผยวิธีการสำหรับการเชื่อมต่อภายนอก

class MyServer < SOAP::RPC::StandaloneServer
   def initialize(*args)
      add_method(receiver, methodName, *paramArg)
   end
end

นี่คือคำอธิบายของแต่ละพารามิเตอร์:

พารามิเตอร์ ลักษณะ
ผู้รับ วัตถุที่มีชื่อวิธีของวิธีการหากคุณกำหนดวิธีการบริการในระดับเดียวกันพารามิเตอร์เป็นตัวเอง
methodName วิธี RPC ชื่อคำขออุทธรณ์
paramArg ชื่อพารามิเตอร์และโหมดพารามิเตอร์

เพื่อให้เข้าใจถึงInOutและพารามิเตอร์พิจารณาวิธีการบริการต่อไปนี้คุณจะต้องป้อนสองพารามิเตอร์: inParam และ inoutParam ฟังก์ชันจะส่งกลับค่าที่สามหลังจากเสร็จสิ้นการดำเนินการ: RetVal, inoutParam, outParam:

def aMeth(inParam, inoutParam)
   retVal = inParam + inoutParam
   outParam = inParam . inoutParam
   inoutParam = inParam * inoutParam
   return retVal, inoutParam, outParam
end

ที่ตีพิมพ์ของสายดังนี้

add_method(self, 'aMeth', [
    %w(in inParam),
    %w(inout inoutParam),
    %w(out outParam),
    %w(retval return)
])

ขั้นตอนที่สี่ - บริการเปิด

สุดท้ายเรา instantiate ชั้นเรียนมาและเรียกวิธีการเริ่มต้นที่จะเริ่มต้นการให้บริการ:

myServer = MyServer.new('ServerName',
                        'urn:ruby:ServiceName', hostname, port)

myServer.start

ต่อไปนี้เป็นคำอธิบายของพารามิเตอร์คำขอ:

พารามิเตอร์ ลักษณะ
ServerName ชื่อบริการที่คุณสามารถใช้ที่คุณชื่นชอบ
โกศ: ทับทิม: SERVICENAMEนี่โกศ:ทับทิมได้รับการแก้ไข แต่คุณสามารถใช้ServiceNameไม่ซ้ำกันสำหรับบริการของคุณ
ชื่อโฮสต์ ระบุชื่อโฮสต์
พอร์ต พอร์ตบริการเว็บ

ตัวอย่าง

ต่อไปเราผ่านขั้นตอนข้างต้นเพื่อสร้างบริการแบบสแตนด์อะโลน:

require "soap/rpc/standaloneserver"

begin
   class MyServer < SOAP::RPC::StandaloneServer

      # Expose our services
      def initialize(*args)
         add_method(self, 'add', 'a', 'b')
         add_method(self, 'div', 'a', 'b')
      end

      # Handler methods
      def add(a, b)
         return a + b
      end
      def div(a, b) 
         return a / b 
      end
  end
  server = MyServer.new("MyServer", 
            'urn:ruby:calculation', 'localhost', 8080)
  trap('INT){
     server.shutdown
  }
  server.start
rescue => err
  puts err.message
end

หลังจากรันโปรแกรมข้างต้นเริ่มฟังบนพอร์ต 8080 ของการบริการท้องถิ่นและตีแผ่สองวิธี: เพิ่มและ div

จากนั้นคุณสามารถดำเนินการพื้นหลังของบริการเหล่านี้:

$ ruby MyServer.rb&

ลูกค้า SOAP4R

ทับทิมใช้สบู่ :: RPC :: ลูกค้า SOAP พัฒนาคลาสไดร์เวอร์ ต่อไปเราจะดูในรายละเอียดการใช้สบู่ :: RPC :: คลาสไดร์เวอร์

บริการโทร SOAP จำเป็นต้องใช้ข้อมูลต่อไปนี้:

  • SOAP บริการที่อยู่ URL (SOAP Endpoint URL)
  • namespace (วิธี namespace URI) วิธีการบริการ
  • ชื่อวิธีการให้บริการและข้อมูลพารามิเตอร์

ต่อไปเราจะใช้ขั้นตอนในการสร้างลูกค้า SOAP เรียกวิธีการดังกล่าวข้างต้นสบู่: เพิ่ม div:

ขั้นตอนที่หนึ่ง - สร้างอินสแตนซ์ไดร์เวอร์สบู่

เราสามารถเรียกมันว่าเป็นวิธีการใหม่ในการยกตัวอย่าง SOAP :: RPC :: คลาสไดร์เวอร์ดังต่อไปนี้:

SOAP::RPC::Driver.new(endPoint, nameSpace, soapAction)

ต่อไปนี้เป็นคำอธิบายของพารามิเตอร์ A:

พารามิเตอร์ ลักษณะ
ปลายทาง บริการสบู่ที่อยู่ URL เชื่อมต่อ
namespace namespace สบู่ :: RPC :: ไดร์เวอร์วัตถุทั้งหมด RPC
soapAction สำหรับ SOAPAction ค่าฟิลด์ส่วนหัว HTTP ถ้าสตริงคือ ""เริ่มต้นเป็นศูนย์

ขั้นตอนที่สอง - เพิ่มวิธีการบริการ

SOAP :: RPC :: ไดร์เวอร์ที่จะเพิ่มวิธีการบริการ SOAP เราสามารถเรียกวิธีการดังต่อไปนี้โดยวิธีการเช่นสบู่ :: RPC :: ไดร์เวอร์:

driver.add_method(name, *paramArg)

ต่อไปนี้เป็นคำอธิบายของพารามิเตอร์ A:

พารามิเตอร์ ลักษณะ
ชื่อ ชื่อวิธีการบริการเว็บระยะไกล
paramArg พารามิเตอร์เพื่อระบุโปรแกรมระยะไกล

ขั้นตอนที่สาม - บริการโทรสบู่

สุดท้ายเราสามารถใช้สบู่ :: RPC :: อินสแตนซ์ไดร์เวอร์ที่จะเรียกใช้บริการ SOAP:

result = driver.serviceMethod(paramArgth.)

ชื่อวิธีการที่เกิดขึ้นจริง ServiceMethod SOAP บริการ, paramArg สำหรับรายการพารามิเตอร์ของวิธีการ

ตัวอย่าง

ขึ้นอยู่กับขั้นตอนข้างต้นเราสามารถเขียนไคลเอนต์ SOAP ต่อไปนี้:

#!/usr/bin/ruby -w

require 'soap/rpc/driver'

NAMESPACE = 'urn:ruby:calculation'
URL = 'http://localhost:8080/'

begin
   driver = SOAP::RPC::Driver.new(URL, NAMESPACE)
   
   # Add remote sevice methods
   driver.add_method('add', 'a', 'b')

   # Call remote service methods
   puts driver.add(20, 30)
rescue => err
   puts err.message
end

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

การประยุกต์ใช้งาน Web Services ทับทิม - SOAP4R
10/30