تطبيقات روبي خدمات الويب - 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
سبق يمكننا ببساطة إدخال خدمات الويب روبي. إذا كنت ترغب في معرفة المزيد يمكنك عرض وثيقة رسمية: روبي لخدمات الويب