บทช่วยสอน การประยุกต์ใช้งาน Web Services ทับทิม - SOAP4R ที่ดีที่สุดในปี 2024 ในบทช่วยสอนนี้ คุณสามารถเรียนรู้ SOAP คืออะไร?,การติดตั้ง SOAP4R,บริการ SOAP4R,ลูกค้า SOAP4R,
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 ดาวน์โหลด: http://raa.ruby-lang.org/project/soap4r/
หมายเหตุ: สภาพแวดล้อมทับทิมของคุณอาจติดตั้งไว้แล้วส่วนประกอบ
ภายใต้ Linux คุณสามารถติดตั้งส่วนประกอบโดยใช้อัญมณีคำสั่งต่อไปนี้:
$ gem install soap4r --include-dependencies
หากคุณอยู่ภายใต้สภาพแวดล้อมการพัฒนาหน้าต่างที่คุณจะต้องดาวน์โหลดไฟล์ซิปและติดตั้งโดยการดำเนินการ install.rb
SOAP4R สนับสนุนทั้งสองประเภทที่แตกต่างกันในการให้บริการ:
กวดวิชานี้จะแสดงวิธีการสร้าง SOAP บริการอิสระ ดำเนินการดังนี้
เพื่อให้บรรลุเซิร์ฟเวอร์ที่แยกต่างหากของตัวเองคุณจะต้องเขียนคลาสใหม่ที่เป็นสบู่ :: 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&
ทับทิมใช้สบู่ :: RPC :: ลูกค้า SOAP พัฒนาคลาสไดร์เวอร์ ต่อไปเราจะดูในรายละเอียดการใช้สบู่ :: RPC :: คลาสไดร์เวอร์
บริการโทร SOAP จำเป็นต้องใช้ข้อมูลต่อไปนี้:
ต่อไปเราจะใช้ขั้นตอนในการสร้างลูกค้า 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