類、控件和組件,容器、站點和組件

組件

          在 .NET Framework 中,組件是指實現 System.ComponentModel.IComponent 接口的一個類,或從實現 IComponent 的類中直接或間接派生的類。在編程中,“組件”這個術語通常用於可重複使用並且可以和其他對象進行交互的對象。.NET Framework 組件滿足這些一般要求,另外還提供諸如控制外部資源和設計時支持等功能。

控件
        控件是提供(或實現)用戶界面 (UI) 功能的組件。.NET Framework 爲控件提供兩個基類:一個用於客戶端 Windows 窗體控件,另一個用於 ASP.NET 服務器控件。它們是 System.Windows.Forms.Control 和 System.Web.UI.Control。.NET Framework 類庫中的所有控件直接或間接從這兩個類派生。System.Windows.Forms.Control 從 Component 派生,本身提供 UI 功能。System.Web.UI.Control 實現 IComponent 並提供可在其上輕鬆添加 UI 功能的基礎結構。

控件是組件的派生類,每個控件都是一個組件,但並不是每個組件都是控件。
組件在運行時不能呈現UI,而控件可以在運行時呈現UI
組件是放在容器Container上的,而控件則是放在Windows Form或者Web Form上的。
當然Windows Form 或者Web Form 本身就是一個容器Container


組件和控件一般可以放到VS的工具箱中。一般組件只是在WinForm時有設計支持,Webfrom在工具箱成灰色

有的控件也沒有UI呈現的 如 SqlDataSource 上次看到有人把它作爲組作而非控件 這是不對的 它是System.Web.UI.Control的派生類

比較常用的組件有 Timer Tootip Imagelist  Backgroudwork 等

System.Data 下有幾個另類的組件 
DataColumn、DataSet、DataTable、DataView
我們天天都在用,卻沒注意它們也是組件 
因爲它們有的幾乎沒有設計時支持,它們在工具箱數據選項卡,顯示全部就可以看到了

還有 System.Web.Services.WebService System.Timers.Timer也是組件
所以說不要把組件和VS工具欄裏的等同,設計時IED支持不是必須的 ,“組件”這個術語通常用於可重複使用並且可以和其他對象進行交互的對象。



組件IComponent 有兩種默認實現
System.ComponentModel.Component :IComponent
System.ComponentModel.MarshalByValueComponent:IComponent

Component 是按引用封送 MarshalByValueComponent是按值封送

       以下可遠程控制的組件應該由引用封送:封裝系統資源的可遠程控制組件,較大的可遠程控制組件或作爲單個實例存在的可遠程控制組件。由引用封送的組件的基類是 System.ComponentModel.Component。該基類實現 IComponent 並從 MarshalByRefObject 派生。.NET Framework 類庫中的許多組件從 Component 派生,包括 System.Windows.Forms.Control(Windows 窗體控件的基類)、System.Web.Services.WebService(使用 ASP.NET 創建的 XML Web 服務的基類)和 System.Timers.Timer(生成遞歸事件的類)。

       僅保留狀態的可遠程控制組件應該由值封送。由值封送的組件的基類是 System.ComponentModel.MarshalByValueComponent。該基類實現 IComponent 並從 Object 派生。.NET Framework 類庫中只有少量組件從 MarshalByValueComponent 派生。所有此類組件都在 System.Data 命名空間中(DataColumn、DataSet、DataTable、DataView 和 DataViewManager)。

容器和站點

如果您正在爲 Windows 窗體或 Web 窗體頁(ASP.NET 頁)開發組件和控件,則不需要實現容器或站點。Windows 窗體和 Web 窗體的設計器就是 Windows 窗體和 ASP.NET 服務器控件的容器。容器向放置在其中的組件和控件提供服務。在設計時,控件放置在設計器中並從設計器獲得服務。爲了保持完整性,以下給出了容器和站點的定義。

Container

容器是一個實現 System.ComponentModel.IContainer 接口的類,或從實現該接口的類派生的類。容器在邏輯上包含一個或多個組件,這些組件叫做容器的子組件。

Site

站點是一個實現 System.ComponentModel.ISite 接口的類,或從實現該接口的類派生的類。站點由容器提供,用來管理其子組件及與子組件進行通信。通常,容器和站點作爲一個單元來實現。

                                                                                                                                                    未完待續
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章