فهم توافق 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.

الوحدة الحالة ملاحظات
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 محظور وتؤدي محاولات الاستماع إلى اتصالات TCP الواردة إلى إنشاء استثناء.
path معلومات معتمَدة
module معلومات معتمَدة
process الدعم الجزئي لا تتوفر وظائف لمعالجة رقم تعريف المستخدم وعضوية المجموعة ودليل العمل
punycode معلومات معتمَدة
querystring معلومات معتمَدة
readline غير مفعّل ما مِن إدخال عادي للنصوص البرمجية التي يتم تشغيلها على Apigee Edge.
repl غير مفعّل ما مِن إدخال عادي للنصوص البرمجية التي يتم تشغيلها على Apigee Edge.
module متاحة
STDIO معلومات معتمَدة

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

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

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

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

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

الوحدة الوصف
apigee-access يتيح هذا الإذن لتطبيقات Node.js التي تعمل على نظام Apigee Edge الأساسي إمكانية الوصول إلى البيانات. الوظائف الخاصة بـ Apigee. يمكنك استخدام هذه الوحدة من أجل: الوصول إلى التدفق وتعديله واسترداد البيانات من التخزين الآمن، واستخدام ذاكرة التخزين المؤقت لشبكة Edge، والحصة، وبروتوكول OAuth راجع أيضًا استخدام وواجهة برمجة التطبيقات API.
trireme-support يتيح هذا الخيار لتطبيقات Node.js الاستفادة من الميزات الخاصة بـ Trireme. حاليًا هناك ميزة واحدة فقط متوافقة، وهي تحميل وحدات Node.js المضمّنة في Java. ملاحظة: لا يتوفّر ملفloadJars في Edge Cloud.
trireme-xlsxt تقدم تجريدًا لمعالجة XLST. فهي مصممة خصيصًا لـ Trireme للسماح بالمعالجة الفعالة لـ {/6} عندما يتم تشغيل تطبيقات Node.js على جافا.
trireme-jdbc تتيح هذه السياسة الوصول إلى JDBC من Node.js. ملاحظة: غير متاح في Edge Cloud. لبرنامج Edge الخاص السحابة الإلكترونية، يمكنك وضع ملفات 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 في الحافة إدارة واجهة المستخدم للخادم الوكيل. يمكنك أيضًا استخدام "apigeetool getlogs" الأمر. لمزيد من المعلومات، المعلومات، فراجع نشر تطبيق Node.js مستقل.
  • الوحدات التي تعتمد على رمز أصلي غير متوافقة.
  • لا تُعتبر الوحدات التي تعتمد على ميزات EcmaScript 6، مثل الوعود والمنشئين،
  • علامات وقت تشغيل Node.js، مثل "harmony-proxies" غير مدعومة.

ضبط قيود اتصال IP على Edge for 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". المستخدم:
    &gt; chown apigee:apigee /<inst_root>/apigee/customer/application/message-processor.properties
  5. إعادة تشغيل معالج الرسائل:
    &gt; /<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 التطبيق. تعمل هذه الوحدات تمامًا كالعادة داخل Node.js.

فهم دعم وحدة tls

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

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

لنتعرّف الآن على كيفية تعامل Apigee Edge مع اتصال بروتوكول أمان طبقة النقل (TLS) بطبقة المقابس الآمنة الواردة والصادرة على تطبيقات Node.js:

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

بناءً على كيفية تهيئة خدمات الاستضافة الافتراضية في مؤسستك، توفر شبكة Edge هذه الخيارات:

  • في حال تم ضبط الخادم الوكيل لواجهة برمجة التطبيقات للاستماع على المضيف الظاهري في default، تقبل الطلبات عبر HTTP.
  • في حال تم ضبط الخادم الوكيل لواجهة برمجة التطبيقات للاستماع على المضيف الظاهري في secure، تقبل الطلبات عبر HTTPS. سيكون عنوان URL ضمن النطاق "apigee.net"، سيتم استخدام شهادة SSL لحرف البدل في *.apigee.net. طالما أن التطبيقات توفر طلبات إلى النطاق apigee.net، فسيتم التحقق من صحة شهادة طبقة المقابس الآمنة (SSL) بشكل طبيعي.

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

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

الإعداد المتقدّم للنص البرمجي المستهدَف

في <TargetEndpoint> تعريف، وهي <ScriptTarget> العنصر الذي يأخذ المزيد من مَعلمات اختيارية إلى جانب <ResourceURL> يمكنك أيضًا تمرير وسيطات سطر الأوامر متغيرات البيئة إلى نص برمجي Node.js باستخدام <EnvironmentVariables> أو &lt;Arguments&gt; المَعلمات:

<TargetEndpoint name="default">
  <ScriptTarget>
     <ResourceURL>node://hello.js</ResourceURL>
     <EnvironmentVariables>
         <EnvironmentVariable name="NAME">VALUE</EnvironmentVariable> 
     </EnvironmentVariables>
     <Arguments>
         <Argument>ARG</Argument>
     </Arguments>
  </ScriptTarget>
</TargetEndpoint>