فهم توافق Edge مع وحدات Node.js

يتم الآن عرض مستندات Apigee Edge.
انتقِل إلى مستندات Apigee X.
المعلومات

ما إصدار Node.js المتوافق مع Apigee Edge؟

يدعم Edge حاليًا الإصدار Node.js 0.10.32.

ما هي وحدات Node.js القياسية المتوافقة مع Edge؟

استخدِم الجدول التالي لتحديد وحدات Node.js العادية التي تم تضمينها في Edge. وفي بعض الحالات، تكون الوحدات المضمّنة متاحة جزئيًا فقط. وهي وحدات مضمّنة في Node.js.

الوحدة الحالة Notes
assert معلومات معتمَدة
buffer معلومات معتمَدة
child_process محظور سيتم طرح استثناء إذا تم إجراء محاولة لإنتاج عملية فرعية. في المقابل، يمكن استخدام "الشوكة" لإنشاء النصوص البرمجية الفرعية.
cluster غير مفعَّل تعرض الطريقة cluster.isMaster دائمًا true، ولا يتم تنفيذ طرق أخرى. يتم نشر نسخة واحدة من كل نص Node.js النصي في كل معالج رسائل Edge.
crypto معلومات معتمَدة
dns معلومات معتمَدة
domain معلومات معتمَدة
dgram محظور لن تتمكّن تطبيقات Node.js في بيئة Apigee من الوصول إلى الخدمات على الإنترنت من خلال UDP بسبب بنية الشبكة.
events معلومات معتمَدة
fs محظور يتم حصر الوصول إلى نظام الملفات على الدليل الذي تم تشغيل النص البرمجي فيه: دليل /resources/node. قد تقرأ نصوص Node.js البرمجية الملفات وتكتبها في هذا الدليل، على سبيل المثال، كمنطقة خدش مؤقتة، ولكن ليست هناك أي ضمانات بشأن مدة الاحتفاظ بالملفات.
http معلومات معتمَدة يتم تحديد المضيف الافتراضي والمسار للطلبات الواردة في الخادم الوكيل لواجهة برمجة التطبيقات، وليس من خلال وحدة HTTP. لمزيد من المعلومات، يُرجى الاطّلاع على "فهم التوافق مع وحدتَي http وhttps".
https معلومات معتمَدة يعمل إنشاء خادم "https" بشكل مماثل لخادم "http". للحصول على مزيد من المعلومات، يمكنك الاطّلاع على "فهم التوافق مع وحدتَي http وhttps".
module معلومات معتمَدة
net محظور ستؤدي محاولات الاستماع إلى اتصالات بروتوكول التحكم في الإرسال الواردة إلى إنشاء استثناء.
path معلومات معتمَدة
module معلومات معتمَدة
process الدعم الجزئي إنّ وظيفة التلاعب برقم تعريف المستخدم وعضوية المجموعة ودليل العمل غير متاحة.
punycode معلومات معتمَدة
querystring معلومات معتمَدة
readline غير مفعَّل ما مِن إدخال عادي للنصوص البرمجية التي يتم تشغيلها على Apigee Edge.
repl غير مفعَّل ما مِن إدخال عادي للنصوص البرمجية التي يتم تشغيلها على Apigee Edge.
module متاحة
STDIO معلومات معتمَدة

يتم توجيه الأخطاء والمخرجات العادية إلى ملف سجلّ داخل البنية الأساسية لخدمة Apigee Edge. يمكنك عرض هذه السجلّات بالنقر على زر سجلّات Node.js في واجهة مستخدم إدارة Apigee Edge للخادم الوكيل لواجهة برمجة التطبيقات.

ما مِن إدخال عادي للنصوص البرمجية التي يتم تشغيلها على Apigee Edge. ومع ذلك، يمكنك تمرير الوسيطات باستخدام العنصر ScriptTarget في TargetEndpoint. يُرجى الاطّلاع على إعدادات استهداف النص البرمجي المتقدّمة للحصول على مزيد من المعلومات.

