Latest web development tutorials

تطبيقات روبي خدمات الويب - SOAP4R

ما هو الصابون؟

كائن بسيط بروتوكول الوصول (الصابون، وكلها مكتوبة لبروتوكول الوصول إلي كائن بسيط) مواصفات بروتوكول لتبادل البيانات.

SOAP هو بروتوكول يستند إلى XML بسيط يسمح للتطبيقات لتبادل المعلومات عبر HTTP.

بسيط بروتوكول الوصول إلي كائن، هو مواصفات بروتوكول لتبادل البيانات، هي خفيفة الوزن، بسيطة، على أساس XML (مجموعة فرعية من لغة توصيف النص ستاندرد المعمم تحت) البروتوكول، الذي تم تصميمه لتبادل منظم على شبكة الإنترنت وعلاج المعلومات.

يرجى الاطلاع على المزيد من الصابون البرنامج التعليمي: http://www.w3cschool.cc/soap/soap-tutorial.html .


تركيب SOAP4R

SOAP4R هيروشي ناكامورا التي وضعتها تنفيذ الصابون لتطبيقات روبي.

SOAP4R التحميل: http://raa.ruby-lang.org/project/soap4r/ .

ملاحظة: قد البيئة روبي لديك بالفعل تثبيت المكون.

لينكس يمكنك تثبيت المكون باستخدام الأحجار الكريمة، الأمر التالي:

$ gem install soap4r --include-dependencies

إذا كنت تحت بيئة التطوير نافذة، تحتاج إلى تحميل ملف مضغوط، وتثبيت عن طريق تنفيذ install.rb.


خدمة SOAP4R

SOAP4R يدعم نوعين مختلفين من الخدمة:

  • على أساس CGI / خدمات FastCGI (SOAP :: :: RPC CGIStub)
  • خدمة مستقلة (SOAP :: RPC: StandaloneServer)

هذا البرنامج التعليمي سوف تظهر لك كيفية بناء خدمات الصابون مستقلة. المضي قدما على النحو التالي:

الخطوة 1 - الإرث الصابون :: :: RPC StandaloneServer

من أجل تحقيق خادم منفصل الخاصة بهم، تحتاج إلى كتابة فئة جديدة هذا هو الصابون :: :: RPC StandaloneServer فئات فرعية:

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

ملاحظة: إذا كنت تريد أن تكتب FastCGI المستندة إلى الملقم، ثم كنت بحاجة لتمديد الصابون :: :: 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)
])

الخطوة الرابعة - خدمة مفتوحة

وأخيرا، فإننا مثيل فئة مشتقة، واستدعاء الأسلوب البداية لبدء تشغيل الخدمة:

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

myServer.start

وفيما يلي وصفا للمعلمة الطلب:

المعلمات وصف
الخادم اسم الخدمة، يمكنك أن تأخذ المفضلة لديك
جرة: روبي: 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 من الخدمات المحلية، ويعرض طريقتين: إضافة وشعبة.

ثم يمكنك إجراء خلفية هذه الخدمات:

$ ruby MyServer.rb&

العميل SOAP4R

روبي استخدام الصابون :: :: RPC العميل من الدرجة سائق الصابون التنمية. القادم ونحن ننظر في التفاصيل باستخدام الصابون :: :: RPC الطبقة سائق.

خدمة الصابون المكالمة تتطلب المعلومات التالية:

  • خدمة الصابون عنوان URL (SOAP نقطة النهاية URL)
  • مساحة الاسم (الطريقة مساحة الاسم URI) أسلوب خدمة
  • اسم أسلوب خدمة ومعلومات معلمة

التالي، ونحن نأخذ خطوة لإنشاء العميل SOAP لاستدعاء الأسلوب الصابون أعلاه: إضافة، شعبة:

الخطوة الأولى - إنشاء المثال سائق الصابون

يمكن أن نطلق عليه طريقة جديدة لإنشاء مثيل الصابون :: :: RPC الطبقة سائق، على النحو التالي:

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

وفيما يلي وصفا للمعلمات:

المعلمات وصف
نقطة النهاية خدمة الصابون عنوان URL اتصال
مساحة الاسم مساحة للSOAP :: :: RPC كائن سائق كل RPC.
soapAction للحصول على قيم حقل رأس SOAPAction HTTP. إذا كانت السلسلة "" الافتراضي هولا شيء

الخطوة الثانية - إضافة أسلوب خدمة

SOAP :: :: RPC سائق لإضافة الصابون أسلوب خدمة، يمكن أن نطلق الطريقة التالية على سبيل المثال الصابون :: :: RPC سائق:

driver.add_method(name, *paramArg)

وفيما يلي وصفا للمعلمات:

المعلمات وصف
اسم اسم الأسلوب من الخدمات على شبكة الإنترنت عن بعد
paramArg المعلمة لتحديد البرنامج عن بعد

الخطوة الثالثة - خدمات الاتصال الصابون

وأخيرا، يمكننا استخدام الصابون :: :: RPC المثال سائق لاستدعاء خدمات الصابون:

result = driver.serviceMethod(paramArg...)

الخدمات الصابون اسم الأسلوب serviceMethod الفعلية، 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

سبق يمكننا ببساطة إدخال خدمات الويب روبي. إذا كنت ترغب في معرفة المزيد يمكنك عرض وثيقة رسمية: روبي لخدمات الويب