电脑桌面
添加盘古文库-分享文档发现价值到电脑桌面
安装后可以在桌面快捷访问

构件化开发范文

来源:开心麻花作者:开心麻花2025-09-191

构件化开发范文(精选7篇)

构件化开发 第1篇

民办高校在国内发展近三十年, 作为公办高校的有益补充为社会各个行业输送了大量人才。近几年来, 随着高校办学规模的扩大及人事管理工作的日益复杂化, 开发一个全新的计算机网络化的人事管理信息系统势在必行。本文研究的民办高校人事管理信息系统具有国内民办高校特色, 它集全院教职工的劳动工资与福利待遇、考核评优与职称评定、人事调动与对外招聘、人事档案等管理工作于一体, 是一项时间性强、工作量大、信息庞杂、质量要求高的全局性工作。能让工作人员轻松、快速、准确、规范地处理日常事务, 真正实现高校管理的信息化、科学化, 为管理层科学决策和民办高校教学管理现代化提供服务。

1 系统需求与设计

1.1 系统目标

这里设计的青岛飞洋职业技术学院人事信息管理系统, 以计算机网络等相关技术为平台, 实现对教职员工的信息管理的网络化、数字化综合性软件系统。该管理系统摒弃现有的手工管理的诸多弊端, 充分发挥计算机网络统一存储数据、共享数据和分布式快速查询数据的特点, 凭借计算机强大的数据处理功能, 进行相关数据的综合比较, 从海量的数据中提取更多有利于管理工作需要的信息, 进一步实现内部管理工作的信息化、资源共享化。

1.2 领域分析

现将所设计的管理信息系统采用软件产品线的方法对其领域工程进行探讨研究, 提出基于构件的人事管理信息系统开发思想, 对人事管理系统领域工程的过程进行设计, 其中引进了面向对象的领域分析方法, 并使用该分析方法对人事管理系统进行分析与建模。系统领域分析过程包括:面向对象领域分析、领域设计、领域实现三个部分, 分别是人事管系统的领域模型、人事管理系统的特定领域体系结构 (DSSA) 和人事管理系统的领域构件。

1.3 系统功能

在对青岛飞洋学院进行了认真调研、需求分析的基础上, 此人事信息管理系统的主要功能包括:基本操作层 (机构设置职工管理职务管理系统维护) , 业务管理层 (工资管理合同管理保险管理) , 领导管理层 (信息查询统计分析决策管理) 。

基础操作层主要是系统管理员构建的基本模块及各类数据录入与统计分析;业务管理层主要是进行人事工作的人员能方便、快速、准确、科学地处理日常事务, 方便地实现不同业务模块之间的信息传递和数据共享;领导管理层主要是让领导全面了解学院各二级部门及其职工的详细情况, 及时掌握各种关注信息, 为领导提供决策参考。

2 数据库设计

依据以上设计和分析方法, 根据要实现的应用系统信息进行了数据内部以及外在关系的全面分析, 从数据库的性能、安全、方便管理和易于开发等方面出发, 用数据库的3NF范式, 对所有数据字典进行正规化后, 获取了二级部门表、教研室表、职工信息表、人员调配表、薪酬管理表、考核奖惩表、师资培养信息表、人员角色表、人员用户表、权限管理表、树列、角色列表、用户列表等系统表结构。

3 构件的选择

基于构件的软件开发的优点在于它在分析、设计、实现等各个阶段中所要做的工作不再是从零开始, 它引导软件开发从应用系统开发转变为应用系统集成, 完全可以看成是一个以组装为主的软件开发过程, 为开发者节省时间, 提高效率。

飞洋人事信息管理系统中涉及的统计查询构件、权限管理构件、报表构件等, 在面向对象构件类库中都可以复用, 最后的系统集成不是原封不动地使用领域构件和系统构件, 而是根据需要和具体情况对构架和构件进行细化, 做进一步开发。比如人事薪资管理、职务职称管理与普通的企业人事管理类似, 只要根据高校的特性加以修改就可以利用。因此, 减少重复开发, 提高开发应用软件的效率, 是采用构件技术开发MIS的一大优势。

4 系统构架设计

4.1 网络体系结构

根据以上的综合分析, 本系统采用B/S (Browser/Server) 软件体系结构。B/S软件构架是放在web服务器中进行处理, 克服了C/S软件构架无法适应Web客户端的缺点, 主要原因是C/S软件构架中的事务处理逻辑功能从客户端分离出来了, 因此具有结构灵活、运行高效、维护扩展方便等特点。

4.2 系统总体结构

基于构件化的人事管理系统将采用多层的软件构架, 如图所示, 它将基于构件管理系统分为两个大的层次:通用的软硬件层和人事管理构件层, 其中人事管理构件层又可分为数据层、业务逻辑层和表示层。各层的主要涵盖的构件主要包括:表示层 (登陆验证构件) ;业务调用层 (业务调用构件) ;业务逻辑层 (权限管理构件、薪酬管理构件、职称管理构件、报表构件等) ;数据访问链接层 (数据库访问链接构件) 。

结束语

以青岛飞洋学院为例的高校人事管理系统, 根据国内民办高校的办学特色与其专有的人才聘用制度和管理方式, 以基于软件构件化的设计思想为原则, 使用Web服务的B/S软件构架, 实现了系统中数据共享和业务流程的控制管理, 并通过数据分析应用为人事管理工作提供了决策支持。从目前看基本满足了业务需求的功能, 但涉及到需要与其它同等院校的数据共享的功能, 还要依赖于同类学校的的共享数据库以及相关的硬件建设和国家的政策支持。不过就人事管理系统的框架及软件构件化的实现方式来看, 制定可靠的系统架构, 利用功能成熟的构件, 既利于系统的稳健成熟又有利于开发者效率的提高, 随着进一步的完善, 最终将能够实现民办高校高效信息化的设计目标。

参考文献

[1]黄柳青, 王满红.构件中国———面向构件的方法与实践[M].北京:清华出版社, 2006:38-51.

[2]杨芙清, 梅宏等.构件化软件设计与实现[M].北京:清华出版社, 2008, 11:210-216.

构件化开发 第2篇

1 嵌入式实时软件构件化开发技术概述

嵌入式系统指的是在具有具体应用功能的专用系统通常情况下都会有较强的成本敏感性。它的硬件及软件都需要经过高效的设计, 通过去陈冗余等, 努力提高相同面积硅片的性能。传统嵌入式软件基于上述因素的考虑, 一般都会尽可能的对代码量进行压缩, 从而使软件资源的需求降低。这种做法容易导致大多数的嵌入式软件出现结构紧密度增加, 可读性和可移植性变差的情况。但是, 在实际的发展过程中, 嵌入式系统随着硬件技术的不断发展与进步, 其所具有的资源已经非常充足, 在这种背景下, 其已经具备对传统嵌入式软件进行改造的条件。

