`
wodamazi
  • 浏览: 1419622 次
文章分类
社区版块
存档分类
最新评论

基于组件的.NET技术(5)

阅读更多

实战:

创建一个VB.NET Windows应用程序:VBTestDynamicComponent。将前面介绍的两个类ComponentListLoadComponent加入到工程中。

我们在程序启动时从配置文件中读入相关的程序集信息和类名信息,为此在主窗体的Form_Load过程中添加以下代码:

01 Private objLoadComponent As LoadComponent

02 Private VBObj As Object

03 Private ComponentReader As MyComponentList

04

05 Private Sub VBTestDynamicForm_Load(……) Handles MyBase.Load

06 objLoadComponent = New LoadComponent()

07 ComponentReader = New MyComponentList("Componentlist.xml")

08 Dim filename As String

09 Dim classname As String

10 ComponentReader.beginRead()

11 filename = ComponentReader.getFileName(0)

12 classname = ComponentReader.getClassName(0)

13 Dim ret As Boolean

14 ret = objLoadComponent.LoadComponentLibrary(filename)

15 VBObj = objLoadComponent.LoadClass(classname)

16 VBObj.show()

17 End Sub

我们看见,第07--10句从配置文件中取出DLL文件名和类名,第1112句获取第一个DLL文件名和类名,然后在第14句装入组件库,第15句装入对象,因为返回的对象其实是一个窗体,所以,在第16句可以直接调用Show()方法显示此窗体。

从代码中可以看见,在.NET中动态创建对象是多么地方便和简单!请注意:在工程中我们甚至不需要给工程添加对特定组件的引用!本例中动态创建的对象是窗体,而Form对象是缺省就可使用的。在真实工程中,可以把所有的接口放入一个特定的DLL中,我称之为“Facade Assembly”,其它工程只需引用这个DLL,则实现了这些接口的所有组件都可自由地通过名字来创建!

小结

我们在短短的一篇短文中介绍了.NET的混合语言开发特性和动态装配组件技术,展示了在.NET下开发基于组件的应用软件之简便性与灵活性,这就为我们开发拥抱变化的软件系统提供了新的可能性,可以总结如下:

(1)我们可以通过开发前的OOAD(面向对象分析与设计)将系统功能分块,然后分配给不同的开发人员开发成多个DLL,最后再方便地将这些组件组合起来构造一个新的系统,一旦把某个功能做成了组件,它就可以在以后的项目中不断复用,BUG会越来越少,功能会越来越强,运行会越来越稳定,这样的组件,将是无比宝贵的技术资源。

(2)由于.NET强大的组件对象模型,原来适用于源代码级别的一些面向对象特性:比如继承和多态,现在都可以推广应用到组件级别。特别地,在组件间现在我们也可以应用设计模式了。

同志们,赶紧去翻翻GoF的经典书籍,把上面的24种模式应用在组件间,你一定会深深地感到软件技术进步所给程序员带来的广阔发挥余地。

(3)通过在外部保存配置信息,使我们可以在不重新编译程序的情况下,动态地让整个软件显现出一种完全不同的风格与功能。想想如果在我们的示例中创建的两个窗体是另两个复杂的程序的主窗体,这不就意味着我们的程序可以非常方便地集成它们吗?实现起来太简单了,不就是在配置文件中增加一两行代码吗?

(4)配置文件采用XML标准,可以很容易地为元素增加新的属性,从而扩充程序的功能。另外,通过提供DTDschema,可以在动态装入配置文件之前就验证文件是否是有效的,还有XSLT可以对配置文件进行动态地置换……,XML的灵活性与可扩展性就不用我多说了吧?这方面的灵活应用就看你的啦!

(4)有了以上的技术支撑,我们开发软件的过程中重点就放在OOAD之上了,这正好体现出在面向对象时代系统分析与设计重于编码的特点。

比如某软件公司需要开发某个行业的产品,它可以对这个行业业务功能进行详细的分析,抽象出不同级别的业务,其中最基本的业务被做成可以动态装载的组件。当需要为此行业的一家新客户定制软件时,可以通过装配现有的基本业务组件,再开发少量的专用组件来完成,从而极大地提高开发效率。这就是CBDComponent-Based Develop:基于组件开发)。

目前很热门的MDAModel Driven Architecture,其实就是基于组件的,没有大量的稳定的组件做支撑,MDA是“Drive”不起来的。

笔者发现,凡是成功的软件公司,尤其是那些一流的跨国公司,比如CASAP、爱立信等,其内部都有着一个大规模的组件库,库中的组件都经过了严格的实践考验,基于已有的成熟的组件开发新系统,其代码复用率有时可达80%90%,要达到这种代码复用程度,需要软件企业深入某一个行业内进行几年十几年甚至几十年的深厚积累,这也是年轻的国内软件企业与国外一流企业的差距所在。

5)……

好了,不用再多说了,相信聪明的读者可以体会到组件开发的巨大威力。

再回到.NET,微软在给VS.NET做广告时说:它大大提高了开发效率。这并不是吹牛,我个人感觉,使用.NET开发项目,较之传统的Win32平台上的技术,开发效率可以提高1/3!真正深入地学习与应用.NET,笔者不禁对开发与设计.NET技术的科学家和工程师们敬佩不已,向他们的创造性劳动致意。同时,笔者也更期望中国的软件技术能奋起直追,我们的确落后得太多!

分享到:
评论

相关推荐

    基于ADO.NET技术的SQL SERVER动态连接组件的设计和实现.pdf

    基于ADO.NET技术的SQL SERVER动态连接组件的设计和实现.pdf

    基于ASP.NET技术的数据库访问通用类设计

    ASP.NET是新一代的B/S系统编程工具,集众多优点于一身,在时数据库的操作上更是功能强大。但是传统的数据访问编程方式操作繁琐,而且重复累赘。...介绍了一种基于ASP.NET技术的数据库访问通用类设计方法

    基于.NET技术的管理软件快速开发平台

    极致业务基础平台(Jeez Business Framework,简称为JBF)基于Microsoft .NET开发技术和模型驱动架构,是面向业务应用的管理软件开发平台。极致业务基础平台不仅能够快速地开发应用软件,而且能够根据的用户需求快速...

    C#课程设计-C#大作业基于ASP.NET技术的动漫管理系统源码(老司机驾驶舱).zip

    C#课程设计-C#大作业基于ASP.NET技术的动漫管理系统源码(老司机驾驶舱)。 编写本应用的主要目的是通过.NET技术实践了三层开发的基本思想: 通过ORM框架实现数据访问层,并将数据库操作服务封装为DAO层; 通过razor...

    基于asp.net的会员消费管理系统

    基于ASP.NET2.0核心组件技术,使用VISUAL C#2005/SQL SERVER 2005(SQLEXPRESS)编程语言和数据库系统,欢迎批评指正

    基于asp.NET的小区物业管理系统文档.doc

    利用网络和数据库技术,结合目前硬件价格普遍下跌与宽带网大力建设的有利优势,应用Active Server Page技术和采用Access数据库系统组件来构成考试的应用服务系统,开发了基于B/S模式多用户小区物业系统程序。...

    .net组件设计

    主要介绍了设计和开发基于组件的.NET应用程序所需要的技术及相关主题,说明了.NET组件程序设计的起源和它对以往技术缺陷所作的改进。本书还利用大量的代码示例、使用技巧、开发警示、设计准则和富有创意的实用工具,...

    ARCobject二次开发 基于c#.net 技术

    arcobject是美国ESRI公司提供的一个GIS技术框架,他是基于微软的COM技术开发的一套COM组件对象集。

    基于ASP.NET的ADO与ADO.NET分析与研究

    探讨基于ASP.NET框架ADO和ADO.NET的两种数据库访问技术,并给出一个在ASP.NET下使用ADO.NET组件对数据库访问的实例。然后,对这两种技术在缓存中的数据集存储形式、脱机与连机关系、标准化程度、传输性能方面...

    基于.NET的通用查询组件的开发

    在分析主要开发技术的基础上,介绍了如何在.NET平台下用C#语言开发一个实用的通用查询组件,详细叙述了该查询组件的设计方法、功能实现的部分程序代码.在实际数据库的应用系统中,各子系统在调用该组件时只要设置相应...

    基于.NET组件技术的实验室信息管理系统的分析与设计.pdf

    基于.NET组件技术的实验室信息管理系统的分析与设计

    基于组件的软件开发_VB.NET&C#

    介绍.NET组件编程技术,包括自定义控件、混合语言开发与动态组件插拔

    基于ASP.NET的办公自动化系统的设计与实现

    本文结合一个实际的应用课题,提出基于ASP.NET技术的办公自动化系统的设计与实现。 论文首先介绍了面向对象技术的软件工程开发方法和ASP.NET组件对象模型。在此基础上,结合对湖南省卫生厅综合信息办公系统进行了需求...

    基于ASP.NET技术下多用户博客系统全程实战开发(NNblog)

    为了提高网站自由排名,白帽子SEO DIV + CSS布局手把手全程示范 使用Jquery完成ajax无刷新请求 数据访问采用LinQ技术,支持SQL Server和Access,提供其他...第三方组件FckEditor、CodeSmith详细配置及实战应用

    基于 ASP.NET MVC4.0 + WebAPI + EasyUI + Knockout 的架构设计开发

    1、基于 ASP.NET MVC4.0 + WebAPI + EasyUI + Knockout 的架构设计开发 2、采用MVC的框架模式,具有耦合性低、重用性高、生命周期成本低、可维护性高、有利软件工程化管理等优点 3、采用WebAPI,客户端完全摆脱了...

    ArcObjects GIS应用开发——基于C#.NET

    《基于ArcObjects与C#.NET的GIS应用开发》在广泛的社会需求调查的基础上,选择国际流行的、最具代表性的、最新版本的ArcObjects作为GIS开发组件,以c#.NET作为开发环境,全面系统地阐述了应用型GIS工程项目开发的...

    计算机专业毕设ASP.NET技术在网站开发设计中的研究与开发(论文+源代码+开题报告).rar

    首先,它介绍了ASP.NET技术的历史背景和发展现状,然后详细阐述了该技术的体系结构和核心组件。接着,论文通过一个具体的实例——即本项目所开发的网站——来展示ASP.NET技术在实际网站开发中的具体应用。最后,论文...

    ASP.NET 完全入门

    微软的.NET技术目前正是风风火火,作为全球软件业最大的公司,微软在.NET技术上投入了大量的人力物力,把公司未来战略重心放在了.NET上,而从目前看来,.NET技术无疑代表了未来Internet技术的方向。 ASP.NET技术就是...

    基于ASP.NET文件上传设计与实现

    在ASP.NET的前一个版本ASP里实现这个功能,必须使用第三方的组件或者自己开发组件。在ASP.NET中可以利用framework框架中内置的文件上传功能。着重阐述在ASP.NET中实现上传的开发过程.同时指出在开发过程中要注意...

    mCore .NET 短信组件示例 For VB.NET 2008

    .NET 短信组件是一个基于.NET技术的短信收发支持库。可以快速的创建.NET的短信发送和接收程序。除了发送和接收一般短信外,mCore? .NET 短信组件还可以支持 彩信、WAP推送、电子名片、电子日历超长商业方面的短信。...

Global site tag (gtag.js) - Google Analytics