استضافة CLR مقابل استخدام ClrCreateManagedInstance - ما هي الفوائد ؟

StackOverflow https://stackoverflow.com/questions/800867

  •  03-07-2019
  •  | 
  •  

سؤال

لقد نفذت بنجاح interop beftween التطبيق Win32 و إدارتها .صافي dll كما هو موضح هنا.ولكن أنا أيضا قراءة هنا أنه من الممكن أن تستضيف كامل CLR الداخل من غير المدارة العملية.

لذا سؤالي هو:لماذا تفعل ذلك ؟ هذا هو إلى حد ما أكثر تعقيدا من مجرد استخدام كائن - ما هي الفوائد التي يمكنك الحصول على هذا السعر من زيادة التعقيد ؟

تحرير:ما فهمته من 2 الأولى الأجوبة هو أن تحصل على إمكانية تخصيص CLR لتلبية الاحتياجات الخاصة بك - وهذا يعني إذا كنت تكتب بسيط الأعمال التطبيق, سوف تحتاج أبدا إلى المضيف.استضافة على نظام الأشياء الثقيلة ، مثل المتصفح أو SQL Server.

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

المحلول

استضافة CLR عموما ليست شيئا يمكنك القيام به إمكانية التشغيل المتداخل بين التعليمات البرمجية المدارة و Win32.عموما هناك 3 طرق من إمكانية التشغيل المتداخل:

  • للاستدعاء وقت تشغيل (RCW) - استدعاء كائن COM من .صافي
  • COM للاستدعاء المجمع (CCW) - جعل .صافي وجوه تظهر كائن COM
  • P/الاحتجاج

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

وبالمثل, SQL Server أردت أن أكتب الإجراءات المخزنة الموسعة و الوظائف مع التعليمات البرمجية المدارة.في الماضي يمكن أن أكتب هذه في C/C++, ولكن إذا كانت استضافت CLR أنها في الواقع يمكن أن تسمح للناس أن أكتب هذه مع C#.العمل على CLR في الدولة يمكن أن يكون بأمان جزءا لا يتجزأ حقا دفعت الجداول الزمنية, وما إلى ذلك من الأمور مثل التحكم في الذاكرة والأمن ولدت.SQL Server لديه بعض خطيرة متطلبات الاستقرار و لا يمكن أن يكون .صافي تعكير الصفو.

استضافة API تتغير بشكل كبير من .صافي 1.x 2.x ولكن كان أكثر استقرارا منذ 2.0 CLR عاش خلال .صافي 3.0, 3.5.... الخ

نصائح أخرى

مايكروسوفت SQL خادم يستخدمه extensivly لتحل محل الأمن، والتجمع، تحميل، إدارة الذاكرة، إدارة موضوع وليس ما. كتاب جيد حول هذا الموضوع هو "تخصيص برنامج Microsoft .NET Framework اللغة المشتركة وقت التشغيل".

قد يكون إرثا تطبيق تريد السماح 3rd الأطراف إلى استخدام مرافق .صافي من داخل التطبيق الخاص بك ولكن لا سيما في الطريقة التي تسيطر عليها مثل التحكم فيها الجمعيات يتم تحميلها من. هنا هو مثال على ذلك.

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