كيفية تمرير كمية متغيرة من المعلمات إلى خدمة الويب

StackOverflow https://stackoverflow.com/questions/34128

  •  09-06-2019
  •  | 
  •  

سؤال

نحن نحاول إنشاء خدمة ويب نخطط لتمرير كمية متغيرة من المتغيرات إليها.

هل يمكن هذا؟

في الأساس، بدلاً من تمرير جميع المعلمات الممكنة، نرغب في تمرير القيم المحددة فقط واستخدام الإعدادات الافتراضية المحددة في خدمة الويب.

فيما يلي مثال على ملف XML الذي نتطلع إلى إرساله، حيث سنرسل عددًا غير معروف من الوظائف اعتمادًا على العائد المطلوب.

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <WebMethod xmlns="http://tempuri.org/">
      <domains>
        <function1>
        <title>Some Title</title>
        <type>25</type>
        </function1>
    <function2 />
    <function3>
        <param>13</param>
    </function3>
      </domains>
    </WebMethod>
  </soap:Body>
</soap:Envelope>

هل سينجح هذا أم يجب أن نفعل بطريقة مختلفة؟

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

المحلول

سأقوم بتمرير مستند xml بدلاً من القيام بوظائف محددة لهذا الغرض.

خدمة الويب في مثالك متسربة - يحتاج المستهلك إلى معرفة الكثير عن هذه الواجهة وتنفيذ خدمة الويب داخليًا.

مستند XML ثم اربطه باستخدام XSD.وبهذه الطريقة يمكنك التحقق من صحة الإدخال إلى خدمة الويب.

نلقي نظرة على هذه

مطور آي بي إم منتدى ASP.NET

أوصي أيضًا باستخدام هذا لاختبار خدمات الويب وهو مجانيWSStudio

نصائح أخرى

يمكنك ببساطة تمرير مصفوفة متغيرة الطول كمعلمة.

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

وأنا أتفق مع Littlegeek.لا تجعل خدمة الويب الخاصة بك هي الطريقة الصعبة.اجعلها نقطة نهاية الاستلام للاستلام رسائل.على وجه الخصوص، رسالة الأمر.

http://www.eaipatterns.com/CommandMessage.html

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