嵌入式实时软件的构件化开发技术指的是促进软件复用性提高的一种软件开发技术, 其是以分布式、护展性、封装性以及复用性四者的相结合为主要构架思想, 它的主要技术有EJB、COM以及CORBA等。嵌入式实时软件的构件化开发技术是基于模块化的系统、结构化的设计以及针对对象技术发展而来的, 其主要是利用已经成功开发并通过验证的软件构件, 对软件开发的资源投入进行减少, 促进软件质量的提高。

构件化的嵌入式实时软件的构成部分主要是一组软件构件, 由一个或是多个构件组成一个完整的全新应用, 而这个新应用也可以利用自身的构件, 对软件的复用性进行提高。由此可以看出, 传统嵌入式软件对专用性要求较高, 软件和应用需要一一对应, 而构件化的嵌入式实时软件则具有较高的组合性, 大大的提高了其自身的复用性和扩展性。

2 嵌入式实时软件进行构件化的开发与改造

嵌入式系统所具有的种类较多, 因此, 与其是对应关系的嵌入式实时软件也同样具有种类较多和结构复杂的特点。根据嵌入式实时软件的不同功能和所在层次可以分为硬件驱动、嵌入式操作系统以及应用程序三种。由此得出, 对嵌入式实时软件进行构件化开发与改造可以采用如下三种方式:基于层次的构件、基于功能的构件化以及基于应用对象的构件化。

2.1 驱动构件的开发与改造

基于构件化对驱动程度进行开发与改造之后, 驱动构件应该进行上层访问接口的提供, 并以对Linux系统的设备驱动程序进行管理的方式为参考对设备驱动程序进行分类, 主要有字符和块两类设备, 驱动构件所提供的上层访问接口也同样分为这两类。在操作系统中, 驱动管理构件可以利用接口进行加载驱动构件、管理硬件资源等操作。驱动构件的动态加载及卸载操作使嵌入式系统的驱动程序实现了单独升级操作, 驱动程序的构件化改造对其自身的内部细节进行隐藏, 确保修改驱动程序不会对驱动构件造成影响。此外, 以针对编程为出发点, 驱动程序的构件化改造实际上也可以看作是对硬件设备的抽象化, 用户所使用的是字符和块的两种统一设备, 其各设备中的驱动构件已经融进中断处理程序, 因此缩减了位于底层部位中断管理用户的操作步骤。

2.2 核心构建的开发与改造

核心构件主要指的是构件化改造嵌入式的实时操作系统。这个操作系统的主要功能是对任务进行管理, 其功能主要表现为:第一, 按照构件所具有的自描述信息进行构件化运行空间的生成, 如加载驱动构件所需要的缓冲区;第二, 构件之间所具有的通信机制, 如构件在运行状态下的监控和错误报告;第二, 构建所具有的干预机制, 如对错误状态进行强行终止的构件。

构件化操作系统的开发与改造主要是针对操作系统的核心部分, 将该部分分别进行构件化改造, 使其在运行状态下处于内核态, 而用户程序则处于用户态, 同时在操作系统中运用构件化思想, 可以对其接口进行统一化、规范化的管理, 这样就可以避免不安全用户的操作对操作系统运行产生不良影响, 进而促进了嵌入式实时操作系统的安全性和稳定性的提高。对于操作系统中诸如抽象化硬件资源等的非核心部分, 可以在构件化改造的过程中将其设置为用户态, 或是将其直接置于底层驱动构件。

2.3 应用构件的开发与改造

随着科技的发展, 嵌入式实时系统所具有的功能复杂性也得到了提高, 其中的嵌入式实时软件的功能也逐渐增多, 但是在实际的运行过程中, 其功能的使用频率是不尽相同的。通过构件化思想的利用, 可以对构件进行动态的调动:根据不同的功能对应用软件进行构件化改造, 使其中的应用构件通过核心构件管理, 运用动态的方式将其调入到内存执行中, 使用频率较高的应用构建通常情况下都存在于内存当中, 其可以随时进行运行或是转入内核态, 对系统的运行效率有着提高的作用;而使用频率较低的应用构件则只要在需要运行时才进行调入操作, 这样可以节省系统的资源。

3 构件化开发技术对嵌入式实时软件性能所产生的影响

构件化开发技术的应用使整个嵌入式系统通过集线器连接在一起, 嵌入式设备为测试实验提供了相关的硬件资源, 在设备上进行运行的软件系统主要有硬件驱动、嵌入式操作系统以及应用程序三种。另外, 在系统中还连入了一台PC机, 又因为集线器可以无条件广播所有收到的通讯, 因此与系统相连接的所有设备的通讯都可以对彼此进行显示, 而PC机中具有监控软件, 能够对整个系统的通讯进行监控。

构件化改造协议栈会对协议栈的性能产生影响, 这是由于协议构件化后, 其构件对内存进行调动以及拷贝数据的次数都会有所增加, 进而对协议栈的性能造成影响。但是, 构件化改造对协议工作流程并没有产生影响。利用构件化改造可以对嵌入式实时软件的可配置性、可移植性和可靠性进行提高, 对嵌入式实时软件的各个应用尺寸进行精简, 大大的节约了其储存的空间。

4 结语

综上所述, 按照嵌入式实时系统的特点, 对嵌入式实时软件进行构件化的改造, 通过底层驱动以及操作系统的构件化改造, 可以有效的促进其可移植性和安全性的提高;通过构件化改造应用层软件, 可以有效的促进其可配置性的提高, 与此同时还可以对软件系统的应用体积进行合理的缩减。通过构件化开发技术的使用, 对嵌入式实时软件的性能进行完善, 提高软件的质量。

参考文献

[1]杨霞.高可信嵌入式操作系统体系架构研究[D].成都:电子科技大学, 2010.

[2]杨志斌, 皮磊, 胡凯, 等.复杂嵌入式实时系统体系结构设计与分析语言:AADL[J].软件学报, 2010 (5) .

C3I软件构件化研究 第3篇

关键词:C3I软件,软件复用,软件构件化

1 概述

随着软件开发技术的不断发展, 软件的规模越来越大, 而软件开发周期越来越短, 在传统的开发过程中, 由于未足够重视如何利用已有的开发成果, 导致大量低水平的重复开发, 开发效果也不尽如人意。复用就是在不改动原有代码的情况下, 重复使用原有代码, 从而实现在软件开发中避免重复劳动的解决方案。作为现代作战体系“神经系统”的C3I软件, 是一个特殊的大型信息系统, 其结构复杂, 规模大, 涉及面广, 可靠性要求高, 如何实现C3I软件的高层次复用, 一直都是相关开发人员不断探索的问题。当前软件构件技术被视为实现成功复用的关键因素之一。本文详细介绍了软件复用、软件构件化的基本概念, 并阐述了C3I软件的构件化开发具体实施思路与研发策略。

2 软件复用与构件化的概念

软件复用就是将已有的软件成分用于构造新的软件系统。可以被复用的软件成分一般称作可复用构件, 无论对可复用构件原封不动地使用还是作适当的修改后再使用, 只要是用来构造新软件, 则都可称作复用。软件复用不仅仅是对程序的复用, 它还包括对软件生产过程中任何活动所产生的制成品的复用。软件复用按抽象程度的高低, 可以划分为如下的复用级别:

