Aracılığıyla paylaş


Sınıf vs. Bileşen vs. Denetim

Bu konuda, bileşen ve Denetim tanımlar; Burada sunulan tartışma bir bileşeni veya denetimi sınıfı uygulamak ne zaman karar vermenize yardımcı olması.

[!NOT]

Bu, Windows Forms ve ASP sınıfları hakkında konudur.Bu tartışma değil wpf sınıfları wpf denetimleri geliştirme hakkında bilgi için uygulama, bkz: Denetim Yazımına Genel Bakış.

Aşağıdaki liste, uygulayıcıları için geniş yönergeleri sağlar.

Bileşeni, Denetim, kapsayıcı ve site tanımları izleyin.

Bileşen

De .NET Framework, bir bileşenidir uygulayan bir sınıf System.ComponentModel.IComponent arabirimi veya uygulayan bir sınıftan türer doğrudan veya dolaylı olarak IComponent.Programlamada, terim bileşeni genellikle nesnenin diğer nesnelerle etkileşim kurabilir ve yeniden kullanılır.A .NET Framework bileşen bu genel gereksinimlerini karşılar ve ayrıca denetim dış kaynaklar ve tasarım zamanı desteği gibi özellikler sağlar.

0b1dk63b.collapse_all(tr-tr,VS.110).gifDış kaynaklar üzerinde denetimi

IComponent Arabirimi genişletiyor IDisposable adlı bir yöntemi olan arabirim Dispose , sözleşmede.Kendi uygulamasında Dispose yöntemi, bir bileşeni dış kaynaklar açıkça bırakmalıdır.Bu çöp toplama olacağını varsayılan FUNCTION temizleme tersine Kaynakları boşaltmak için deterministik bir yol sağlar.Geliştiriciler gerekir yay Disposeçocuklar bir bileşenin de kaynakları serbest olduğundan emin olmak için bir içerik hiyerarşisi boyunca.Ayrıca, bir türetilmiş bileşen çağırmanız gerekir Dispose , temel sınıf yöntemi.

[!NOT]

Açık kaynaklar kontrolünü sağlamak ne zaman bile Dispose, her zaman kullanıcının çağrı başarısız olursa kalıcı olarak sızıntı kaynakları önlemek için sonlandırıcıyı (yıkıcı) aracılığıyla örtülü temizleme sağlamalıdır Dispose bileşeninizin üzerinde.

Desen uygulamak için aşağıdaki örnekte gösterildiği Dispose temel bir bileşenidir ve türetilmiş bir bileşen.

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

0b1dk63b.collapse_all(tr-tr,VS.110).gifTasarım zamanı desteği

Önemli bir özelliği Bileşenleri'nde, .NET Framework bir bileşen sınıfının hızlı uygulama geliştirme (rad) ortamında aşağıdaki gibi kullanılabileceğini anlamına gelir designable, olmalarını kapsayacaktır Visual Studio.Bir bileşen araç kutusu eklenebilir Visual Studio, sürüklenip bir forma ve tasarım yüzeyi üzerinde hareket ettirilebilen.Temel tasarım zamanı desteği için Not IComponent türleri yerleşik .NET Framework; Bileşen Geliştirici temel tasarım zamanı işlevsellikten yararlanmak için herhangi bir ek iş yapmak zorunda değil.

Tasarım zamanı desteği hakkında daha fazla bilgi için bkz: Tasarım zamanı öznitelikleri bileşenleri ve Tasarım zamanı desteği genişletme.

0b1dk63b.collapse_all(tr-tr,VS.110).gifBir bileşeni barındıran

Bir bileşeni (bu konunu sonraki bölümlerinde tanımlanan) kapsayıcısında (barındırılan) tarihli.Bir bileşen tarihli zaman konteyner (bu konunu sonraki bölümlerinde tanımlanan) kendi sitesi üzerinden etkileşim ve sorgulamak ve Hizmetleri site konteynerinden yeteneğine sahiptir.Bir kapsayıcı parçalanmış olduğunda kaynaklar serbest emin olmak için bir kapsayıcı uygulamalıdır IDisposable arabirimi.Kendi uygulamasında Dispose yöntemi, bir kapsayıcı olmalıdır, taşıdığı tüm kaynakları serbest ve harekete geçirmek Dispose yöntemi her birinin kendi içerilen bileşenler.

İçerik mantıksal ve görsel bir temsilini olması gerekmez.Veritabanı bileşenleri siteleri bir Orta Bağlayıcıya konteyner nonvisual kapsayıcı bir örnektir.Windows Forms tasarýmcýsý ve Web Forms tasarýmcýsý içinde görsel içerik görülen Visual Studio.Görsel tasarım yüzeyine (Web formlarındaki, sayfa bileşeni) form bileşeni barındıran bir kapsayıcıdır.

0b1dk63b.collapse_all(tr-tr,VS.110).gifBir bileşen sıralaması

