1. 基本原理

组件是组件系统中功能的表现,没有组件就没有功能。特定接口是用于给组件管理程序来操纵、管理该组件,特定功能是组件需要完成的任务。在一个使用组件建立的产品中会随着功能数目的多少而会有多个组件的存在。  组件与组件管理程序的交互通过接口来完成,所以对于一个组件体系,组件接口的定义是很重要的事情。接口的定义描述了组件管理程序与组件的调用规则和交互过程。

2. 组件技术

概念

   : 组件是可独立完成某个或一系列功能的模块.通常组件由宿主程序加载,不能独立运行。

宿   : 宿主是承载组件运行的环境,为组件提供基本服务。通常组件由宿主程序管理和控制。

组件式: 通常是由开发人员编写宿主程序,并预先定义好系统提供基本服务接口和组件接口。然后由其他开发人员根据系统组件接口编写组件功能。通常组件以一个独立功能模块的形式出现。对于宿主程序来说并不知道组件的具体功能,通常宿主启动时检索组件信息,并根据预定的组件接口装载组件。

优势

增强系统扩展性: 在系统发布后可在不必重新编译系统的前提下按需对系统功能进行扩充。

易维护及复用性: 组件通常为独立的功能模块易于管理与维护,并可在多个业务系统中重用。

3. 组件管理

组件管理模块对所有组件进行管理和控制。对组件的管理主要是对本地的所有组件进行登记加载、运行控制、状态维护、停止释放。对组件的控制主要是要对本地的组件实现组件的加载、运行、停止、状态跟踪、组件交互、释放组件;如果平台涉及到网络通讯,那么还要实现对远程机器上的指定组件的运行和停止的控制,实现整个网络内的平台在逻辑上是一个整体,为上层插件应用提供透明的远程组件调用,而不需要关心下层的实现。

接口布局模块主要是了实现了接口表示。由于平台可以动态增加和减少组件,所以对在接口上如何有效布局和显示组件是需要一个方案来实施。接口布局模块更多的与一个产品的关联要大些,其实现对产品的接口需求有一定的依赖。当然如果有其他的应用方面的需求,平台的功能还可以进一步扩展。

4. 组件式架构优势

随着软件规模和复杂性的不断增加,在软件设计中,软件的局部和整体的系统结构显得越来越重要,对此人们提出了软件体系结构的概念。
      根据软件体系结构的发展历程,我们可以把软件体系结构分为四个阶段:无结构、萌芽、初级和高级阶段。自上世纪 90 年代步入高级阶段以来,软件开发的目标是使软件具备较好的自适应性、互操作性、可扩展性和可重用性,软件开发强调采用构件化技术和体系结构技术。
  软件体系结构在软件开发和维护中发挥着重要作用,在软件开发中,软件工程队软件体系结构设计支持的需求越来越迫切。同时越来越多人认可软件体系结构是整个软件设计成功的基础和关键所在,在项目实施和项目维护升级阶段表现尤为明显。在项目的实施阶段,体系结构是建立开发人员的组织、分工、协调开发人员关系和配合的依据。在项目的维护升级阶段,对软件对任何扩充和修改都要在体系结构的指导下进行,以维护整体设计的合理性和正确性,并为维护升级的复杂性和代价分析提供依据。经过长时间的积累,软件开发人员借鉴了硬件组成原理,基于组件式程序设计思想,提出了插件式软件体系结构,这一理论给软件开发工程注入了无限的活力。
  插件式体系结构是一种非常灵活的组件式结构,它把程序的功能分散在插件中来完成。插件是可独立开发的程序模块,它能够动态地插入到系统中,并且可以被自由地删除和替换。因此它能够提高软件开发的并行性和开发效率,降低设计开发难度,缩短开发周期,增强应用程序的可运行性、可测试性和可维护性。归纳起来,基于组件技术的软件架构的优势主要为:
      插件体系结构能够提高软件的复用度。
      插件体系机构因为强大的独立性,可以提高软件开发的并行性,为软件产业的大规模生产提供支持。
      插件体系能够缩短软件的研发周期、节约研发成本,带给程序开发人员更多的灵活性,产品在软件发布以后还可以添加新的插件和完善已有的功能。
      插件体系结构方便软件的升级和维护。传统的应用程序因为采用单一的固定的模块,功能模块不易维护和替换,但是插件却可以动态的变更功能,对软件的升级和维护带来很大的帮助。
      插件体系结构可以满足用户不断变化的需求,缩短项目交付周期,而这传统点体系机构很难满足和实现。
      插件体系结构提供了更多的开发可能性,任何对该软件感兴趣的程序员都可以加入软件开发大军中,以集体的力量丰富完善软件。
      ...
      目前,我们看到组件技术已经被成功应用到国内外的多种软件中,如浏览器 chrome,图像处理软件 photoshop,java 开发平台 eclipse,报表开发软件 finereport,社区软件 discuz 等,虽然这些软件都采用了组件技术,但是不同的产品的实现方式也是多种多样和各不相同。然而毫无疑问,随着用户需求的不断增加,边缘创新的不断冲击,软件工程的不断发展,基于组件技术的软件开发方法将得以普及。

