سؤال

يتفاعل تطبيقنا مع الكثير من خدمات الويب هذه الأيام.لدينا حزمتنا الخاصة التي كتبها شخص ما قبل بضع سنوات باستخدام UTL_HTTP وهي تعمل بشكل عام، ولكنها تحتاج إلى بعض الترميز الثابت لمغلف SOAP للعمل مع أنظمة معينة.أود أن أجعل الأمر أكثر عمومية، لكني أفتقر إلى الخبرة لمعرفة عدد السيناريوهات التي يجب أن أتعامل معها.تكمن الاختلافات في مساحات الأسماء التي يجب الإعلان عنها وتنسيق العناصر.يتعين علينا التعامل مع كل من الاستدعاءات البسيطة التي تحتوي على عدد قليل من المعلمات وتلك التي تمرر كمية كبيرة من البيانات في سلسلة مشفرة.

أعلم أن 10g يحتوي على UTL_DBWS، لكن لا يوجد عدد كبير من حالات الاستخدام عبر الإنترنت.هل هي مستقرة ومرنة بدرجة كافية للاستخدام العام؟ توثيق

هل كانت مفيدة؟

المحلول

لقد استخدمت UTL_HTTP وهو أمر بسيط ويعمل.إذا كنت تواجه تحديًا مع الحزمة الخاصة بك، فمن المحتمل أن تجد حلاً في إحدى الحزم المجمعة العديدة حول UTL_HTTP على الشبكة (Google "يستهلك خدمات الويب من pl/sql"، مما يقودك إلى، على سبيل المثال:http://www.Oracle-base.com/articles/9i/ConsumingWebServices9i.php)

السبب لا أحد يستخدم UTL_DBWS هو أنها لا تعمل في قاعدة البيانات المثبتة افتراضيًا.تحتاج إلى تحميل الكثير من فئات Java في قاعدة البيانات، ولكن يبدو أن التعليمات القياسية معيبة - حيث تنشر العملية أخطاء Java يمينًا ويسارًا وتفشل في النهاية.يبدو أن عددًا قليلًا جدًا من الأشخاص كانوا على استعداد لأخذ الوقت الكافي لتعقب تبعيات الحزمة من أجل إنجاح هذا النهج.

نصائح أخرى

لقد واجهت هذا التحدي ووجدت وقمت بتثبيت حزمة "SOAP API" التي يقترحها Sten على Oracle-Base.فهو يوفر بعض الوظائف الجيدة لإنشاء المغلف أعلى UTL_HTTP.

ومع ذلك، كانت هناك بعض القيود التي تتعلق بسؤالك.يفترض SOAP_API أن جميع الطلبات هي XML بسيطة، أي.طبقة واحدة فقط من التسلسل الهرمي للعلامات.

لقد قمت بتوسيع حزمة SOAP_API للسماح لرمز العميل بإدراج علامة إضافية بشكل تعسفي.لذلك يمكنك إدراج مستوى فرعي مثل، ومتابعة إنشاء الطلب، وتذكر إدراج علامة إغلاق.

كانت مشكلة مساحة الاسم بمثابة مشكلة بالنسبة للمشروع - فالمستويات المختلفة من XML لها مساحات أسماء مختلفة.

أداة تصحيح الأخطاء الرائعة التي استخدمتها هي TCP Trace من Pocket Soap.www.pocketsoap.com/tcptrace/ قمت بإعداده مثل الوكيل وشاهد كائنات طلب HTTP وكائنات الاستجابة بين رمز العميل والخادم.

بعد أن قلت كل ذلك، نود حقًا وجود عميل SOAP في قاعدة البيانات - فلدينا حق الوصول الكامل إلى جميع البيانات ورمز PLSQL الموجود، ويمكننا بسهولة المرور عبر المؤشرات واستدعاء التطبيق الخارجي عبر SOAP عند الحاجة.لقد كان الأمر أسرع وأسهل كثيرًا من نشر الطبقة الوسطى التي تحتوي على الكثير من أكواد Java أو .NET المخصصة.حظًا سعيدًا وأخبرني إذا كنت ترغب في رؤية رمز SOAP API المحسّن الخاص بي.

لقد استخدمنا أيضًا UTL_HTTP بطريقة مشابهة لما وصفته.ليس لدي أي خبرة مباشرة مع UTL_DBWS، لذا آمل أن تتمكن من المتابعة بأي معلومات/خبرة يمكنك جمعها.

@kogus، لا، إنه تصميم جيد جدًا للعديد من التطبيقات.PL/SQL هي لغة برمجة كاملة تم استخدامها للعديد من التطبيقات الكبيرة.

ألق نظرة على هذا وظيفة أقدم.يجب أن أتفق مع الإجابة رقم 1 لهذا المنشور؛من الصعب أن نتخيل سيناريو حيث يمكن أن يكون هذا تصميمًا جيدًا.

ألا يمكنك كتابة خدمة أو تطبيق مستقل يمكنه التحدث إلى جدول في قاعدة البيانات الخاصة بك؟ثم يمكنك تنفيذ ما تريد كمشغل على هذا الجدول.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top