2.1 代码的复用, 包括目标代码和源代码的复用。

2.2 设计的复用, 设计结果比源程序的抽象级别更高, 因此它的复用受实现环境的影响较少, 从而使可复用构件被复用的机会更多, 并且所需的修改更少。

2.3 分析的复用, 这是比设计结果更高级别的复用, 可复用的分析构件是针对问题域的某些事物或某些问题的抽象程度更高的解法, 受设计技术及实现条件的影响很少, 所以可复用的机会更大。

2.4 测试信息的复用, 主要包括测试用例的复用和测试过程信息的复用。这种复用的级别大体处于与程序代码相当的级别。

一般来说, 复用的级别越高, 可得到的回报也越大, 基于构件的开发方法, 主要考虑的是软件设计与分析的复用, 其核心是构建可复用的软件构件。软件构件是指语义完整、语法正确、具有可重用价值的单位软件, 是软件重用过程中可以明确辨识的系统;结构上它是语义描述、通信接口和实现代码的复合体, 通过唯一接口对外提供服务。可复用的构件应符合如下要求:

独立性:解决一个相对独立的问题, 或大问题中某个相对独立的部分;完整性:提供较完整的解决, 不要遗留很多缺口, 让复用者做大量补充;可标识性:构件所解决的问题应该是可标识的, 可命名, 有简要介绍, 便于理解和使用;通用性:构件解决的问题, 应在同类应用中具有一般性;适应性:应用场合有某些变化时, 构件仍是可用的, 使构件的某些数据参数化和数据类型参数化;可靠性:要求构件对预计将要使用它的系统时可靠的;标准化:可复用构件的标准化对于软件复用是至关重要的。

3 具体实施

在C3I软件开发中, 引入构件化的开发方法, 主要有两种方式:演化方式、革命方式。演化方式是指基于已有软件构架, 将软件模块逐步地、越来越多地转化为可复用的构件, 其优点是通过对软件功能的分解, 对原有软件构架的维持, 从而使得该方法具有实施风险小等优点, 但是, 相应完成整个软件构件化的总周期较长。革命方式则是指停止原有软件的开发, 重新分析相关软件功能, 设计软件构架, 设计与开发符合要求的复用构件, 其优点是所开发的构件不受现有构架与平台的约束, 其开发周期与投资成本相对较低, 但是, 相应实施风险较大。因此, 无论是采用哪种开发方式, 由传统开发方法过渡到基于构件化的开发方法, 都是一个长期的过程。在这个过程中, 一方面要实现构件间的互联互通的软件总线, 另一方面要分析与设计C3I软件构件模块以及进行基于构件的软件开发。

3.1 软件总线的设计与开发

构件是完整、独立的模块, 但不是孤立存在的, 因此, 在实施C3I软件构件化以前, 首先应实现构件间互联互通的软件总线。软件总线是运用硬件总线的思想构建的一种“支持多主服务、统一接口标准、统一权限控制、具有数据存取控制、易于扩充维护”的软件平台。现有的企业软件总线及标准主要有CORBA, EJB, COM/DCOM三种, 但是, 由于这些标准的复杂性, 适应的操作系统平台等限制, 以及C3I系统的实时性要求等方面的原因, 个人认为均不适宜于作为C3I系统的软件总线。因此, 应根据C3I系统实际特点, 设计与开发相应的软件总线, 且该软件总线应满足以下要求:

实时性强, 在C3I系统中, 无论是情报信息处理或作战指挥控制处理均要求极高的响应速度, 往往在秒级, 甚至毫秒级。因此, 要求软件总线应满足实时性的性能指标。可靠性高, 软件总线是整个软件系统运行的基石, 一旦运行异常, 将导致整个系统异常。提供“即插即用”的服务, 新构件可通过软件总线的通信模块, 集成到C3I系统环境中与其他构件或应用程序进行信息交互。

实现事件驱动的消息机制, 事件驱动的消息机制能有效地解决构件间通信的紧耦合关系。

3.2 基于构件的软件开发

基于构件的C3I软件的开发过程包括两个并发的子过程: (1) C3I软件的领域工程, 完成一组可复用构件的标示、构造、分类和传播; (2) 基于构件的C3I软件开发, 完成使用可复用构件构造新的软件系统的工作。

3.2.1 C3I软件领域工程

C3I软件是应用于军事指挥控制领域的大型软件, 其领域工程是指在该领域内, 以可重用方面的形式, 收集、组织并保存过去的经验的活动, 以及在构造新系统时, 提供一种充分的方法来重用这些资源。它覆盖了建立可复用C3I软件构件的所有活动。包含领域分析、领域设计、领域实现三个重要的活动。 (1) 领域分析是对军事指挥控制领域中共同的特征、知识、需求的标示、分析和规约。领域分析是领域内软件重用的基础, 其目标即发现和挖掘在该领域内可以被复用的构件, 确定领域需求并获得领域模型。 (2) 领域设计是以领域需求模型为基础, 考虑成员系统可能具有的质量属性要求和外部环境约束, 建立符合领域需求、适应领域变化性的软件体系结构。 (3) 领域实现则以领域模型和软件体系结构为基础, 进行可复用构件的识别、生产和管理。整个C3I领域工程的实施可能涉及到C3I系统用户、领域专家、领域分析员、领域分析产品的使用者等人员。而其产生的活动产品包括:领域模型、领域构架、复用构件等。

3.2.2 基于构件的C3I软件开发

领域分析的结果为构件的选取和开发提供了指导性的原则, 但构件开发与实现还需要遵循一定的设计概念和原则。在编码阶段, 需要充分考虑可复用构件与一般应用程序的区别, 赋予构件较强的通用性、灵活性、一般性和抽象性, 并且对构件进行良好的封装, 保持彼此之间松散的耦合。在测试阶段, 应该对构件进行比普通应用进行更为严格和充分的测试, 以保证构件的质量和可靠性。

当形成一定数量的C3I软件构件后, 基于构件的C3I软件开发, 将不再是从零开始, 而将是一个组装为主的软件开发过程。相对于传统的开发方法, 基于构件的软件开发将有效地缩短C3I软件的开发周期, 同时大大降低开发成本。

结束语

软件复用的最终目的是为了适应未来用户的需求变化, 最低限度地减少软件修改。因此, 以函数/子模块或类为单位的复用, 其粒度过小, 而以进程为单位的复用, 其粒度又过于庞大, 均不利于适应未来需求的变化。以构件为单位的复用粒度比较适中, 能有效地提高C3I软件的开发效率。

参考文献

[1]Martin Fowler.樊东平等译.企业应用构架模式[M].北京:机械工业出版社, 2004.

[2]王军, 宋永鹏.基于软件复用的开发模型的研究[J].电脑知识与技术, 2009.

构件化开发 第4篇

