سؤال

نيخيل كوثري هذا السيناريو# تماما وربما واحدة من أكثر مذهلة المفاهيم رأيت في جافا سكريبت الساحة لبعض الوقت.هذا السؤال ليس حول جافا سكريبت, ولكن بدلا عن لغة التجميع في .NET runtime.

أني كنت مهتما في كيفية استخدام .صافي منصة واحدة يمكن أن يكتب مترجم عن اللغة التي لديها بالفعل برنامج التحويل البرمجي (مثل C#) من شأنها أن تولد منفصلة الإخراج من الأصل المترجم في حين يسمح الأصلي مترجم إلى توليد الناتج عن نفس المصدر خلال نفس بناء العملية ، في حين الرجوع/باستخدام الإخراج الأخرى مترجم أيضا.

أنا لست متأكدا تماما حتى فهم العملية جيدا بما فيه الكفاية لطرح السؤال مع الحق في التفاصيل, ولكن هذه هي الطريقة التي أنا حاليا نرى هذه العملية ، كما في الرسوم البيانية في النص# مستندات.لقد فكرت في كثير من الأمور التي تنطوي على لغة معقدة التصميم و التجميع التي قد تكون قادرة على الاستفادة من المفاهيم مثل هذا و أنا مهتم في ما يعتقده الآخرون حول المفاهيم.

--

تحرير:شكرا على التعليق,حتى الآن ؛ المعلومات الخاصة بك هو في حق الخاصة ، مثيرة للغاية و أود أن البحث أكثر من ذلك ، ولكن سؤالي هو في الواقع حول كيفية وأود أن تكون قادرة على كتابة بلدي مترجم/s التي يمكن تشغيلها في نفس المصدر في نفس الوقت إنتاج عدة أنواع مختلفة من (يحتمل) مترابطة الإخراج باستخدام CLR.السيناريو# يخدم كمثال لأنه يولد جافا سكريبت و الجمعية باستخدام نفس C# مصدر كل حين جعل جمعت الجمعية تتعاون مع جافا سكريبت.أنا الغريب ما مختلف المناهج و المفاهيم النظرية في تصميم شيء من هذا القبيل.

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

المحلول

من المهم أن ندرك أن جميع مترجم يفعله هو أن تأخذ لغة المصدر (C# في هذه الحالة) ، تحليل ذلك المترجم له التمثيل المنطقي وليس البشر (هذا هو جملة مجردة شجرة) ، ثم لا السذاجة رمز جيل إلى اللغة الهدف (msil هو الهدف من اللغات التي تعمل على .NET runtime).

الآن إذا كان البرنامج النصي# رمز تحولت إلى الجمعية ويتفاعل مع الآخرين .صافي رمز هذا يعني أن المترجم يجب أن يكون توليد msil.السيناريو# يستخدم csc.exe هذا الذي هو مجرد معيار c# comiler.الآن لتوليد جافا سكريبت ، يجب أن تأخذ إما c# أو msil ، تحليل ، وتوليد جافا سكريبت إلى إرسالها إلى المتصفح.مستندات يقول فقد عرف c# -> js مترجم يسمى ssc.exe.

لجعل الأمور تتفاعل باستمرار على كل جانب العميل والخادم الجانب لديها مجموعة من الجمعيات المرجعية التي هي مكتوبة في .صافي ولكن أيضا المترجمة إلى جافا سكريبت.هذا ليس مترجم مسألة محددة على الرغم من تلك الجمعيات المرجعية هي النصي# وقت التشغيل.وقت التشغيل هو على الارجح مسؤولة عن الكثير من السيناريو# السحر كنت على الرغم من إدراك.

نصائح أخرى

لذلك دعونا نقول كنت ترغب في تجميع C# في جافا سكريبت.كنت أسأل ما إذا كان يمكنك الاستفادة من القائمة C# المجمعين ، وذلك بدلا من تجميع C# في جافا سكريبت مباشرة كنت في الواقع تحويل MSIL التي تم إنشاؤها بواسطة برنامج التحويل البرمجي C# في جافا سكريبت ؟

بالتأكيد, يمكنك أن تفعل ذلك.مرة واحدة لديك MSIL الثنائية يمكنك أن تفعل ما تريد إلى هذا.

مايكروسوفت لديها مشروع بحثي يسمى فولتا والتي من بين أمور أخرى ، يجمع msil إلى جافا سكريبت.

مطور أدوات بناء متعدد المستويات تطبيقات الويب باستخدام القائمة أدوات مألوفة ، تقنيات وأنماط.فولتا هو التعريفي الطبقة تقسيم تمكن المطورين تأجيل المعمارية القرارات حول توزيع حتى آخر المسؤولة اللحظة.أيضا بفضل مشترك البرمجة نموذج عبر عدة مستويات ، فولتا تمكن الجديدة نهاية إلى نهاية التنميط ، اختبار مستويات أعلى من تطبيق الأداء متانة ، والموثوقية.باستخدام التعريفي الطبقة تقسيم, يمكن للمطورين تحسين القرارات المعمارية وبناء على هذا التنميط البيانات.هذا يوفر الوقت و التكاليف المرتبطة دليل إعادة بيع ديون.في الواقع ، فولتا يمتد على .صافي منصة لتمكين تطوير البرنامج+خدمات تطبيقات باستخدام القائمة مألوفة الأدوات والتقنيات.

تصميم وبناء تطبيق .صافي العميل طلب تعيين أجزاء من التطبيقات التي يتم تشغيلها على الملقم الطبقة العميل الطبقة المتأخرة في عملية التنمية.يمكنك استهداف إما متصفحات الويب أو CLR كما عملاء فولتا يعالج تعقيدات الطبقة تقسيم.على مترجم يخلق عبر المتصفح جافا سكريبت للعميل الطبقة, على شبكة الإنترنت خدمات الخادم الطبقة, و كل الاتصالات التسلسل ، تزامن والأمن وغيرها رمز المتداول ربط مستويات جنبا إلى جنب.في الواقع ، فولتا يقدم أفضل جهد الخبرة في عدة بيئات دون الحاجة الخياطة من التطبيق.

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