سؤال

لماذا MS أصلا اتخاذ القرار للحفاظ على هذه منفصلين الأساسية يبس?ربما كان لديهم بعض قابلية هذه المسألة في الاعتبار ، لكن في الوقت الحاضر أنا لا أرى تطبيق من أي نوع, لا تحتاج على حد سواء.هل لدى أحدكم أي معلومات من الداخل على هذا ؟ ليس من المهم حقا, ولكن كان في ذهني منذ سنوات.

PS.أنا أعرف ما في يبس ، أنا أعرف الفرق - أنا مروحة كبيرة من عاكس :) فقط أتساءل ما فائدة عملية الفصل بين اثنين.

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

المحلول

Mscorlib لا يحتوي على كل مواطن التعليمات البرمجية المدارة.

من بين أمور أخرى أنه يحتوي على النظام.كائن التنفيذ التي يجب أن تكون حاضرة دائما من أجل كل شيء إلى العمل.

لديها تمييز من كونها الجمعية الوحيدة التي CLR يتطلب أن تكون محملة داخل كل تدار العملية.

أصلا الكثير من "اختياري" الاشياء (الاشياء التي من الناحية الفنية ليست المطلوبة لتشغيل التطبيق) وضعت في mscorlib لأنها كانت الأشياء التي من المحتمل جدا أن يتم استخدامها من قبل الجميع.وهذا يشمل أشياء مثل HashTable قائمة.

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

الأشياء في system.dll كان كل شيء في الأساس أن لم يكن "جديرة" يتم تضمينها في mscorlib.

إلا أن هذا الاتجاه بدأ يكون عكس ذلك.CLR تبذل جهودا للحد من حجم mscorlib.الكثير من الأشياء كانت إزالتها عن سيلفرلايت على سبيل المثال (للحد من حجم التحميل).

أعتقد أنها يمكن أن تفعل أكثر من هذا النوع من الاشياء V4 (والإصدارات الأحدث) ولكن أنا غير متأكد حول التفاصيل.

نصائح أخرى

أنا أعمل على CLR/BCL فريق فقط بالرد على البريد الإلكتروني الخاص بك.ومن هنا لصق أدناه:

جاريد الإجابة على تجاوز سعة المكدس هو على حق.mscorlib.dll بإحكام لا بد أن CLR للأسباب انه ويذكر.علما بأن mscorlib.dll في حد ذاته لا يحتوي على أي من التعليمات البرمجية الأصلية (كما يشير سكوت) ، ولكن هناك العديد من الأماكن حيث أنه يحتاج إلى دعوة مباشرة إلى CLR.على هذا النحو ، CLR و mscorlib يجب أن يكون إصدار جنبا إلى جنب.

System.dll من ناحية أخرى لا بإحكام إلى CLR (لا تتطلب أي مكالمات في وقت التشغيل).ونحن نعتبر System.dll في أعلى طبقة من mscorlib.dll.وجود هذه الجمعيات في اثنين طبقات منفصلة يسمح لمزيد من المرونة ، مما يجعل من الأسهل الإصدار System.dll بشكل منفصل عن CLR/mscorlib.dll إصدار (إذا أردنا للقيام بذلك).ونحن يمكن ، من الناحية النظرية ، وجعل التغييرات وإضافة وظائف النظام.dll دون التسريع في CLR/mscorlib إصدار.الفصل أيضا يجعل من الاسهل لإدارة الاعتماد على القواعد بين المكونات في هذه طبقات مختلفة.

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

على المدى البعيد نريد للحد من كمية من "اختياري" الاشياء في mscorlib بقدر الإمكان.إما عن طريق دفع الأشياء من mscorlib أو خلق جديد أكثر الأساسية ، الجمعية يحتوي فقط على الحد الأدنى الأنواع الضرورية (مثلا ، النظام.الكائن ، النظام.Int32 ، إلخ.) لجعل المدارة قانون العمل.هذا سيتيح لنا المرونة لإضافة ابتكارات جديدة "اختياري" الأشياء وجعلها أسهل لخلق مختلفة .صافي إطار Sku (مثلا ، على .صافي العميل الشخصي, Silverlight, الخ) ، دون الحاجة إلى القس وقت التشغيل.

آمل أن يساعد هذا!

شكرا جاستن

التوسع في سكوت الإجابة.

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

نلقي نظرة جيدة على أي مشروع المراجع عقدة.لن تجد mscorlib.dll المذكورة هناك.وهو خاص, أي مترجم احتياجات لأنه يحتوي على أنواع المطلوبة لجعل اللغة جملة العمل.النظام.مجموعة النظام.Int32 النظام.سلسلة النظام.استثناء ، وما إلى ذلك.

يمكنك كتابة البرنامج الذي لا يجب الاعتماد على System.dll (على الرغم من أنه سيكون من الصعب) ولكن لا يمكنك الكتابة التي لا تعتمد على mscorlib.dll

المذكورة الأصلية/تمكنت شيء يبدو معقولا, ولكن ما زلت غير مقتنع تماما.في أي حال, MS يبدو لعرض mscorlib.dll باعتبارها جوهر lib اللازمة نظام, في حين System.dll يحتوي على الوظائف الأساسية ل المبرمجين - التي تبدو جيدة.

لقد أرسلت هذا السؤال نفسه إلى BCL الفريق.إذا أي شخص يمكن الإجابة...عندما (لو؟) أتلقى جوابا, وأنا بعد ذلك هنا.شكرا على إجابات حتى الآن!

هذا مجرد تخمين لكن mscorlib.dll وربما أيضا بعض التعليمات البرمجية C المهم أن CLR وقت التشغيل فضلا عن كونه .صافي الجمعية ، أو مختلطة-وضع التعليمات البرمجية.System.dll ربما كل المدارة.

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