مشاركة عبر


فئة مقابل مكوّن مقابل التحكم

Th هو الموضوع بتعريف مكون وعنصر التحكم؛ ويجب أن dهوcussion المقدمة هنا تساعدك على تحديد متى يتم تطبيق فئة التي هو مكون أو عنصر تحكم.

توفر القائمة التالية إرشادات واسعة للمنفذين .

  • إذا كان يستخدم موارد خارجي الفصل الدراسي ولكن لن يتم استخدامها تشغيل سطح التصميم، تنفيذ System.IDisposable، أو اشتقاق من فئة الذي يطبق بشكل مباشر أو غير مباشر IDisposable.

  • إذا كان سيتم استخدام الفصل الدراسي تشغيل سطح تصميم (تشغيل سبيل المثال، مصمم Windows Forms أو نماذج ويب)، تطبق System.ComponentModel.IComponent، أو اشتقاق من فئة الذي يطبق بشكل مباشر أو غير مباشر IComponent. لاحظ أن IComponentيمتد IDisposable، لذلك IComponentيكون النوع دائماً IDisposableالنوع. IComponentنوع زائد عن الحد أداء مربع متوسط عبر IDisposableنوع غير IComponent، ولكن هذا هو بشكل عام بإزاحة بالقدرة على إلى موقع IComponentفي وقت التصميم ووقت التشغيل. (siting هو شرحها لاحقاً في ترتيب هو الموضوع.)

  • إذا كنت ترغب في فئة التي هو designable (يستخدم تشغيل سطح تصميم) و هو تنظيم مرجع، يمكن أن ينحدر من System.ComponentModel.Component. Componentيتم تطبيق القاعدةIComponentالنوع الذي يتم تنظيم مرجع.

  • إذا كنت ترغب في designable الفئة هو تنظيم حسب القيمة، يمكن أن ينحدر من System.ComponentModel.MarshalByValueComponent. MarshalByValueComponentهو تطبيق القاعدةIComponentكتابته هو تنظيم قيمة.

  • إذا كنت ترغب في تقديم IComponentنوع في الكائن هيكلي لطراز لا ينحدر من تنفيذ ما أساسية مثل Componentأو MarshalByValueComponentنتيجة للوراثة مفرد، قم بتطبيق IComponent.

  • إذا كنت ترغب في فئة designable التي توفر واجهة مستخدم، الفصل الدراسي هو عنصر تحكم. عنصر تحكم يجب اشتقاق مباشر أو غير مباشر من أحد الأساس التحكم في الفصول الدراسية: System.Windows.Forms.Control أو System.Web.UI.Control.

    ملاحظة

    إذا كان الفصل الدراسي هو ولا designable ولا تحتوي على موارد خارجية، لا تحتاج IComponentأو IDisposableالنوع.

ملفات تعريف للمكون، عنصر تحكم، حاوية، وتتبع الموقع.

المكون

في .NET Framework، مكون هو فئة التي تطبق System.ComponentModel.IComponentواجهة أو مشتقة مباشرة أو غير مباشر من فئة التي تطبق IComponent. في البرمجة، مكوّن مصطلح هو المستخدمة بشكل عام بالنسبة لكائن الذي هو القابل لإعادة الاستخدام ويمكن التعامل مع الكائنات غير ذلك. .NET Frameworkمكونات يفي بهذه المتطلبات عام و بالإضافة إلى ذلك يوفر ميزات مثل عنصر تحكم على الموارد الخارجية ودعم وقت التصميم.

عنصر تحكم على الموارد خارجي

IComponentواجهة يمتد IDisposableالواجهة، والذي يحتوي على أسلوب يسمى Disposeفي اتفاق الخاصة بها. في التنفيذ الخاص به من Disposeالأسلوب، مكوّن تحرير موارد خارجي بوضوح. ويوفر ذلك طريقة محدداً حر موارد، بعكس إلى تنظيف nondeterministic الافتراضي الذي يحدث من خلال تجميع البيانات المهملة. Developers must propagate Disposethroughout a containment hierarchy to ensure that children of a component also free resources. بالإضافة إلى ذلك، مشتق مكوّن يجب استدعاء Disposeأسلوب فئة. الأساسي الخاص به

ملاحظة

حتى عندما تقوم بتوفير التحكم الصريح في موارد من خلال Dispose، ينبغي عليك دائماً توفير التنظيف الضمني من خلال أداة الإنهاء (destrucإلىr) إلى منع leaking إذا فشل أحد المستخدمين بشكل دائم لموارد إلى استدعاء Disposeتشغيل مكوّن الخاص بك.

