Latest web development tutorials
×

Ruby หลักสูตร

Ruby หลักสูตร Ruby แนะนำโดยย่อ Ruby สิ่งแวดล้อม Ruby ติดตั้ง Linux Ruby ติดตั้ง Windows Ruby การเข้ารหัสจีน Ruby เลือกบรรทัดคำสั่ง Ruby ตัวแปรสภาพแวดล้อม Ruby ไวยากรณ์ Ruby ชนิดข้อมูล Ruby คลาสและวัตถุ Ruby กรณีระดับ Ruby ตัวแปร Ruby ผู้ประกอบการ Ruby หมายเหตุ Ruby เงื่อนไข Ruby การไหลเวียน Ruby ทาง Ruby กลุ่ม Ruby โมดูล Ruby เชือก Ruby แถว Ruby กัญชา Ruby วันที่และเวลา Ruby ขอบเขต Ruby iterator Ruby input และ output ไฟล์ Ruby File ชั้นเรียนและวิธี Ruby Dir ชั้นเรียนและวิธี Ruby ผิดปกติ

Ruby การสอนที่ทันสมัย

Ruby เชิงวัตถุ Ruby นิพจน์ปกติ Ruby การเข้าถึงฐานข้อมูล - DBI หลักสูตร Ruby MySQL Ruby CGI โครงการ Ruby CGI ทาง Ruby CGI Cookies Ruby CGI Sessions Ruby ส่ง Email SMTP Ruby Socket โครงการ Ruby XML, XSLT, XPath Ruby Web Services Ruby multithreading Ruby JSON Ruby RubyGems

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

SOAP คืออะไร?

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

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

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

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


การติดตั้ง 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
  ...............
end

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

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

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

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

   # 处理方法
   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(paramArg...)

ชื่อวิธีการที่เกิดขึ้นจริง 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