stream معلومات معتمَدة
string_decoder معلومات معتمَدة
timers متاحة
tls معلومات معتمَدة تعمل مَعلمات بروتوكول أمان طبقة النقل (TLS) بشكل أساسي بالطريقة نفسها التي تعمل بها في Node.js العادي. راجِع استخدام وحدة Node.js (طبقة المقابس الآمنة) في Apigee Edge للحصول على تفاصيل.
tty غير مفعَّل ما مِن إدخال عادي للنصوص البرمجية التي يتم تشغيلها على Apigee Edge.
url معلومات معتمَدة
util معلومات معتمَدة
vm معلومات معتمَدة
zlib معلومات معتمَدة

الوحدات الإضافية المتوافقة

يسرد هذا القسم وحدات إضافية غير متوافقة مع نظام Node.js القياسي، لكن يتوافق مع Trireme وTrireme الذي يعمل على Apigee Edge. Trireme هي حاوية Node.js مفتوحة المصدر يتم تشغيلها على Apigee Edge. وهو مصمم لتشغيل نصوص Node.js البرمجية داخل آلة جافا الافتراضية (JVM). كل هذه الوحدات متوفرة على NPM.

الوحدة الوصف
الوصول إلى واجهة برمجة التطبيقات يسمح هذا الإذن لتطبيقات Node.js التي تعمل على النظام الأساسي Apigee Edge كطريقة للوصول إلى الوظائف الخاصة بـ Apigee. يمكنك استخدام هذه الوحدة لإجراء ما يلي: الوصول إلى متغيّرات التدفق وتعديلها واسترداد البيانات من المتجر الآمن واستخدام ذاكرة التخزين المؤقت والحصة وخدمات بروتوكول OAuth في Edge. راجِع أيضًا استخدام وحدة الوصول إلى واجهة برمجة التطبيقات.
trireme-support يتيح لتطبيقات Node.js الاستفادة من الميزات الخاصة بـ Trireme. هناك ميزة واحدة فقط متوافقة حاليًا، وهي تحميل وحدات Node.js المضمّنة في لغة Java. ملاحظة: لا يتم دعم uploadJars في Edge Cloud.
trireme-xslt يقدم فكرة مجرّدة عن معالجة XLST. وقد صُممت خصيصًا لنظام Trireme الأساسي للسماح بالمعالجة الفعّالة لـ WebRTC عند تشغيل تطبيقات Node.js على جافا.
trireme-jdbc توفر إمكانية الوصول إلى JDBC من Node.js. ملاحظة: غير متوافق في Edge Cloud. بالنسبة إلى Edge Private Cloud، يمكنك وضع ملفات JDPC JAR في مسار الفئة واستخدام هذه الوحدة.

دعم وحدات Node.js الشائعة الاستخدام

القيود المفروضة على نصوص Node.js البرمجية

مع ذلك، تجدر الإشارة إلى أنّ Edge يفرض قيودًا معيّنة على نصوص Node.js البرمجية، مثل ما يلي:

  • لا يمكن لتطبيقات Node.js في بيئة Apigee Edge الوصول إلى الخدمات على الإنترنت عبر UDP بسبب بنية شبكة Edge.
  • يتم تقييد الوصول إلى نظام الملفات على الدليل الذي تم تشغيل نص Node.js فيه: دليل /resources/node. يمكن للنصوص البرمجية في Node.js قراءة الملفات وكتابتها في هذا الدليل، على سبيل المثال، كمنطقة خدش مؤقتة، ولكن ليست هناك ضمانات لمدة الاحتفاظ بالملفات.
  • تؤدي محاولات الاستماع لاتصالات TCP الواردة إلى إنشاء استثناء.
  • إنّ وظيفة التلاعب برقم تعريف المستخدم وعضوية المجموعة ودليل العمل غير متاحة.
  • بالنسبة إلى الإدخال العادي، يقتصر الأمر على تمرير الوسيطات باستخدام عنصر ScriptTarget في TargetEndpoint. يُرجى الاطّلاع على الضبط المتقدم لهدف النص البرمجي للحصول على مزيد من المعلومات.
  • بالنسبة إلى الإخراج العادي، ستقتصر على استخدام زر سجلات Node.js في واجهة مستخدم إدارة Edge للخادم الوكيل. يمكنك أيضًا استخدام الأمر "apigeetool getlogs". لمزيد من المعلومات، يُرجى الاطّلاع على نشر تطبيق Node.js مستقل.
  • لا يُسمح باستخدام الوحدات التي تعتمد على الرموز البرمجية الأصلية.
  • لا يتم دعم الوحدات التي تعتمد على ميزات EcmaScript 6، مثل الوعود والمولدات.
  • علامات وقت تشغيل Node.js مثل "harmony-proxies" ليست متوافقة.