当前针对构件化软件[1,2]的研究与应用越来越广泛, 主要原因是软件的自适应性和动态演化性对那些如全球性的金融交易系统、工业控制系统、电信服务系统等连续运行、安全攸关的应用有着重要的意义。这些必须持续运行并需要不断演化以适应多变环境和用户需求的系统, 如果不在运行时进行更新, 而是在暂停系统后实现更新和演化, 将造成不可忽视的延迟和危险。动态演化能力不仅对系统本身及企业来说变得日益重要, 也受到了学术界的关注, 成为软件工程研究的热点。同时, 为了提高软件系统的模块化, 方便软件系统动态演化, 人们使用面向方面方法把横切于其他功能模块的分散的公共代码统一起来组成方面, 实现系统关注点分离, 并使用编织机制按照需求把方面织入系统之中[3,4], 形成面向方面的构件化软件系统。

面向方面的构件化软件动态演化性是指其能够根据用户需求以及网络运行环境的变化, 在不停机的情况下实时进行自我调整构件的能力。在面向方面系统中, 方面编织分为静态和动态, 编织机制由方面实现策略和方面织入时间策略决定。方面实现策略指的是实现方面行为所采取的策略, 当前共有四类如类替代、类修改等。而编译、加载或运行时织入的时间策略是指织入方面逻辑的时机。这两个因素决定了方面编织类型是静态编织还是动态编织, 且由于静态编织不能修改织入结果, 缺乏方面的动态热插拔能力, 动态编织则是可以实现方面动态加载、卸载以及重新绑定能力的编织方式, 所以为了实现构件化软件系统的动态演化和配置, 需重点关注动态方面编织机制。本文研究了一种支撑方面化构件软件动态演化执行的具体实施框架———DWAC。

1 相关工作

现在针对方面动态编织已有一些相关的研究工作。如复旦大学提出了一种统一的支持面向方面动态体系结构的正式模型AWC[5], 用以形式化方面动态编织的潜在机制, AWC合理协调了运行时方面化构件和基础构件之间的交互, 并使得系统维护与演化变得更加容易。曹东刚等人研究了构件化软件中关注点分离技术以及支撑机制[6], 提出了借鉴Aspect思想的PKUAS连接子, 该连接子由若干Advice组成, Advice对各种交互约束进行建模并在运行时刻被动态调用, 体现了方面编织思想。文献[7]对当前的主流方面编织机制做了较为深入的分析和研究, 并针对方面化构件组装平台以及按需计算中间件平台的需求, 提出了模型DAWeaver, 该模型能很好的支持方面的动态编织, 但仍有一些不足之处, 如基于该模型的动态编织是针对已编织的目标方法才适用的、方面编织研究的粒度不够细、编织器的编织性能仍需优化、方面编织并没有进行形式化分析和验证等。Aspect Werkz框架使用委托机制实现了一种动态方面编织模型, 该模型使得系统在运行时添加、移除、重构方面和通知成为可能[8], 但不能支持切入点运行时的增加、删除和修改。上述的这些编织模型或不能支持方面化构件动态演化操作, 或支持的演化粒度较粗。因此, 为解决上述问题, 本文提出了一种动态方面编织框架DWAC, 基于该软件体系结构规约描述方面化构件动态演化过程, 并利用DWAC框架动态的添加、删除或修改方面化构件、切入点和通知, 提高面向方面构件化软件系统的动态演化能力, 保证了软件体系结构规约与系统实现之间的一致性。此外, 文献[9]中基于ADarwin体系结构语言的动态演化行为一致性验证方法也给本文的工作提供了指导, 帮助调整和规范方面化构件动态演化过程的执行。

2 方面化构件动态编织框架

2.1 主要关注点

方面动态编织是在类加载或运行时使用拦截器拦截目标系统的方法调用, 并将系统的横切特征关联到系统的连接点处的功能。DWAC演化框架的设计思想是利用字节代码分析转换工具在加载时修改类代码以实现方面编织, 并考虑通过类修改编织接口来提供新增、删除和修改方面化构件、切入点和通知的能力, 提高了框架的动态方面编织、演化能力。方面化构件化构件的编织是一个系统而复杂的问题, 需要考虑到很多方面, 如拦截器设置、字节代码分析转换工具, 以及类修改方面编织核心接口等, 其中编织接口与其他方面编织模型相比有所不同且能够支持方面化构件动态演化。

1) 拦截器设置

拦截器提供捕捉进入或返回方法的接入点机制, 最终使得方面能够成功织入系统。AOP的拦截机制有两种, 本文使用的是通过Interceptor对用户调用的服务接口进行拦截的方式。

2) 字节代码分析转换

在通过字节代码的分析转换实现方面动态编织的过程中, 编织过程可看成类的转换过程。类转换需要考虑转换条件、接口转换及代码转换。转换条件可以为定义的切入点表达式;接口转换包括新增类、接口、方法, 增加或改变注释等;代码转换是对方法代码的改变, 如Advice。类转换方式具有较高的执行效率, 对方面动态编织也提供较好的支持。

3) 类修改方面编织接口

在字节代码分析转换工具基础上实现实时编织功能, 通过编织接口中定义的方法实现方面化构件动态演化需求, 包括方面化构件、切入点、通知的新增、删除和修改等。

2.2 框架设计

图1给出了DWAC框架与软件体系结构规约和系统实现以及外部环境之间的关系, 当外部环境或需求发生变化时, 通过DWAC框架对面向方面软件体系结构进行修改并完成规约的更新和实现的演化, 其中DWAC框架主要分为五个组成部分。

第一部分是拦截器, 拦截器主要拦截的是服务请求方发出的请求request。

第二部分是需求缓冲部件, 在方面编织过程中, 缓冲区存储拦截器截获的请求, 方面编织后, 缓冲区的请求则被提出并传送到方面化构件和被影响的基础构件。

第三部分是类修改方面编织引擎, 提供了实时的编织功能, 它在字节代码转换工具BCEL (Byte Code Engineering Library) [10]的基础上实现, 包括了特定在BCEL上实现的编织接口的类。

第四部分是编织接口, 它是一组用于建立拦截器和类修改方面编织核心之间连接的接口, 协调两者之间行为交互。

第五部分是方面编织规则, 用于为从需求缓冲区中提出需求后的调用方面化构件提供依据。

DWAC框架在体系结构规约和系统实现之间建立起了关联关系, 当外部环境或需求发生变化时, 通过该框架对面向方面体系结构进行修改并完成规约的更新和实现的演化。DWAC协调方面化构件与基础服务构件之间的交互, 使得方面化构件能够动态的织入、织出和修改。根据该框架进行方面动态织入过程可表示如下:

1) 在方面编织前, 服务请求构件发出的请求被拦截器拦截并直接发送服务提供方的构件, 最终把结果传递给服务请求构件。

2) 方面编织过程中, 因为拦截器拦截到请求后并不清楚是否要处理相关的方面化构件, 没有办法及时处理截获的需求, 故需求序列化后被存储进需求缓冲部件。