Bileşenleri uzaktan yönetilebilir veya nonremotable olabilir.Uzaktan erişilebilir bileşenler başvuruya veya değere göre sıralanmış.Sıralama ilgilidir nesneleri gibi sınırları boyunca gönderme Uygulama etki alanları (Hafif işlemleri) işlemleri ve hatta makineler.Bir nesneyi başvuruya göre sıralanmış, bir proxy nesnesi uzak çağrıları yapan oluşturulur.Değerine göre sıralandığında, bir nesnenin nesne seri hale getirilmiş bir kopyası ilgili sınırı boyunca gönderilir.

Uzaktan erişilebilir bileşenler büyük veya başvuruya göre tek örneklerini konmasını gibi mevcut sistem kaynaklarını kapsayan.Başvuruya göre sıralanmış bileşenler için taban sınıftır System.ComponentModel.Component.Bu temel sınıf uygulayan IComponent ve türetildiği MarshalByRefObject.Bileşenlerinin çoğunun .NET Framework sýnýf kitaplýðý türetmek Componentdahil, System.Windows.Forms.Control (Windows Forms denetimleri için temel sınıf) System.Web.Services.WebService (kullanılarak oluşturulan xml Web hizmetlerinin temel sınıf ASP.NET), ve System.Timers.Timer (yinelenen olaylara üreten bir sınıf).

Sadece durumu basılı Uzaktan erişilebilir bileşenler değerine göre sıralanmış.Değerine göre sıralanmış bileşenler için taban sınıftır System.ComponentModel.MarshalByValueComponent.Bu temel sınıf uygulayan IComponent ve türetildiği Object.Yalnızca birkaç bileşenleri .NET Framework sýnýf kitaplýðý türetmek MarshalByValueComponent.All such components are in the System.Data namespace (DataColumn, DataSet, DataTable, DataView, and DataViewManager).

[!NOT]

Base classes değeri ve başvuru göre sıralanmış nesneler için Object ve MarshalByRefObject, sırasıyla, ancak karşılık gelen türetilmiş sınıflar adlı MarshalByValueComponent ve Component.Adlandırma düzeni arkasındaki mantığa daha yaygın olarak kullanılan tür basit ad olmasıdır.

Bir bileşen düğümlerde olmayacak, temel uygulamaları için gelen türevi değil Component; Bunun yerine, çözümü IComponent doğrudan.

Denetim

Denetim, kullanıcı arabirimi (UI) yetenekleri sağlar (veya etkinleştirir) bir bileşendir..NET Framework İki temel sınıflar denetimleri sağlar: biri istemci tarafı Windows Forms denetimleri ve diðer ASP.NET sunucu denetimleri.These are System.Windows.Forms.Control and System.Web.UI.Control.Tüm denetimlerin de .NET Framework sınıf kitaplığı bu iki sınıftan türemesine doğrudan veya dolaylı olarak.System.Windows.Forms.Controltüretildiği Component ve kendisini UI yetenekleri sağlar.System.Web.UI.Controluygulayan IComponent ve onu olduğu kullanıcı Arabirimi işlevselliği eklemek kolay bir altyapı sağlar.

[!NOT]

Her denetim bir bileşenidir, ancak converse doğru değil.

Kapsayıcı ve Site

Bileşenleri ve denetimleri Windows Forms ya da Web formları sayfalarını geliştiriyorsanız (ASP.NET sayfalar), kapsayıcı veya sitelere uygulamak zorunda değilsiniz.Windows Forms ve Web Forms tasarımcıları ve Windows Forms için kaplardır ASP.NET sunucu denetimleri.Kapsayıcılar bileşenleri ve denetimleri içinde bunları tarihli hizmetleri sağlamak.Tasarım zamanında denetimleri Tasarımcısı'nda tarihli ve Hizmetleri Tasarımcısı'ndan elde edilir.Eksik kalmaması açısından bir kapsayıcı ve site tanımları aşağıda verilmiştir.

  • Container
    Bir kapsayıcıdır uygulayan bir sınıf System.ComponentModel.IContainer arabirim veya bu arabirimi uygulayan bir sınıftan türer.Bir kapsayıcı mantıksal olarak konteynerin alt bileşenler olarak adlandırılan bir veya daha fazla bileşen içerir.

  • Site
    Bir site uygulayan bir sınıf olan System.ComponentModel.ISite arabirim veya bu arabirimi uygulayan bir sınıftan türer.Siteleri yönetme ve alt bileşenleriyle iletişim kurmak için bir kapsayıcı tarafından sağlanmıştır.Genellikle, bir konteyner ve bir site bir birim olarak uygulanır.

Ayrıca bkz.

Kavramlar

Özelliklerine genel bakış

Tasarım zamanı öznitelikleri bileşenleri

Diğer Kaynaklar

Özel Windows Forms denetimleri ile geliştirmek.net Framework

Developing Custom ASP.NET Server Controls

Tasarım zamanı desteği genişletme