ضبط قيود اتصال عنوان IP على Edge لخدمة Private Cloud

يمكن أن يحظر Edge for Private Cloud رمز Node.js من الوصول إلى عناوين IP بدءًا من "10."، "192.168"، والمضيف المحلي. إذا حاولت الوصول إلى عناوين IP هذه، سيظهر خطأ على النحو التالي:

{ [Error: connect EINVAL] message: 'connect EINVAL', code: 'EINVAL', errno: 'EINVAL', syscall: 'connect' }

يمكنك تعديل هذه القيود من خلال ضبط السمة conf_nodejs_connect.ranges.denied في الملف message-processors.properties لكل معالج رسائل. وبشكلٍ تلقائي، تحتوي هذه السمة على القيمة التالية:

  • Edge 4.17.05 والإصدارات الأقدم: conf_nodejs_connect.ranges.denied=10.0.0.0/8,192.168.0.0/16,127.0.0.1/32
  • Edge 4.17.09 والإصدارات الأحدث: conf_nodejs_connect.ranges.denied= (بمعنى ما مِن قيود)

لإعداد هذه السمة:

  1. افتح الملف message-processor.properties في محرِّر. إذا لم يكن الملف متوفّرًا، يمكنك إنشاؤه:
    > vi /<inst_root>/apigee/customer/application/message-processor.properties
  2. اضبط السمة على النحو المطلوب. على سبيل المثال، لرفض الوصول إلى المضيف المحلي فقط:
    conf_nodejs_connect.ranges.denied=127.0.0.1/32
  3. احفظ التغييرات.
  4. تأكَّد من أنّ ملف السمات يملكه مستخدم "apigee":
    > chown apigee:apigee /<inst_root>/apigee/customer/application/message-processor.properties
  5. أعِد تشغيل معالج الرسائل:
    > /<inst_root>/apigee/apigee-service/bin/apigee-service Edge-message-processor أعِد تشغيل

فهم دعم وحدتَي http وhttps

يجب أن تستخدم جميع تطبيقات Node.js التي تعمل في Apigee Edge الوحدة http أو https للاستماع إلى الطلبات الواردة. وإذا أردت نشر نص برمجي لا يستمع إلى الطلبات الواردة، سيتم تنفيذه والخروج منه.

تستخدم الطريقة listen للوحدتَين http وhttps في Node.js رقم منفذ كمَعلمة. مثلاً:

svr.listen(process.env.PORT || 9000, function() {
   console.log('The server is running.');
});

وسيطة "المنفذ" هذه مطلوبة في Node.js، لكن Apigee Edge يتجاهل هذه المعلمة. بدلاً من ذلك، يحدّد الخادم الوكيل لواجهة برمجة التطبيقات الذي يجري فيه النص البرمجي Node.js "المضيف الافتراضي" الذي يستمع إليه، ويستخدم تطبيق Node.js هذه المضيفات الافتراضية نفسها، تمامًا مثل أي خادم وكيل آخر لـ Apigee Edge.

تحتوي كل بيئة في Apigee على مضيف افتراضي واحد على الأقل. يحدّد المضيف الافتراضي إعدادات HTTP للاتصال بمؤسسة Apigee. تشترك جميع الخوادم الوكيلة لواجهة برمجة التطبيقات في البيئة الافتراضية في المضيفين الافتراضيين نفسهم. يتوفّر مضيفان افتراضيان لكل بيئة تلقائيًا: default وsecure. لمزيد من المعلومات، يُرجى الاطّلاع على الحصول على مضيف افتراضي ودورة حياة تطوير واجهة برمجة التطبيقات.

ينشئ الأمر apigeetool deploynodeapp برنامج تضمين الخادم الوكيل Apigee Edge حول تطبيق Node.js. عند النشر، يستمع تطبيق Node.js إلى المضيف الافتراضي الافتراضي المحدّد للبيئة. سيكون عنوان URL لتطبيق Node.js دائمًا هو http://{org_name}-{env_name}.apigee.net.