يظهر المثال التالي نقش لتطبيق Disposeفي الأساس مكوّن والمكونات المشتقة.

public class BaseComponent : IComponent {

   // IComponent extends IDisposable.
   public void Dispose() {
        Dispose(true);
     GC.SuppressFinalize(this); 
      }

   protected virtual void Dispose(bool disposing) {
      if (disposing) {
          // Free other state (managed objects).
      }
      // Free your own state (unmanaged objects).
   }

   // Simply call Dispose(false).
      ~BaseComponent(){
      Dispose (false);
   }
}
   
// Derived component.
public class DerivedComponent : BaseComponent {
   
   protected override void Dispose(bool disposing) {
      if (disposing) {
      // Free other state.
      }
      // You must invoke the Dispose method of the base class.
      base.Dispose(disposing);
      // Free your own state.
      ...
   }
   // No finalizer/destructor.
   // No Dispose() method.
}

   
' Design pattern for a base class.
Public Class BaseComponent
   Implements IComponent
   ' Implement IDisposable
   Public Overloads Sub Dispose() 
      Dispose(True)
      GC.SuppressFinalize(Me)
   End Sub

   Protected Overloads Overridable Sub Dispose(disposing As Boolean)
      If disposing Then
         ' Free other state (managed objects).
      End If
      ' Free your own state (unmanaged objects).
      ' Set large fields to null.
   End Sub

   Protected Overrides Sub Finalize()
      ' Simply call Dispose(False).
      Dispose (False)
   End Sub
End Class

' Design pattern for a derived component.
Public Class DerivedComponent
   Inherits BaseComponent

   Protected Overloads Overrides Sub Dispose(disposing As Boolean) 
      If disposing Then 
         ' Release managed resources.
      End If
      ' Release unmanaged resources.
      ' Set large fields to null.
      ' Call Dispose on your base class.
      Mybase.Dispose(disposing)
   End Sub
   ' The derived class does not have a Finalize method
   ' or a Dispose method with parameters because it inherits
   ' them from the base class.
End Class

وقت التصميم دعم

ميزة هامة مكوّن s في .NET Frameworkهو أن تكون designable، مما يعني أنه فئة التي يعتبر مكوّن يمكن استخدامه في بيئة التطوير سريع لتطبيقات (RAD) لتطوير مثل Visual Studio. أ مكوّن يمكن إضافته إلى مربع الأدوات من Visual Studio، يمكنك سحب وإسقاط قالب نموذج، ويمكن أن يتم التعامل معه تشغيل سطح التصميم. لاحظ أن إسناد دعم وقت التصميم IComponentأنواع هو مضمنة في .NET Framework؛ مطور مكون لم يكن للقيام بأية أعمال إضافى للاستفادة من أساس وقت التصميم وظيفة.

لمزيد من المعلومات حول دعم وقت التصميم , راجع السمات وقت التصميم ل مكونات و توسيع دعم وقت التصميم .

استضافة مكوّن

أ مكوّن يمكن أن sited (استضافة) في حاوية (معرفة لاحقاً في هذا الموضوع). عند مكوّن هو sited، فإنه يتفاعل مع الحاوية من خلال الموقع الخاص به (معرف لاحقاً في هذا الموضوع) وله القدرة على الاستعلام والحصول على خدمات من الحاوية الخاصة به من خلال الموقع. للتأكد من أن يتم تحرير موارد عند حاوية هو torn باستمرار، عليك تطبيق حاوية IDisposableالواجهة. في التنفيذ الخاص به من Disposeالأسلوب، يجب تحرير حاوية الجميع موارد التي تحتوي عليه و استدعاء Disposeأسلوب لكل من له المكونات المضمنة.

الاحتواء هو منطقية وتحتاج لم يتم تمثيل vهوual. حاوية الطبقة المتوسطة التي مواقع مكونات قاعدة بيانات هو مثالاً للاحتواء nonvهوual. الاحتواء Vهوual هو في مصمم Windows Forms "و" مصمم "نماذج ويب" في Visual Studio. هو سطح التصميم المرئي حاوية التي تستضيف مكونات النموذج (في "نماذج ويب"، مكوّن الصفحة).

التنظيم والإرسال مكون

مكونات يمكن remotable أو nonremotable. يتم تنظيم مكونات Remotable بواسطة مرجع أو بواسطة قيمة. التنظيم والإرسال تتضمن إرسال الكائنات عبر حدود مثل كـ مجالات التطبيق(lightweight معالجات) والعمليات وأجهزة الزوجية. عند تنظيم كائن ب مرجع، يتم تاريخ الإنشاء وكيل يجعل المكالمات البعيدة للكائن. عندما يتم تنظيم كائن بواسطة قيمة، يتم إرسال نسخ متسلسلة الكائن عبر حدود ذات الصلة.