3) 在方面编织后, 拦截器有序地从需求缓冲中提取需求, 获取了诸如调用的目标类名、目标方法以及方面类等信息。依据这些信息, 确定在把需求发送给服务提供构件之前 (之后/前后) 调用方面化构件接口, 最终把运行结果返回服务请求构件。

2.3 动态演化支持功能

DWAC框架的主要作用是在当外部环境和用户需求的变化满足编织规则所描述的条件时, 处理方面化构件动态演化的能力。方面化构件动态演化主要包括方面化构件的新增、删除和修改功能, 现对这三点分别进行讨论。

(1) 方面化构件新增功能

首先通过拦截器拦截并存储该需求, 执行StorageR () 操作;其次根据需求和编织规则得到相关方面信息get Aspect Info () 后, 编织核心类则创建新的方面化构件, 执行Create Aspect () 操作;最后执行上述动态织入过程即获取需求getR () 后调用核心类的编织操作Weaving () , 执行新增的方面化构件功能do Ap () 并返回运行结果return AspR () 。功能执行过程如图2所示。

(2) 方面化构件删除功能

若触发进行方面化构件删除, 首先查询构件的当前状态, 若为执行状态, 则循环执行获取需求getR () 、调用Weaving () 、调用方面化构件do Ap () 、返回结果return AspR () 等操作, 直到需要调用该构件的所有请求处理结束。再调用编织核心类, 执行Delete Aspect () 操作, 切断该方面化构件的所有绑定。功能执行过程如图3所示。

(3) 方面化构件修改功能

首先断开该方面化构件与基础构件之间的所有绑定, 执行删除方面化构件的过程;再根据编织规则调用Modify Aspect () 方法, 执行修改方面化构件以及内部切入点和通知的操作;进行动态织入过程, 执行getR () 获取需求并调用Weaving () 方法建立该方面化构件与系统基础构件之间新的绑定;最后执行修改后的方面化构件功能do Ap () 并返回运行结果return AspR () 。执行过程如图4所示。

在DWAC中, 编织接口是类修改方面编织核心的抽象表示, 类修改方面编织引擎是在BCEL字节代码转换工具的基础上由一组实现编织接口的类组成的, 提供实时的编织功能。编织接口定义的一些抽象函数均能够通过调用BCEL字节代码转换工具来实现。BCEL是一个能够进行静态分析和动态生成和转换类文件的工具包, 其中定义了一些常用的类, 如数据结构Java Class类、用于为目标类添加方法和接口的Class Gen类、指令集类Instruction、指示指令句柄的Instruction Handle类等;同时提供了诸如创建新类、创建新方法, 修改类中方法体等功能, 较好地支持了系统动态代码的生成, 并最终装载到JVM执行和返回结果。以上特征使DWA框架能够动态的新增、删除或修改方面类或类中的方法, 从而实现方面化构件的动态演化。因此, DWAC框架能够实现方面的动态织入和方面化构件的动态演化, 并且演化的粒度可以细化到切入点、通知层次, 提高了系统动态演化能力。对DWAC框架的可行性验证和执行性能分析将在下一节中给出。

3 实例验证

因为DWAC框架与开放源代码的JBoss AOP[11]在实现机制上有一定的相似之处, DWAC的原型实验及实验借助了BossAOP的支持。原型验证的环境是:PC机, Intel (R) Core (TM) Duo CPU T2350@1.86GHZ处理器, 2G内存, Windows XP操作系统, Eclipse3.2+JBoss AOP IDE插件开发环境, JDK1.5。在此基础之上通过模拟编织规则和类修改编织核心引擎实现对方面动态演化的支持。JBoss AOP通过反射获得模块相关的元数据并借助Interceptor拦截器对方法进行拦截, 然后将被拦截的方法与方面通过字节转换工具Javassist关联起来, 实现了方面的编织。DWAC原型在此基础之上, 根据相关的编织规则获取方面信息后, 调用编织核心引擎中的方法向系统配置文件进行插入、删除、修改绑定操作, 进而通过Javassist修改编织结果, 最终实现方面化构件的新增、删除和修改功能。

以一个酒店管理系统的典型场景为例 (如图5所示) , 实现基本预定房间、登记入住和结账离店等基本功能。设具体的演化场景为:当系统感知到没有空余房间且排队等候人数大于演化规则中的约束条件时, 执行删除方面Handle Waiting以及增加新的方面化构件Room Finder (如图6所示) 的操作。

编织规则为:

若“当前排队等候人数”WNum小于50时, 方面化构件Handle Waiting织入系统, 原型的运行结果如图7所示。

若WNum=50时, 满足了上述编织规则, 则系统在定义的切入点处则需要调用编织核心类中的Delete Aspect () 方法, 通过删除配置文件中的绑定而动态的删除方面化构件Handle Waiting。执行Weaving () 函数, 从编织规则中获取演化信息并以此为基础添加新的绑定, 从而织入新的方面Room Finder, 运行的结果如图8所示。

上述示例表明DWAC框架能够实现对方面动态增删改的功能。此外, 对实验中编织操作的性能进行分析, 如上述动态演化示例中执行删除方面Handle Waiting和编织新方面Room Finder的操作, 它的演化执行时间可通过在程序中设置时间点, 计算差值并取多次演化操作的平均值得到。图9显示了其中10次具体的演化执行时间, 计算出演化执行的平均时间为1.48秒, 处于我们对演化执行性能的忍受范围内。

4 结语

本文介绍了一种面向方面化构件软件系统演化的动态编织框架DWAC, 该框架分为5个部分, 每个部分功能相对独立, 其中最重要的类修改方面编织引擎采用字节代码转换方法, 使动态演化成为可能。同时, 基于DWAC框架, 给出了方面化构件新增、删除和修改3个具体演化功能执行过程, 并以一个系统实例的演化场景为基础, 通过原型验证了DWAC框架对方面化构件动态演化的支持, 并给出了执行性能的分析。该框架与其他相关的方面编织框架相比具有自己的特点, 不仅能够实现方面的动态织入和支持方面化构件的动态演化, 更是处理了运行时切入点和通知的动态修改问题, 细化了演化的粒度。下一步工作将主要从以下两个方面展开:丰富和完善动态演化支持功能的描述, 不仅仅是方面化构件的新增、删除和修改;继续研发可视化的DWAC部署及开发环境, 给出更友好的工具支持。

摘要:随着用户需求和开放的网络计算环境的不断变化, 软件复杂性与演化要求也随之不断增强。为适应基于关注点分离的方面化构件软件的动态演化需求, 提出一种动态方面编织框架DWAC (Dynamic Weaving Framework for Aspectual Component-based Software) 。该框架以方面化构件为基本单位, 基于软件体系结构规约和系统实现, 给出方面化构件增加、删除和修改的具体执行过程, 并举例验证了其对面向方面的构件化软件动态演化的支持能力。

关键词:面向方面,基于构件的软件,动态演化,动态编织

参考文献

[1]LüJian, Ma Xiaoxing, Huang Yu, et al.Internetware:A shift of software paradigm[C]//Proceedings of the Internetware Conference.Beijing, China, 2009:52-60.