معالجة الطلبات الواردة

كما هو الحال مع تطبيقات Apigee Edge الأخرى، إذا تم إعداد تطبيق الخادم الوكيل للاستماع إلى المضيف الافتراضي secure، سيقبل الطلبات الواردة باستخدام HTTPS.

معالجة الطلبات الصادرة

بالإضافة إلى تلقّي زيارات واردة، قد تستخدم تطبيقات Node.js في Apigee Edge وحدتَي http وhttps لإجراء طلبات صادرة مثل أي تطبيق Node.js آخر. تعمل هذه الوحدات تمامًا كما تعمل دائمًا في Node.js.

فهم التوافق مع وحدة Tls

يتوافق Apigee Edge مع وحدة Node.js tls. تستخدم هذه الوحدة بروتوكول OpenSSL لتوفير اتصال البث المشفّر ببروتوكول أمان طبقة النقل (TLS) و/أو طبقة المقابس الآمنة (SSL). يمكنك استخدام الوحدة tls لإنشاء اتصالات آمنة بخدمات الخلفية من تطبيقات Node.js التي تعمل على Edge.

لفهم آلية عمل وحدة tls على Apigee Edge، يجب فهم طريقة استخدام virtual hosts في Apigee Edge. لكل بيئة في Apigee مضيف افتراضي واحد على الأقل. يحدد المضيف الافتراضي إعدادات HTTP للاتصال بمؤسسة Apigee. تشترك جميع الخوادم الوكيلة لواجهة برمجة التطبيقات في بيئة الاستضافة الافتراضية نفسها. يتوفّر مضيفان افتراضيان لكل بيئة تلقائيًا، وهما default وsecure. لمزيد من المعلومات حول المضيفين الافتراضيين، راجِع الحصول على مضيف افتراضي ودورة حياة تطوير واجهة برمجة التطبيقات.

لنلقِ نظرة على طريقة تعامل Apigee Edge مع اتصال بروتوكول أمان طبقة النقل (SSL) للطلبات الواردة والصادرة على تطبيقات Node.js:

معالجة الطلبات الواردة

استنادًا إلى كيفية إعداد المضيفين الافتراضيين لمؤسستك، يوفر Edge الخيارات التالية:

  • إذا تم ضبط الخادم الوكيل لواجهة برمجة التطبيقات بحيث يصغي إلى المضيف الافتراضي default، سيقبل الطلبات عبر HTTP.
  • إذا تم ضبط الخادم الوكيل لواجهة برمجة التطبيقات على الاستماع على المضيف الافتراضي secure، سيقبل الطلبات عبر HTTPS. سيكون عنوان URL ضمن النطاق apigee.net، وسيتم استخدام شهادة طبقة المقابس الآمنة لحرف البدل في *.apigee.net. وما دامت التطبيقات ترسل طلبات إلى نطاق apigee.net، سيتم التحقّق من صحة شهادة طبقة المقابس الآمنة بشكل طبيعي.

معالجة الطلبات الصادرة

يمكنك إجراء الطلبات الصادرة باستخدام الوحدة tls بالطريقة نفسها التي تجريها عادةً في Node.js. عليك في الأساس إضافة مفاتيح وشهادات من جهة العميل (.pem ملف) إلى دليل resources/node وتحميلها داخل النص البرمجي. للحصول على معلومات عن استخدام وحدة tls وطرقها، راجِع مستندات وحدة Node.js tls.

ضبط استهداف النص البرمجي المتقدّم

في تعريف <TargetEndpoint>، يأخذ العنصر <ScriptTarget> معلَمات اختيارية إضافية إلى جانب <ResourceURL>. يمكنك أيضًا تمرير وسيطات سطر الأوامر ومتغيرات البيئة إلى نص برمجي بلغة Node.js باستخدام المعلمتين <EnvironmentVariables> و<Arguments>:
<TargetEndpoint name="default">
  <ScriptTarget>
     <ResourceURL>node://hello.js</ResourceURL>
     <EnvironmentVariables>
         <EnvironmentVariable name="NAME">VALUE</EnvironmentVariable> 
     </EnvironmentVariables>
     <Arguments>
         <Argument>ARG</Argument>
     </Arguments>
  </ScriptTarget>
</TargetEndpoint>