.Net 组件技术概述的更多相关文章

  1. 【VS开发】COM组件技术概述

    这篇文章对COM做出来比较完整的解释,非常好. COM是微软公司为了计算机工业的软件生产更加符合人类的行为方式开发的一种新的软件开发技术.在COM构架下,人们可以开发出各种各样功能专一的组件,然后将它 ...

  2. (转)Eclipse平台技术概述

    转载:周金根 http://zhoujg.blog.51cto.com/1281471/516833    Eclipse:Eclipse平台技术概述 2010-10-19 13:35:00 标签:E ...

  3. IM-即时通讯技术概述

    IM-即时通讯技术概述 简述 即时通讯技术(IM)支持用户在线实时交谈.如果要发送一条信息,用户需要打开一个小窗口,以便让用户及其朋友在其中输入信息并让交谈双方都看到交谈的内容.大多数常用的即时通讯发 ...

  4. vue项目实现按需加载的3种方式:vue异步组件技术、es提案的import()、webpack提供的require.ensure()

    1. vue异步组件技术 vue-router配置路由,使用vue的异步组件技术,可以实现按需加载. 但是,这种情况下一个组件生成一个js文件. 举例如下: { path: '/promisedemo ...

  5. iPhone之IOS5内存管理(ARC技术概述)

    ARC(Automatic Reference Counting )技术概述 此文章由Tom翻译,首发于csdn的blog,任何人都可以转发,但是请保留原始链接和翻译者得名字.多谢! Automati ...

  6. 微信团队分享:iOS版微信的高性能通用key-value组件技术实践

    本文来自微信开发团队guoling的技术分享. 1.前言 本文要分享的是iOS版微信内部正在推广和使用的一个高性能通用key-value 组件的技术实践过程,该组件在微信内部被命名为MMKV(以下简称 ...

  7. HiCar技术概述

    HiCar技术概述 HUAWEI HiCar(以下简称 HiCar)是华为提供的人-车-家全场景智慧互联(HUAWEI HiCar Smart Connection)解决方案,具备如下特点: 安全交互 ...

  8. HDFS(Hadoop Distributed File System)的组件架构概述

    1.hadoop1.x和hadoop2.x区别 2.组件介绍 HDFS架构概述1)NameNode(nn): 存储文件的元数据,如文件名,文件目录结构,文件属性(生成时间,副本数,文件权限),以及每个 ...

  9. [转载]WEB缓存技术概述

    [原文地址]http://www.hbjjrb.com/Jishu/ASP/201110/319372.html 引言 WWW是互联网上最受欢迎的应用之一,其快速增长造成网络拥塞和服务器超载,导致客户 ...

随机推荐

  1. 字符串匹配算法——KMP算法学习

    KMP算法是用来解决字符串的匹配问题的,即在字符串S中寻找字符串P.形式定义:假设存在长度为n的字符数组S[0...n-1],长度为m的字符数组P[0...m-1],是否存在i,使得SiSi+1... ...

  2. Android实例-拍摄和分享照片、分享文本(XE8+小米2)

    结果: 1.分享文本不好使,原因不明.有大神了解的,请M我,在此十分感谢. 2.如果想支持图片编辑,将Action事件的Editable改为True. 相关资料: 官网地址:http://docwik ...

  3. 转载 VPN介绍

    转载原地址:  http://aajs800.blog.51cto.com/519255/239724  原作者 aajs800 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者 ...

  4. Keil MDK 无法设置断点【worldsing】

    要解决一个问题就怕不知道怎么搜索,或是别人没有遇到过: 同样碰到Keil MDK Debug调试无法设置断点问题,首先来问百度,GOOGLE,一下是我搜索到的结果:   1.keil 不能设置断点,每 ...

  5. .NET解析HTML库集合

    CsQuery AngleSharp Jumony HtmlAgilityPack Fizzler ScrapySharp NSoup

  6. Young不等式的一个新证明

    设 $p>0,q>0,a>0,b>0$ 且 $1/p+1/q=1$ 有 \[ab\leq \frac{a^{p}}{p}+\frac{b^{q}}{q}\] 证明:设 \[f( ...

  7. 在创建窗口句柄之前,不能在控件上调用 Invoke 或 BeginInvoke。

    本文转载:http://blog.csdn.net/playing9c/article/details/7471918 http://blog.csdn.net/beelinkerlidejun/ar ...

  8. Python 对新浪微博的博文元素 (Word, Screen Name)的频率分析

    CODE: #!/usr/bin/python # -*- coding: utf-8 -*- ''' Created on 2014-7-9 @author: guaguastd @name: we ...

  9. 让DataGridView显示行号

          http://www.cnblogs.com/JuneZhang/archive/2011/11/21/2257630.html 为了表示行号,我们可以在DataGridView的RowP ...

  10. 50个Android开发技巧(02 延迟载入和避免反复渲染视图)

    当你在Application中创建复杂的布局时.页面的渲染过程也变得更加缓慢. 此时,我们须要利用 <include />标签(避免反复渲染)和 ViewStub类(延迟载入)来优化我们的 ...