[2]LüJian, Ma Xiaoxing, Tao Xianping, et al.On environment-driven software model for Intermetware[J].Science in China Series F:Information Sciences, 2008, 51 (6) :683-721.

[3]Cao Donggang, Mei Hong, Zhou Minghui.Supporting crosscutting concern modelling in software architecture design[J].Frontiers of Computer Science in China 2007, 2007, 1 (1) :50-57.

[4]Zhang Lei.Study on comparison of AOP and OOP[C]//Proceedings of Computer Science and Service System.Nanjing, China, 2011:3596-3599.

[5]Lau Yiming, Zhao Wenyun, Peng Xin, et al.A unified formal model for supporting aspect-oriented dynamic software architecture[C]//Proceedings of 2007 International Conference on Convergence Information Technology.Washington, DC, USA, 2007:450-455.

[6]曹东刚, 梅宏, 曹建农.在中间件中支持用户自定义连接子[J].软件学报, 2005, 16 (8) :1378-1385.

[7]王斌, 周亮, 桂卫华.方面编织策略研究进展及图形化方面编织框架[J].计算机工程与应用, 2007, 43 (3) :92-97.

[8]Boner J.Aspectwerkz-dynamic aop for java[C]//Proceeding of the 3rd International Conference on Aspect-Oriented Software Development.Lancaster, UK, 2004:1-19.

[9]Zhou Xueyao, Chen Ningjiang, Hu Dandan.Behavior consistency verification for evolution of aspectual component-based software[C]//Proceeding of the 2013 International Conference on Software Engineering and Information System.Shijiazhuang, China, 2013:869-873.

[10]BCEL HOME PAGE[EB/OL].http://jakarta.apache.org/bcel/.

基于构件的开发 第5篇

2010年6月, 我作为某市电子政务管理中心的一名工程师, 组织软件公司和网络公司开发我市的OA系统, 在本系统的开发中, 我负责完成整个系统的设计和项目管理的工作。在OA系统开发中, 我们使用了基于构件的开发技术。大量复用构件是有效地使用基于构件的开发技术的前提, 获取构件的途径有很多种:

(1) 在现有构件库中提取符合要求的构件, 直接使用或做适当修改。

(2) 从市场上购买现成的商业构件。

(3) 开发新的符合要求的构件。

1 在现有构件库中提取符合要求的构件, 直接使用或做适当修改

由于开发我市OA系统的软件公司对Microsoft的.net比较熟悉, 对.net下的开发语言也比较熟悉, 且熟悉com构件技术, 所以用C++.net编写了一些常用的构件, 经过测试后, 写成DLL文件, 同时注册成COM构件, 存于服务器中, 形成构件库, 供各构件调用。COM构件既可以被插入动态web页面中, 也可以在网络或单机环境的.net中使用。构件有若干个对外接口, 可以根据不同的需求, 选择不同的接口。构件之间是彼此独立的, 当需求发生变化时, 可能只需要更改个别COM构件, 但不会影响到其它构件的继续使用。同一构件可以在不同的应用环境中重复使用。

在该系统的开发中, 我们主要获取了如下一些构件库中的COM构件:

(1) 身份认证构件USECHECK.DLL, 它主要完成两个功能:一是身份认证, 主要提供用户登录时验明身份, 保证系统的安全性。二是根据用户的输入的用户名确定该用户的类别, 如它是普通用户还是系统管理员。因此, 该构件具有两个接口, 一个接口连接普通用户平台, 另一个接口连接系统管理员平台。

(2) 查询构件QUERY.DLL, 它完成的功能是查询相关信息。该构件具有两个接口, 一个是连接所查询的页面, 另一个是连接无此信息的页面。

(3) 连接数据库构件CONECTOR.DLL, 它完成一个功能就是连接所需的数据库。该构件有一个接口, 就是连接后台数据库。

此外, 还获取了错误处理构件ERROR.DLL;删除构件DELETE.DLL;添加构件ADD.DLL;修改构件UPDATE.DLL;异常管理ABNORMALl.DLL等构件, 由于篇幅有限, 这里就不再一一详细介绍了。

2 从市场上购买现成的商业构件

在OA系统中, 需要使用图书光盘点播和视频点播功能, 然而这些功能的构件在我们的构件库中没有, 如果让开发人员去编写, 我们初步的算了一下, 所花费的成本, 大于购买的成本, 况且开发还需要浪费时间, 所以我决定到市场上购买现成的商业构件。由于在开发OA系统中我们使用的构件都是COM构件, 为了让构件之间可以很容易的组装, 我们在购买视频点播构件时, 也考虑了购买COM标准的构件, 并把新买来的商业构件装入构件库中。

3 开发新的符合要求的构件

造成重复开发;还有就是对构件不理解, 无法很好的使用构件库里的构件。这些问题的产生都是程序员对在OA系统的开发过程中, 我们发现了一些新开发的控件可能以后经常会用到, 如:数据批量上传控件、日志控件、短讯控件、数据维护控件、支持翻页的数据绑定控件等等。我们把这些控件经过测试后, 写成DLL文件, 同时注册成COM构件, 存入构件库中, 供各构件调用。

当多个构件获取后就要将这些构件进行组装, 在构件组装过程中, 我们采用了基于功能的组装技术和面向对象的组装技术相结合。根据系统需求, 把构件库中提取的符合要求的构件、从市场上购买的现成的商业构件和当前开发系统中的软件元素相连接, 最终组装成新的目标软件。

在开发过程中我们也遇到了一些问题, 主要是有些程序员不知道构件库里已有某个构件, 现有构件不够了解造成的, 今后应该不定期的进行已有构件知识培训, 加强程序员对已有构件的熟悉程度。并且应该开发一个构件管理系统, 对已有构件进行描述、分类与组织。

在该项目的开发中, 采用了基于构件的开发技术。比起采用传统的开发技术, 开发周期明显的缩短了, 大大降低了开发成本, 提高了软件质量。目前, 该系统已经上线并顺利运行了两年多, 达到了开发的目标, 得到了市领导的一致好评!

参考文献

[1]杨芙清.软件复用及相关技术[J].计算机科学, 1999, 26 (5) .

[2]陈菲, 刘克勤.计算机软件复用技术研究[J].现代电力, 2002, 19 (6) .

[3]武悦, 廖哓莘.网络远程教学的XML实现[J].计算机与现代化, 2002, (4) :40-41.

[4]朱俊波, 史素娟.浅议软件开发中的复用技术[J].福建电脑, 2008, (02) .

[5]杨敬君.基于构件的软件复用技术研究与应用实践[D].大连海事大学, 2009.

[6]仉新刚.浅谈软件复用的理论与技术[J].科技信息 (学术研究) , 2008, (13) .

[7]张友生.系统分析师教程[M].北京:清华大学出版社, 2010, 2.

[8]余雪丽, 须毓孝, 李林峰等.软件体系结构及实例分析[M].北京:科学出版社, 2004, 8.

