سؤال

لقد كنت أبحث في الكود المصدري لـ Ironpython المشروع و بستان CMS مشروع. تعمل Ironpython مع مساحة اسم تسمى microsoft.scripting.hosting.shell (جزء من DLR). يعمل مشروع Orchard أيضًا بمفهوم "Shell" بشكل غير مباشر في واجهات مختلفة (IshellContainerFactory ، Ishellsettings).

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

الآن أتساءل: ماذا يدور مؤلفو هذا الكود المصدري عند الرجوع إلى "قذيفة"؟ عندما أسمع كلمة "شل" ، أفكر في شيء مثل مترجم سطر الأوامر. هذا أمر منطقي بالنسبة لـ IronPython ، لأنه يحتوي على مترجم تفاعلي. لكن بالنسبة لي ، لا معنى له فيما يتعلق بـ CMS على شبكة الإنترنت.

ما الذي يجب أن أفكر فيه ، عندما أواجه شيئًا يسمى "قذيفة"؟ ما هو ، بشكل عام ، دور ومسؤولية "قذيفة"؟ هل يمكن الرد على هذا السؤال؟ هل معنى "شل" شخصي (جعل المصطلح عديم الفائدة)؟

شكرًا.

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

المحلول

أعتقد أن المعنى العام لـ shell سيكون "عملية المستخدم التي تفسر الأوامر وتنفذها".

  1. 'عملية المستخدم': كما تختلف عن عملية مدمجة في نواة نظام التشغيل. سيتم الضغط على JCL في عالم IBM Mainframe بشدة ليعتبر قذيفة.

  2. 'يفسر وينفذ': في شكل أو شكل ، تقرأ shell أوامر من ملف أو محطة ، وتتفاعل مع ما يتم تقديمه ، بدلاً من أن تكون مبرمجًا بشكل صارم للقيام بتسلسل معين من الأوامر.

  3. 'الأوامر: ما هي الأوامر يعتمد على السياق. في قذائف UNIX القياسية ، تكون الأوامر التي تم تنفيذها هي البرامج الأخرى بشكل أساسي ، حيث تربطها القشرة معًا بشكل مناسب. من الواضح أن هناك أوامر مدمجة ، وعادة ما يكون هناك بناء جملة للسيطرة على التدفق للسماح بردود الفعل المناسبة على نتائج تنفيذ الأوامر.

في سياقات أخرى ، من المعقول التفكير في تنفيذ أنواع أخرى من الأوامر. على سبيل المثال ، يمكن للمرء أن يتصور "قذيفة SQL" التي سمحت للمستخدم بتنفيذ عبارات SQL أثناء توصيلها بقاعدة بيانات.

ستدعم قذيفة Python الرموز البيثونية وستنفذ عبارات تشبه الثعبان ، مع بناء جملة مرتبطة ارتباطًا وثيقًا ببناء بناء الثعبان. ستدعم قذيفة Perl الترميزات التي تشبه Perl وستقوم بتنفيذ عبارات تشبه Perl ، ... وهكذا تطول القائمة. (على سبيل المثال ، TCL لديه TCLSH - قذيفة TCL.)

نصائح أخرى

في Orchard ، يعد مصطلح "Shell" حقًا استعارة لنطاق. هناك ثلاثة نطاقات متداخلة: المضيف والقذيفة والعمل.

المضيف عبارة عن حاوية واحدة تعيش طوال مدة مجال تطبيق الويب.

القشرة هي حاوية طفل تم إنشاؤها بواسطة المضيف تم تصميمها وفقًا للتكوين الحالي. إذا تم تغيير التكوين ، فسيتم بناء قذيفة جديدة وتم ترك القائمة الموجودة.

العمل هو حاوية أخرى ، تم إنشاؤها بواسطة القشرة ، والتي تحمل المكونات التي تعيش طوال مدة طلب واحد.

أحد الأشياء اللطيفة حول استخدام حاوية شل التي تساعد على تجنب استخدام المتغيرات الثابتة والحاجة إلى ركوب مجال التطبيق عند تغيير التكوين. شيء آخر لطيف هو أنه يمكّن مجال تطبيق Orchard من تقديم أكثر من "موقع" في نفس الوقت الذي يحمل فيه المضيف عددًا من القذائف ويستخدم المجال المناسب لكل طلب.

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