Remotable المكونات التي تغلف موارد النظام، والتي تكون قطر أيمن متوسط، أو يكون موجوداً كما يجب أن يتم تنظيم مثيلات مفرد حسب المرجع. فئة الأساس للمكونات التي يتم تنظيم بواسطة هو مرجع System.ComponentModel.Component. تطبق هذه فئة الأساس IComponentو مشتقة من MarshalByRefObject. العديد من المكونات في .NET Frameworkمكتبة الفئات ينحدر من Component، متضمناً System.Windows.Forms.Control(the فئة الأساس for Windows Forms عناصر التحكم)، System.Web.Services.WebService(the فئة الأساس for XML ويب الخدمات تاريخ الإنشاء usingASP.NET) ، و System.Timers.Timer(a class that generates عناصر متكررة أحداث).

يمكن تنظيم مكونات Remotable الاحتفاظ ببساطة الولاية بواسطة قيمة. فئة Base للمكونات التي يتم تنظيم القيمة هو System.ComponentModel.MarshalByValueComponent. تطبق هذه فئة الأساس IComponentو مشتقة من Object. فقط بعض مكونات .NET Frameworkفئة مكتبة ينحدر من MarshalByValueComponent. الجميع such مكونات are في theSystem.Dataمساحة الاسم (DataColumn,DataSet,DataTable,DataView, وDataViewManager).

ملاحظة

الأساس الفئات للكائنات التي يتم تنظيم بقيمة وحسب المرجع Objectو MarshalByRefObject، على التوالي، ولكن يتم تسمية الفئات المشتقة المقابلة MarshalByValueComponentو Component. المنطق خلف نظام التسمية هو أن الأكثر استخداماً نوع يحمل اسم أبسط.

إذا كان مكوّن لن تكون أبعاد، لا ينحدر من التطبيقات الأساسية ل Component؛ بدلاً من ذلك، يتم تطبيق IComponentمباشرة.

عنصر التحكم

عنصر تحكم هو مكون الذي يوفر قدرات واجهة مستخدم (واجه مستخدم) (أو تمكين). .NET Frameworkيوفر فئتين الأساسية ل عناصر التحكم: لعناصر تحكم النماذج Windows العميل والآخر ل ASP.NETالخادم عناصر التحكم. These areSystem.Windows.Forms.ControlوSystem.Web.UI.Control. الجميع عناصر التحكم في .NET Frameworkاشتقاق فئة مكتبة مباشرة أو غير مباشر من هذه الفئات الثاني. System.Windows.Forms.Controlمشتقة منComponentوتقدم نفسها واجه المستخدم إمكانيات. System.Web.UI.ControlيطبقIComponentوتوفير البنية التحتية عليها هو سهلة لإضافة وظائف واجهة المستخدم.

ملاحظة

كل عنصر تحكم هو أحد مكونات، ولكن في حديث هو غير صحيح.

حاوية و موقع

إذا كنت تقوم بتطوير المكونات و عناصر التحكم لنماذج Windows أو لصفحات "نماذج ويب" ( ASP.NETالصفحات)، لا يلزم تطبيق حاويات أو المواقع. يقوم مصممو النماذج Windows ونماذج ويب تعتبر حاويات لنماذج Windows ASP.NETالملقم عناصر التحكم. حاويات توفير الخدمات للمكونات و عناصر التحكم sited داخلها. sited عناصر تحكم وقت التصميم، في المصمم و الحصول على الخدمات من المصمم. لاكتمال، ملفات تعريف حاوية و يتم إعطاء موقع أدناه.

  • Container
    حاوية هي فئة تطبيق System.ComponentModel.IContainerواجهة أو مشتقة من فئة تطبيق ذلك واجهة. حاوية واحدة أو أكثر من المكونات التي تسمى الحاوية التي تحتوي على منطقياً فرع المكونات.

  • Site
    هو موقع فئة التي تقوم بتنفيذ System.ComponentModel.ISiteالواجهة أو مشتقة من فئة التي تطبق هذه الواجهة. يتم توفير مواقع بواسطة حاوية إلى إدارة والتواصل مع المكونات التابعة له. بشكل عام، يتم تطبيق حاوية وموقع كـ وحدة.

راجع أيضًا:

المبادئ

نظرة عامة حول الخصائص

السمات وقت التصميم ل مكونات

موارد أخرى

تطوير نماذج Windows مخصصة عناصر التحكم مع.NET Framework

تطوير Server ASP.NET عناصر التحكم المخصصة

توسيع دعم وقت التصميم