构件化开发 第6篇

CA T IA是世界上 一种主流 的C A D /CAE/CAM一体化软件, 广泛应用于航空航天 、汽车、造船 和电子设 备等行业 。CATIA V5三维设计软件提供了强大的参数化设计功能, 参数化设计可 以很好的 提高飞机复杂结 构件模型更 改的效率, 增强复杂构件模型的可读性。该文基于CATIAV5三维设计软件, 针对飞机复杂结构件进行参数化设计 建模分析, 介绍参数化建模思 想及方法。

1 参数化设计建模分析

参数化设计建模是将模型主要几何特征与参数关联, 使零件特征“参数化”。“参数化”的 零件更改不再 基于特征命 令工具来完成, 只要对相应的参数进行更改即可。参数化设计建 模将特征参 数的变化准 确、严格地映射到 几何模型, 然后通过控制特征参 数来实现模 型几何特征 的自动更改, 提高复杂结构 模型的可读 性及建模效 率。该文作者通过 对参数化设 计的原理分 析, 再结合实际工 作经验, 总结出要进行 飞机复杂结构件的参数化设计前必须进行以下工作。

(1) 分析明确需要参数化控制的几何特征。

(2) 根据几何特征确定所需对应的特征参数。

(3) 分析明确特征参数和几何特征之间严格的映射关系。

因此 , 飞机复杂 结构件参 数化设计 建模流程应采用以下逻辑顺序。

(1) 零件几何特征要素分析。

(2) 建立特征参数。

(3) 零件几何体建模。

(4) 特征参数与几何特征关联。

下面举例说明参数化设计建模方法及过程。

2 某飞机框类零件参数化建模过程

2 .1 零件特征要素分析

在零件建模前应分析零件的各特征要素, 以及预期可能的更改, 分析哪些几何特征需要设立参数。以 图1零件为例, 该零件是典型的 飞机框类零件, 该零件的主要特征有:缘条、腹板、筋条。根据设计经验存在的设计不确定 性主要在于 几何厚度尺 寸、筋条分布范围和数量、腹板高度等方面, 计划设置参数有:外缘条厚度、上半框内缘条厚度、上半框筋条厚度、上半框腹 板厚度、上半框腹板高 度、上半框筋条对 称分布角度、上半框筋条数 量、下半框内缘条厚度、下半框筋条厚度、下半框腹板厚度、下半框筋条数量。

2.2 建立特征参数

在经过零件特征要素分析确定参数设置后, 根据对应特征选择适当类型的参数, 并在CATIA软件中建立相应的参数。使用“知识工程”工具栏中的“公式”创建特征参数并给相关参数赋值, 如图2。

2 .3 零件几何体建模

利用C A T IA软件完成 模型几何 体建立。

几何体建模是参数化设计过程中的重要一环, 它不仅是参数化设计的载体和对象, 而且几何体模型的造型方法对参数化设计有着显著影响, 甚至有可能决定着某一几何特征能否按原计划实现参数化建模。基于CATIA的几何特征建模可以通过多种方式方法完成创建, 但是建模过程必须考虑参数化设计的实现, 尽量采用便于参数使用, 逻辑思路简洁清晰的方法, 采用最便利的功能模块进行。对于飞机复杂结构件建模更是如此, 涉及的几何特征越多, 造型越复杂, 设立的特征参数越多, 几何体建模的思路、方式方法就显得越关键。

2 .4 参数与模型特征关联

CATIA软件允许参数之间通过函数关系进行关 系互联 , 对于有量 纲量、无量 纲量, 甚至是点、线等都可以通过参数间的函数关系参与飞机复杂结构件参数化建模过程, 为飞机复杂结 构件建模提 供了极大的空间 和便利性, 有力的支持复 杂几何特 征的参数化过程。

使用“知识工程”工具栏中的“公式编辑器”创建特征参数与对应的模型几何特征的关联关系。通过“知识工程”工具栏为模型几何特征创建以参数为自变量的函数, 关联后特征参数与对应的模型几何特征建立了函数 映射关系, 特征参数为自变量, 模型几何特征为因变量。函数关系创建过程如图3。

2 .5 参数化设计结果

参数与模 型特征关 联后, 特征参数 的更改会引起模 型几何特征 的相应更改, 更改过程简洁、有效。通过参数进行模型几何特征更改效果见图4。

3 结语

飞机复杂结构件采用参数化设计方法可以提高设计 更改效率, 提高零件模型的可读性, 缩短设计建模周期, 减轻设计人员建模负担。参数 化设计方法 对于飞机复杂结构件的三维设计建模具有很好的借鉴意义 。

参考文献

[1]武文轩.基于CATIA Automation实现的螺母参数化建模[J].精密制造与自动化, 2014 (4) :12-14.

[2]刘万春, 袁伟, 张琦.面向制造的CATIA结构建模方法研究[J].航空制造技术, 2014 (5) :40-42.

[3]张开兴, 张树生, 白晓亮, 等.飞机典型零件下陷的参数化设计[J].航空制造技术, 2012 (5) :81-86.

自动连续视频播放构件开发与使用 第7篇

视频播放是网络应用程序最常用的功能之一, 它通常需要特定的 播放器才 能播放 , 比较流行 的播放器 软件主要 有Windows Media Player和Real Player等。通过这些播放器软件不但可以在本机上播放网上比较流行的视频格式如RMVB、RM、WMV、FLV、SWF (其中主要有RM格式和WMV格式 ) 等格式的单个视频文件, 而且也可以实现连续列表播放。但在网上, 开发与Windows Media Player和Real Player相关的播放程序通常只能实现单个播放, 当有多个视频需要播放时, 需要用户选择指定的视频后才能继续播放, 如果不选择, 那就只能重复播放原来的视频或者停止播放, 这给一些需要播放连续多个视频时就会带来不便, 如在线学习时用户希望多个教程、小新闻视频等能够连续自动播放多个视频等, 这种播放器显然不能满足人们的要求, 那么, 如何才能开发出具有连续视频播放功能的Web视频播放器呢? 下面以常用的流媒体格式WMV和RM为例来说明如何开发和使用自动连续视频播放构件。

2多个视频连续自动播放

在本机上, 利用Windows Media Player和Real Player等都可以实现多个视频的连续自动播放, 它需要视频播放列表文件中指定需要播放的多个视频来完成, 如果要在网上播放, 通常在设计的播放器中要指定一个要播放的文件, 如果要多个文件播放, 只需要把要播放的文件用播放列表文件来代替即可。不过不同的播放器播放列表文件的格式是不同的:

RM格式的播放列表文件中, 只是存储视频文件的物理路径, 文件的扩展名为“.m3u”如:

H:U盘 程序 自动连续播放 MUSIC 红梅花儿开蔡依林.rm

因此, 在线网上播放RM格式的文件, 只要读取指定文件夹中要播放的RM格式的文件, 并把它写入到文件写入到扩展名为“.m3u”的文件中, 然后将扩展名为“.m3u”的文件指定为要播放的文件就可以实现自动生成播放列表文件, 并自动连续播放了。

