سؤال

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

ليس لدي أدنى فكرة عن كيفية القيام بذلك.

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

المحلول

يمكنك استخدام مجموعة من JQuery مع مكالمات JSON لاستهلاك خدمات REST من العميل

أو

إذا كنت بحاجة إلى التفاعل مع خدمات REST من طبقة ASP يمكنك استخدامها

MSXML2.ServerXMLHTTP

يحب:

Set HttpReq = Server.CreateObject("MSXML2.ServerXMLHTTP")
HttpReq.open "GET", "Rest_URI", False
HttpReq.send

نصائح أخرى

@ك.ب

يجب عليك فعلا استخدام MSXML2.ServerXMLHTTP من تطبيقات جانب ASP/الخادم. XMLHTTP يجب استخدامه فقط من جانب العميل لأنه يستخدم WinInet وهو غير مدعوم للاستخدام في تطبيقات الخادم/الخدمة.

يرى http://support.microsoft.com/kb/290761, ، الأسئلة 3 و 4 و 5 و

http://support.microsoft.com/kb/238425/.

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

فيما يلي بعض المقالات التي تصف كيفية الاتصال بخدمة ويب من صفحة فئة ASP:

يبدو أن عددًا من الإجابات المقدمة هنا يغطي كيفية استخدام ClassicASP لاستهلاك خدمات الويب ومكالمات REST.

في رأيي، قد يكون الحل الأكثر ترتيبًا هو أن يقوم ClassicASP الخاص بك بتقديم البيانات بتنسيقات REST فقط.اسمح لرمز العميل المستند إلى المتصفح الخاص بك بالتعامل مع "المزج" إن أمكن.يجب أن تكون قادرًا على القيام بذلك دون دمج أي مكونات ASP أخرى.

لذا، إليك كيفية إنشاء نموذج دعم REST الجديد اللامع في ClassicASP:

  1. توفير صفحة ويب ASP واحدة تعمل كنقطة انطلاق
  2. ستتعامل لوحة الهبوط مع معلمتين:الفعل وعنوان URL، بالإضافة إلى مجموعة من محتويات النموذج
  3. استخدم نوعًا ما من كتل التبديل لفحص عنوان URL وتوجيه الفعل (ومحتويات النموذج) إلى المعالج ذي الصلة
  4. سيقوم المعالج بعد ذلك بمعالجة الفعل (PUT/POST/GET/DELETE) مع محتويات النموذج، ويعيد رمز النجاح/الفشل بالإضافة إلى البيانات حسب الاقتضاء.
  5. ستقوم لوحة الهبوط الخاصة بك بفحص رمز النجاح/الفشل وإرجاع حالة HTTP ذات الصلة بالإضافة إلى أي بيانات تم إرجاعها

ستستفيد من فئة الدعم التي تقوم بفك تشفير/تشفير بيانات النموذج من/إلى JSON، لأن ذلك سيسهل التنفيذ من جانب العميل (وربما يبسط حجم البيانات التي تم تمريرها).انظر المحادثة هنا في هل توجد مكتبات جيدة لتحليل JSON في Classic ASP؟

وأخيرًا، من جانب العميل، قم بتوفير طريقة تأخذ حمولة الفعل وعنوان URL والبيانات.على المدى القصير، ستقوم الطريقة بجمع المعلمات وإرسالها إلى منصة الهبوط الخاصة بك.على المدى الطويل (بمجرد التحول عن Classic ASP) يمكن لطريقتك إرسال البيانات إلى عنوان URL "الحقيقي".

حظ سعيد...

الحل الآخر المحتمل هو كتابة ملف .NET DLL الذي يجري المكالمات ويعيد النتائج (ربما يلف شيئًا مثل RESTSharp - يمنحه واجهة برمجة تطبيقات بسيطة مخصصة لاحتياجاتك).ثم تقوم بتسجيل DLL كـ COM DLL واستخدامه في كود ASP الخاص بك عبر أسلوب CreateObject.

لقد فعلت ذلك لأشياء مثل إنشاء JWTs الموقعة وتمليح وتجزئة كلمات المرور.إنه يعمل بشكل جيد (بينما تعمل بجنون لإعادة كتابة ASP).

كل ما تحتاجه هو عميل HTTP.في .Net، يعمل WebRequest بشكل جيد.بالنسبة لـ ASP الكلاسيكي، ستحتاج إلى مكون محدد مثل هذا.

الاحتمال الآخر هو استخدام كائن WinHttp COM استخدام كائن WinHttpRequest COM.

تم تصميم WinHttp ليتم استخدامه من كود الخادم.

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