找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 3886|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

VB.net 應(yīng)用程序的框架

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:90014 發(fā)表于 2015-9-13 15:55 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
這是一個(gè)最簡(jiǎn)單的VB.net 應(yīng)用程序,僅一個(gè)簡(jiǎn)單窗口,外加一個(gè)關(guān)閉按鈕。如下圖所示。


整個(gè)項(xiàng)目的構(gòu)成如下:


唯一的動(dòng)作,點(diǎn)擊關(guān)閉按鈕后,關(guān)閉整個(gè)應(yīng)用程序。
Public Class FrmMain
    Private Sub btnClose_Click(sender As Object, e As EventArgs) Handles btnClose.Click
        Me.Close()
    End Sub
End Class
因此,項(xiàng)目設(shè)置以FrmMain為啟動(dòng)窗口,在點(diǎn)擊執(zhí)行后,就能夠完全顯示出來。

但是這個(gè)看似簡(jiǎn)單的應(yīng)用程序,背后VB的編譯系統(tǒng)做了哪些工作呢?請(qǐng)看下面的項(xiàng)目結(jié)構(gòu)層次圖。這是在 Visual Studio 提供的擴(kuò)展,CodeMap功能提供的圖像。


從上圖可以看出,整個(gè)應(yīng)用程序是一個(gè)程序集(Assembly),這個(gè)程序集中包括了3個(gè)命名空間(NameSpaces) ,分別是WFMapCheck.My、WFMapCheck以及資源WFMapCheck.My.Resources。在每個(gè)名字控件中,提供了不同的功能,并且每個(gè)名字控件也包括了多個(gè)類(Class),這些類可能是內(nèi)部嵌套定義的,或者是外部引用的。例如在WFMapCheck.My名字空間中,包括了MyProject、MyApplication、MySettingProperty、MyComputer和MySettings等類,并且在MyProject類中,又包含了MyForms、MyWebServices、ThreadSafeProviders<T>等3個(gè)子類。然后再每個(gè)類的內(nèi)容,定義了屬性(Property)、方法(Method)、事件(Events)、還有其他成員字段(Field),這在早期的Visual Basic 6.0中,這些字段也可以看做為類的屬性。


一個(gè)應(yīng)用程序的核心工作模塊是組成整個(gè)應(yīng)用程序集的每個(gè)命名空間中的每個(gè)類。只是通過不同的名字控件,可以把不同功能的類組合到一起,提供給其它程序復(fù)用,并且通過名字空間的使用,有效的降低了變量命名同名的問題。所有的變量通過增加名字控件前綴,從而避免了同名變量的存在,這樣給變量命名提供很大的自由,可以提高名稱的可讀性。
另外,除了程序自身所編寫的模塊外,需要和操作系統(tǒng)互動(dòng),必須使用系統(tǒng)中的其它組件。這就是程序集的接口所涉及的外部模塊。在上圖中,使用綠色標(biāo)識(shí)出來。我們可以看出,整個(gè)程序使用了5個(gè)外部模塊協(xié)同工作。一般情況下,使用外部模塊的多少,根據(jù)程序的需求在項(xiàng)目中添加引用,就能把外部模塊增加進(jìn)來。
下面看看整個(gè)程序的工作流程:
1. 根據(jù)項(xiàng)目屬性的設(shè)定,整個(gè)程序的入庫點(diǎn)設(shè)置在WFMapCheck.exe_WFMapCheck.My_MyAppliction.Main()處。Main()函數(shù)的功能是完成整個(gè)對(duì)象的實(shí)例化,獲得WFMapCheck.MyProject.Application(),使得建立整個(gè)應(yīng)用程序?qū)ο。至于在MyProject中,眾多對(duì)象的初始化的順序,這就需要查閱微軟的相關(guān)文檔了。
2. 初始化過程中,根據(jù)WFMapCheck名字空間中的FrmMain窗口類的模板,實(shí)例化MyProject中的MyForms中的成員m_FrmMain。
3. 完成后,通過實(shí)例化ThreadSafeProviders啟動(dòng)工作線程。此時(shí)應(yīng)用程序就存在在系統(tǒng)中。并且能夠開始接受各類事件,如鼠標(biāo)點(diǎn)擊按鈕等。
4. 實(shí)際工作的完成,實(shí)在界面對(duì)象全部實(shí)例化以后,通過調(diào)用窗體類對(duì)象的基本方法Show(),顯示在界面上。
5. 類FrmMain的在MyProject中實(shí)例化的對(duì)象,按照FrmMain定義的方法,處理btnClose的點(diǎn)擊事件,完成程序的基本工作。
這里面這個(gè)應(yīng)用程序中,各個(gè)類的構(gòu)造函數(shù)和析構(gòu)函數(shù),各個(gè)類的基類的隱藏方法等都沒有顯現(xiàn)在列表中。只能夠?qū)τ脩糇约核婕暗降淖兞亢完P(guān)系進(jìn)行枚舉。這個(gè)能夠幫助用戶快速的定位模塊間的關(guān)系,以便進(jìn)行整體上應(yīng)用程序集的構(gòu)造。



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩

相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表