WMV格式的播放表列文件是一个扩展名为“wpl”的XML格式的文件, 文件的格式如下:

其中之间就是要播放的文件列表, 因此, 在设计在线播放时, 可以先将及之前的代码写入视频播放列表中, 然后读取数据库中的数据写入列表中, 再将后面一段代码写入视频播放列表文件中即可。

由此可见, 自动连续视频播放其实是动态自动生成播放列表文件并将播放列表文件指定为播放播放文件即可。因此构件的设计的重点是如何自动生成播放列表文件和自动生成 播放器。

3自动连续视频播放构件的开发

3.1开发前准备

(1)准备多个视频文件, 如3个WMV格式的视频文件和3个RM格式的视频文件, 并存放在MUSIC文件夹中。

(2)准备一个数据库, 用于保存视频文件信息, 数据库名称是“MYDB.MDB”, 表的名称是“MiedaList”, 并根据步骤 (1) 中准备的视频文件, 将视频文件信息添加到数据库中。如图1所示。

3.2创建 Web 网站

先创建一个测试网站来实现, 创建Web网站的基本步骤是:

(1)在VS2010中创建一个名称为“连续自动播放” 的网站。

(2)在当前网站中通过“添加现在项”将数据库添加到当前网站的 “App_Data”文件夹中, 如果当前网站没有该文件夹, 可以创建一个名称为“App_Data”文件夹。

(3)在当前网站中新建一个名称为“MUSIC”的文件夹 , 将原来准备的的视频文件通过“添加现有项”, 添加到该文件夹中。

(4)选择“解决方案资源管理器”中的网站项目文件夹名称, 右击, 在出现的快捷菜单中选择“添加新项”(或者在“网站”菜单中选择 “添加新项”), 在出现的模板窗口中选择“类”, 在名称中输入“VideoPlayt”, 在语言中选择“C#”, 新建一个“VideoPlay”类, 因需要数据库和文件操作, 需要在前面添加System.IO、System.Text、System.Data、System.Data. OleDb等几个命名空间的引用。

3.3在 Web 网站中创建构件类

视频播放构件的重点是自动生成播放列表文件和动态生成不同视频播放器, 它是通过3个类来实现的。

(1)确定要连接数据库的连接字符串

(2)根据数据库内容动态创建播放列表

它是通过类函数CreatePlayListFile来实现, 程序代码如下:

类函数CreatePlayListFile有4个参数,

第一个VideoType参数为字符参数, 指的是视频播放类型, WMV或RM, 调用时“WMV”表示为WMV格式视频生成播放列表, 如果调用时用“RM”, 表示为为RM格式生成播放列表文件。

第二个参数FieldsOrderNo为整型参数, 为歌曲名在数据库中对应序列号。

第三个参数LinNumber是播放列表文件中指定最多一次播放多少个文件。

第四个参数PlayListFilename是播放列表文件名, RM格式扩展名为.m3u, WMV为.wpl

如调用时FILE_NAMERM格式为RM.m3u, WMV格式为 PlayWMV.wpl。

(3)动态创建RM格式播放器

动态创建RM格式播放器是通过创建类函数RM_MPlay来实现, 其程序代码如下:

类函数RM_MPlay只有一个参数PlayListFileName, 它是指播放表列文件名。

(4)动态创建WMV格式播放器

动态创建WMV格式播放器是通过创建类函数WMV_MPlay来实现, 其程序代码如下:

类函数WMV_MPlay只有一个参数PlayListFileName, 它是指播放表列文件名。

要注意, 以上所有的类必须包含在类命名空间namespace MyVideoPlay {} 之间, 这样, 以便在使用该动态库时能够引用。

4自动连续视频播放构件的测试

(1)测试WMV格式视频的自动连续播放

在当前网站中创建一个名称为“WMVPlay.aspx”的Web窗体, 在页面上添加一个ID为" Literal1" 的Literal1, 并添加以下事件代码:

程序运行结果如图2所示。当第一个视频播放完后, 能够自动播第二个、第三个WMV格式的视频。

(2)测试RM格式视频的自动连续播放

在当前网站中创建一个名称为“RMPlay.aspx”的Web窗体, 在页面上添加一个ID为" Literal1" 的Literal1, 并添加以下事件代码:

程序同样能够实现自动连续播放, 不过客户端要安装RealPlayer。

5自动连续视频播放构件的发布与使用

5.1自动连续视频播放构件的发布

在当前网站中选择“生成”菜单的“发布网站”, 弹出如发布网站对话框, 在目标位置中填写发布的目标位置 (ftp、Http或者相机指定文件夹) 即可。网站发布完成后, 在目标位置会增加一个名称为“Bin”文件夹, 其中增加一个扩展名为.dll的文件, “App_Code.dll”就是编写的类代码文件, 这个文件即是包含编写的且能够利用的构件类代码文件, 也是后面视频播放设计所用的文件。

5.2自动连续视频播放构件的使用

有了动态链接库文件App_Code.dll, 在其他任何一个需要使用自动连续播放的程序中都要可以调用了, 而且程序设计变得特别简单, 下面介绍使用App_Code.dll的步骤:

(1)新建一个网站, 如“使用构件”。

(2)在当前网站中建立一个名称为MUSIC的文件夹 , 将相关视频文件通过“添加现有项”, 添加到该文件夹中。

(3)在当前网站中新建一个名称为“Bin”的文件夹 , 点击项目文件夹, 在出现的快捷菜单中选择“添加引用”(或者在“网站”菜单中选择 “添加引用”), 会弹出一个添加引用对话框, 将“App_Code.dll”文件导入到该文件夹中。

(4)将保存视频信息的数据库通过“添加现有项”, 添加 到“App_Data”文件夹中 (如果没有该文件夹, 则建立)。

(5)添加一个名称为“WMVListPlay.aspx”的Web窗体 ,界面很简单, 在窗体上添加一个ID为" Literal1" 的Literal1, 进入代码视图, 添加以下代码:

6结语

自动连续视频播放构件能够根据数据库中视频文件的信息, 动态生成RM格式和WMV格式的视频播放列表文件, 并根据视频列表文件动态生成视频播放器, 视频播放器能够自动加载视频播放列表文件实现自动连续播放, 在教学、新闻、播客等网站都可以利用, 因此该构件具有较大的应用价值。该构件在Microsoft Visual Studio 2010、安装Windows Media Player和RealPlayer环境测试通过。

摘要:介绍在ASP.NET中,根据数据库中视频文件的类型,动态创建视频表列文件和自动生成播放界面来实现视频文件的自动连续播放,并将构件经编译后的DLL应用到其他应用程序中,轻而易举实现视频自动连续播放。

构件化开发范文

构件化开发范文(精选7篇)构件化开发 第1篇民办高校在国内发展近三十年, 作为公办高校的有益补充为社会各个行业输送了大量人才。近几年...
点击下载文档文档内容为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

确认删除?
回到顶部