找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3305|回复: 0
打印 上一主题 下一主题
收起左侧

VB.net 应用程序的框架

[复制链接]
跳转到指定楼层
楼主
ID:90014 发表于 2015-9-13 15:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这是一个最简单的VB.net 应用程序,仅一个简单窗口,外加一个关闭按钮。如下图所示。


整个项目的构成如下:


唯一的动作,点击关闭按钮后,关闭整个应用程序。
Public Class FrmMain
    Private Sub btnClose_Click(sender As Object, e As EventArgs) Handles btnClose.Click
        Me.Close()
    End Sub
End Class
因此,项目设置以FrmMain为启动窗口,在点击执行后,就能够完全显示出来。

但是这个看似简单的应用程序,背后VB的编译系统做了哪些工作呢?请看下面的项目结构层次图。这是在 Visual Studio 提供的扩展,CodeMap功能提供的图像。


从上图可以看出,整个应用程序是一个程序集(Assembly),这个程序集中包括了3个命名空间(NameSpaces) ,分别是WFMapCheck.My、WFMapCheck以及资源WFMapCheck.My.Resources。在每个名字控件中,提供了不同的功能,并且每个名字控件也包括了多个类(Class),这些类可能是内部嵌套定义的,或者是外部引用的。例如在WFMapCheck.My名字空间中,包括了MyProject、MyApplication、MySettingProperty、MyComputer和MySettings等类,并且在MyProject类中,又包含了MyForms、MyWebServices、ThreadSafeProviders<T>等3个子类。然后再每个类的内容,定义了属性(Property)、方法(Method)、事件(Events)、还有其他成员字段(Field),这在早期的Visual Basic 6.0中,这些字段也可以看做为类的属性。


一个应用程序的核心工作模块是组成整个应用程序集的每个命名空间中的每个类。只是通过不同的名字控件,可以把不同功能的类组合到一起,提供给其它程序复用,并且通过名字空间的使用,有效的降低了变量命名同名的问题。所有的变量通过增加名字控件前缀,从而避免了同名变量的存在,这样给变量命名提供很大的自由,可以提高名称的可读性。
另外,除了程序自身所编写的模块外,需要和操作系统互动,必须使用系统中的其它组件。这就是程序集的接口所涉及的外部模块。在上图中,使用绿色标识出来。我们可以看出,整个程序使用了5个外部模块协同工作。一般情况下,使用外部模块的多少,根据程序的需求在项目中添加引用,就能把外部模块增加进来。
下面看看整个程序的工作流程:
1. 根据项目属性的设定,整个程序的入库点设置在WFMapCheck.exe_WFMapCheck.My_MyAppliction.Main()处。Main()函数的功能是完成整个对象的实例化,获得WFMapCheck.MyProject.Application(),使得建立整个应用程序对象。至于在MyProject中,众多对象的初始化的顺序,这就需要查阅微软的相关文档了。
2. 初始化过程中,根据WFMapCheck名字空间中的FrmMain窗口类的模板,实例化MyProject中的MyForms中的成员m_FrmMain。
3. 完成后,通过实例化ThreadSafeProviders启动工作线程。此时应用程序就存在在系统中。并且能够开始接受各类事件,如鼠标点击按钮等。
4. 实际工作的完成,实在界面对象全部实例化以后,通过调用窗体类对象的基本方法Show(),显示在界面上。
5. 类FrmMain的在MyProject中实例化的对象,按照FrmMain定义的方法,处理btnClose的点击事件,完成程序的基本工作。
这里面这个应用程序中,各个类的构造函数和析构函数,各个类的基类的隐藏方法等都没有显现在列表中。只能够对用户自己所涉及到的变量和关系进行枚举。这个能够帮助用户快速的定位模块间的关系,以便进行整体上应用程序集的构造。



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表