可编程接口(共7篇)
可编程接口 篇1
EJB在J2EE框架中的应用, 降低了编程开发人员的工作难度, 简化了分布式对象开发程序的操作步骤, 是计算机编程技术的进步。EJB的出现与推广有利于开发人员的更好的开展网络编程工作, 其原理对开发人员具有重要的理论价值及现实意义。
1 EJB
1.1 EJB技术的概念
EJB是J2EE框架的重要组成部分, 在企业计算任务中发挥着关键性作用, 它不是任何网络产品, 而是针对开发使用事务和分布对象所运用的服务器端组件。其工作原理是在JAVA语言编写的基础上运用EJB容器运行组件进行工作的。EJB可谓是企业级的组件, 它的组件结构较为分散, 适应了企业的需求, 是进行企业计算任务的核心技术。EJB容器主要对企业的事务以及安全进行管理服务, 确保企业计算的精确度及保密性。
1.2 EJB编程模型构建分类
EJB编程模型构建分类大体上可分为三大类型, 分别为实体Bean、会话Bean和消息驱动Bean。其中实体Bean下又包括了BMP和CMP。
实体Bean:实体Bean是保证J2EE框架构成的恒久性组件, 它所包含的内容是指储存在容器外的对象或者是企业计算任务应用中的资源, 总而言之, 它代表的是真实存在的对象, 就像计算机中的数据库一样, 是用来储存信息的, 虽然在某种意义上与数据路的功能相似, 但却有着本质性的区别, 两者不可混为一谈。它所包含的BMP的运行与实践要求开发者必须自己编写适合EJB编程模型的编程代码, 它能够实现业务管理, 而CMP则与之相反, 在其运行中开发者不需要亲自编写编程代码, 只需要利用集成开发工具就可以实现代码编写, 保持其程序的持久性, 降低了编程系统开发的难度, 可以说它是BMP的升级, 提高了程序开发的性能。
会话Bean:会话Bean组件包括了有状态会话Bean以及无状态会话Bean, 它们在不同的状况下有不同的应用, 有状态会话Bean能够保存计算机的应用状态, 这是无状态会话Bean所不能达到的, 无状态会话Bean只是运用在普通的执行操作中。
消息驱动Bean:消息驱动Bean是EJB为了适应计算机的需求后增加进来的类型, 它的主要工作是将信息异步传递到其他位置, 它相当于一个处理组件, 用于网络资源之间的异步传递。进行消息驱动Bean的传递与处理工作可以采取两种方式, 一种为队列模型, 另一种为订阅机制。
2 EJB不同编程接口的应用
EJB技术在计算机编程运用中包括了本地接口与远程接口两种状态。
本地接口就是计算机编程操作中的一般情况下的接口, 是用来维系计算机中各个程序的连接点, 而远程接口则不同, 运用远程接口可以实现计算机的远程控制, 进行企业发展中所要应用的远程服务, 它是传统编程技术的创新, 在现代计算机信息技术中得到大力推广, 但这也并不意味着它可以替代本地接口, 它们只是分工不同, 各有所用。
计算机网络运行中如果要使用本地接口, 那么其测试程序就无法调用其本身, 要实现调用, 就要选择远程接口, 它们自身是无法实现接口调用的。
要远程调用EJB, 就要对两个远程对象进行多数的RMI运行循环, 直到其调用成功。实现不同接口之间的调用, 首先, 找到EJB容器的Home接口, 当获得Home接口的实现类后, 其次再建立统一的Home接口stub对象实例, 而后将整体好的对象一并发往客户端, 但此操作不是一次就可以的, 需要多次循环才能实现接口调用。
3 EJB编程模型实例分析
在J2EE框架中最常用EJB编程模型就是MVC模型, 它的工作原理是为了相同数据编制一个或者多个的编程应用程序。在J2EE框架中运用MVC模型能够使编程中的数据层和其表示层相分离, 它是一种具有开发性质的模型, 其主要功能就是对分布式应用系统进行设计与分析, 之所以在企业计算任务中广泛使用是因为它能够实现数据层的分离以及系统中表示的交互。
MVC编程模型能够控制网络中的访问, 及时调整数据中的业务规则, 当系统中的模型有任何异同, 此模型就会向试图发出变化信号, 以此来确保数据与试图之间的一致。另外MVC编程模型具有开发性质, 它能够开发出构成EJB各个组件的源文件代码, 其次, 编程模型根据EJB容器之间的布局可以实现EJB-Jar程序间的部署。
4 EJB的优势分析
EJB在J2EE框架的应用广泛的原因在于它有属于自身的独特优势。它在运行过程中能够降低开发远程分布式应用程序的难度, 提高编程开发人员的工作效率, 此外, 它的运用能够确保各组件运行期间的安全性, 不仅如此, EJB能够将服务器端的各个组件快速的建立起来, 形成一个整体。
5 总结
总而言之, EJB在J2EE框架的应用广泛是由EJB的特性决定的, 传统的Java编程没有互操作能力, 而EJB却具备, 它不仅能够实现组件之间的互操作, 还能够访问计算机操作系统, 在计算机应用中有较为宽广的空间, 简化了计算机编程运行程序, 适应了计算机信息时代对计算机编程模型的要求。
摘要:现如今, 我国进入了快速发展的计算机信息时代, 计算机中的EJB技术是在Java技术的基础上发展起来的, 它是计算机在编程上的技术创新。EJB在现今企业中得到了广泛运用, 因此也引起了众多研究者的兴趣, 本文正是针对EJB的编程接口及编程模型所做的研究, 重点分析了EJB概念、分类构成、不同编程接口之间的调用及EJB编程模型。
关键词:EJB,编程接口,调用分析,编程模型
参考文献
[1]龙湘明, 杨放春.CCM与EJB的比较与评价[J].计算机工程, 2008, 4 (18) :116-117.
[2]刘新强.一种基于框架和组件技术的J2EE开发模型[J].西安铁路职业技术学院学报, 2009, 11 (7) :240-241.
[3]张文.基于EJB中间件技术的研究和企业应用[J].中国科学院研究生院, 2009, (86) :113-115.
[4]唐胜群, 唐涛洲.件体系结构与组件软件工程[J].计算机工程, 2007, (225) :71-73.
可编程接口 篇2
关键词:系统芯片,通用可编程接口,IP核,数据传输
0 引言
在现代数据通信与传输领域, 系统芯片 (System-ona-Chip, So C) 与不同外设间的数据交换越来越频繁, 交换的数据量越来越大, 而且不同外设采用的数据通信协议和接口形式也各不相同。So C与外设间连接的要求越来越高, 主要表现在: (1) 高带宽, 要求通信传输速度越来越高; (2) 通用性, 要求接口具有对多种标准通信协议有一定的广适性; (3) 可再配置, 要求通信系统具有用户根据实际需要进行二次配置的特性。
另一方面, 外设接口往往采用一定的协议或标准, 典型的有UART接口、IIC接口、SPI接口等。芯片实现时, 通常将外设接口的逻辑功能固化在芯片内部, 但由于芯片资源有限, 不可能把所有的协议都集成在片上[1]。为了实现可编程的外设接口, 传统的方法是利用通用输入输出 (General Purpose Input/Output, GPIO) , 通过编程方式设置GPIO寄存器的高/低电平, 从而控制数据的读写和时钟的生成。但是, GPIO模块采用CPU内核直接控制, 模拟外设接口的读写过程会占用大量CPU运行周期, 影响系统中其他任务的实现, 所以一般只用于低速协议或接口的实现[2]。
本文针对So C与外围设备多种接口的连接问题, 设计了一种通用可编程接口IP核, 实现了So C与外围设备接口间的可编程特性, 并以增强型8051内核为基础构建了仿真验证平台, 验证了设计的正确性和有效性。
1 通用可编程接口IP的原理
通用可编程接口的工作方式采用主控方式, 可通过配置CPU实现对外设接口读写波形的编程, 从而完成外设接口的读写。
为了使数据在与外围设备交换过程中不需要CPU的控制, 利用通用可编程接口的高速带宽设计了一套FIFO缓存架构, 其工作机制使得数据以包的形式被提交到端点FIFO, 而不是每次一个字节, 并可设置多级缓存[3,4]。
通用可编程接口IP的本质是一个可编程状态机, 用户通过编写波形描述符控制状态机。通用可编程接口可生成4个用户定义波形描述符, 每个波形描述符最多可定义7个状态, 这7个状态通常情况下用于批量读、批量写、单字读、单字写。
2 通用可编程接口IP核设计
2.1 通用可编程接口IP架构
通用可编程接口模块的内部结构如图1所示, 主要由4个模块组成。
(1) 端点控制模块
端点控制模块 (CONTROL) 产生控制信号 (CTL) 控制外部设备, CTL信号可通过编程组合使用, 实现复杂的逻辑功能;接收外部准备信号 (RDY) 触发事件;接收/发送时钟信号 (IFCLK) ;输出状态信号 (STATE) , 显示状态机目前工作状态。时钟信号可选内部产生或外部输入, 其他控制信号也可设置为高有效或低有效。
(2) 端点缓存模块
端点缓存模块由4个相互重叠的FIFO端点缓存组成, 存储与外设通信过程中接收/发送的数据。其读信号 (RD) 、写信号 (WR) 、输出使能信号 (OE) 及时钟信号 (CLK) 控制数据总线 (FD[15:0]) 的读写, 并输出空信号 (EF) 、满信号 (FF) 。
(3) 波形存储器模块
波形存储器用于存储用户设计的波形描述符。通用可编程接口通过波形描述符控制数据的输入输出, 最多可存储4个波形描述符, 分别为WF0、WF1、WF3、WF4。
(4) 地址生成模块
地址生成器 (ADDR_GEN) 用于输出地址总线 (GPI-FADR[8:0]) , 由控制模块控制。
2.2 波形描述符设计
波形描述符是通用可编程接口的核心, 用于描述数据传输的时序。通用可编程接口可以存储4个波形描述符: (1) 单字读:从外设中读取1字节/字的数据; (2) 单字写:向外设中写入1字节/字的数据; (3) 批量读:从外设中读取一个长数据流; (4) 批量写, 往外设中写入一个长数据流。这些描述符可以动态地配置给任何一个端点FIFO。配置后, 通用可编程接口将依据波形描述符产生相应的控制逻辑和握手信号给外界接口, 满足向FIFO读写数据的需要。
图2为一种批量写模式下的波形描述符状态转移图。批量写状态机共定义了5个状态, 分别是IDLE、State1、State2、State3、State4, 每个状态的意义描述如下。
(1) IDLE:当写事件发生, 转移到State (1) ;
(2) State1:将SRAM写信号和使能信号置为有效, 触发写事件, 转移到State (2) ;
(3) State2:若外部SRAM模型的“满”标志为真 (FF=1) , 则停留在State (2) , 否则转移到State (3) ;
(4) State3:通用可编程接口采样数据线, 将内部端点FIFO数据写入外部SRAM模型, 转移到State (4) ;
(5) State4:如有更多数据需要传输, 则转移到State (2) , 否则转移到步骤 (1) 。
2.3 端点FIFO缓存设计
通用可编程接口内部包含4重端点FIFO缓存, 对内部总线端来说, 只要有1个FIFO为“半满”, 就可以继续发送数据。当前操作的FIFO写“满”时, 自动将其转换到外部接口端, 排队等候读取;并将队列中下一个为“空”的FIFO转移到So C内部总线接口上, 供其继续写数据。图3为FIFO缓存架构的传输原理图, 此时通用可编程接口内部总线接口执行OUT传输, FIFO端点被设置为512 B四重缓存。
3 仿真平台设计
为验证设计的接口IP核, 构建了一个以8051 CPU为内核的So C仿真平台, 利用设计的接口IP核访问外部设备。为了充分利用通用可编程接口地址总线、数据总线及控制信号, 外设采用SRAM芯片的Verilog模型, 并加以改进, 添加握手信号, 使通用可编程接口能读取该信号并控制数据传输。通过设计波形描述符, So C控制接口IP向外部存储器执行写/读操作, 仿真平台对两次的数据进行比较并报告设计的正确性。
该仿真平台在Linux操作系统下开发, 平台系统结构如图4所示。仿真器采用Synopsys公司的VCS仿真器。组成系统的各个模块可以按照需要加入仿真环境中, 仿真结果由环境产生、检查并输出到指定目录结构下的文件中。
仿真平台包括Verilog编写的Testbench、So C模型、外部程序存储器 (EXT PROGRAM ROM) 、SRAM Verilog模型。SRAM包括地址线 (A8~A0) 、数据线 (I/O15~I/O0) 、芯片使能、握手信号E_RDY (“1”表示SRAM未写入数据, “0”代表已写入数据) 、F_RDY (“1”表示SRAM存满数据, “0”代表未满) 。
仿真平台工作时, 由Testbench产生时钟 (CLK) 和通用可编程接口IP时钟 (IFCLK) 。
4 仿真结果分析
通用可编程接口单字节写的仿真结果如图5所示, 其中IFCLK为内部48 MHz时钟, 数据宽度为8 bit。当拉低时, 外部SRAM有效;当有效, 且RDY1 (F_RDY) 为低时, 数据 (5A) 被放入数据总线, 并经数据总线写入外部SRAM。状态总线STATE (PE[2:0]) 显示通用可编程接口引擎在每一操作期间循环经过的状态。
通用可编程接口单字读模式与单字写模式类似, 仿真结果如图6所示。
图7为通用可编程接口批量写传输的仿真结果, 数据宽度为16 bit。当被拉低, 且F_RDY为低时, 接口开始执行批量写程序, 从内部的FIFO缓存向外部SRAM写入512 B (00-FF, FF-00) 。
通用可编程接口批量读传输的仿真结果与批量写类似, 仿真结果如图8所示。
由上述仿真波形可看出, 通用可编程接口读写数据时, 时钟周期为20.8 ns, 数据总线宽度为16 bit, 对应数据传输速率为96 Mb/s。相比之下, UART的传输速率为1.5 Mb/s, IIC总线为400 Kb/s~3.4 Mb/s, SPI总线为18 Mb/s, GPIO总线的传输速率最高为50 Mb/s[5]。可见, 通用可编程接口的传输速率最快, 更适合当前大容量存储器之间的数据传输要求。
5 结束语
本方案实现了通用可编程接口与外围设备接口连接的可配性, 并通过设计验证了该方案的可行性与准确性。在数据传输过程中, 通用可编程接口无需CPU的干预, 只需对其进行正确设置就可以正常工作。通用可编程接口的强大功能使其不仅可以与外部SRAM连接, 还可以与更复杂的接口 (例如ATA接口) 实现无缝连接, 加快了产品的开发速度, 降低了开发成本和提高了产品的可靠性。
参考文献
[1]王占领, 张登福, 李云杰, 等.便携式ARINC429总线通信接口的设计与实现[J].微电子学与计算机, 2013, 30 (7) :133-136.
[2]HASAMNIS M A, LIMAYE S S.Custom hardware interface using NIOS II processor through GPIO[C].The 7th Conference on Industrial Electronics and Applications (ICIEA′12) .Singapore, 2012:1381-1385.
[3]刘志华, 郭付才, 彭新伟, 等.基于CY7C68013A的FPGA配置和通信接口设计[J].电子技术应用, 2013, 39 (2) :18-21.
[4]赵林, 孟令军, 于磊, 等.基于CY7C68013A的USB2.0高速接口设计[J].电子技术应用, 2014, 40 (1) :131-133.
可编程接口 篇3
1系统设计
1.1设计概述
图1是接口转换模块的通用应用场所, 符合G.703协议的硬件设备。G.703设备通过转换模块与以太网交换机输出的以太网数据进行数据转换, 极大地方便了用户在不同网络之间的数据传输。针对市场中现有的转换模块基于微处理器实现转换功能, 具有稳定性高、功能丰富的优点。与此同时, 也带来了相当多的弊端, 如产品开发周期长, 成本难以控制, 产品升级维护难度增大, 降低产品的市场竞争力。为克服上述技术问题, 本文选择可编程逻辑器件实现, 利用可编程逻辑器件的硬件并行优势性能、较短的开发周期、低廉的开发成本、较强的稳定性以及升级维护的便利性等优点[4], 大幅度提升该转换模块的市场竞争力。
1.2硬件设计
该转换模块主要采用以太网芯片、可编程逻辑器件和G.703接口芯片为主的硬件架构, 实现多路G.703数据和以太网数据的转换处理。该转换模块的硬件结构如图2所示, 包括核心处理单元、以太网业务单元、G.703业务数据单元、电源单元、时钟单元和复位单元。
选取可编程逻辑器件FPGA作为核心控制单元。其中, Altera和Xilinx是提供可编程逻辑器件的器件公司, 可提供多个层级的芯片进行选择, 由于Altera公司的Quartus II开发界面友好[4], 选择Altera的Cyclone III喜乐的EP3C55芯片作为FPGA数据处理芯片。该芯片具备55 856个逻辑单元、2 396个RAM以及156个嵌入式18×18乘法器。选取美信半导体公司的低功耗的G.703芯片DS21348, 支持实现T1、J1线路接口。该芯片具有多种工作模式, 可充分满足多种设计需求[5]。选择博通公司的以太网业务芯片BCM5228, 实现以太网业务的处理。作为数字电路必不可少的电源模块和时钟模块, 性能稳定、技术成熟是选择芯片的主要参考, 基于以上原因选取LT1640芯片作为电源芯片及ICS83081的时钟芯片。采用全球最大的电子设计技术、程序方法和服务供应商提供的EDA软件——Cadence进行硬件电路设计, Cadence17.0是cadence公司推出的能够跨IC、封装及印制板系统设计高性能互联。由于该转换单元中的FPGA及以太网业务芯片属于BGA封装, 考虑到产品的信号完整性, 设计多层印制板进而实现更好的信号处理效果, 而Cadence17.0可以满足具备多层印制板的工具需求, 是设计该转换器印制板的首选EDA[6]。
1.3逻辑设计
QuartusⅡ提供了完全集成且与电路结构无关的开发包环境, 具有数字逻辑设计的全部特性, 包括可利用原理图、结构框图、Verilog HDL、AHDL和VHDL完成电路描述, 并将其保存为设计实体文件;芯片 (电路) 平面布局连线编辑;Logic Lock增量设计方法, 用户可建立并优化系统, 然后添加对原始系统的性能影响较小或无影响的后续模块;功能强大的逻辑综合工具。Verilog的设计初衷是成为一种基本语法与C语言相近的硬件描述语言[7]。本文的逻辑处理部分选择让电路设计人员更容易学习和接受的Verilog作为开发语言。基本逻辑处理流程如图3所示, 为了更为高效地实现数据转换, 选择自定义的G.703数据包格式包括包前导码、起始码、目的地址、数据源地址、数据长度及帧校验位。
G.703转换以太网数据包的逻辑处理过程为:接收G.703接口数据, 判断数据包是否同步, 如果该数据同步则对其安装标准以太网数据格式进行打包, 其中包括添加数据包头、包类型及计算循环冗余码等处理。其中, 数据包同步的处理过程如下:首先定义表示数据同步的标识码以及对端失步标识, 对数据包头进行搜索, 判断该包头是否具有同步标识码, 如果具备该标识, 则说明收发双向均为同步, 则进行包头锁定, 添加同步时间间隙, 稳定同步状态。部分Verilog代码如下:
以太网转换G.703数据包的逻辑处理过程为:接收以太网数据, 对该数据进行线路标识去除处理, 进行串行数据转换至并行数据, 验证处理后的以太网数据的目的地址及循环校验是否正确, 将正确数据进行同步处理发送至G.703数据接收端, 将错误数据进行丢弃, 对代码编译仿真后进行单板调试。调试结果发现该转换单元转换效果明显优于现有产品。
2结语
该G.703接口与以太网数据转换模块, 通过Cadenc公司的高效EDA开发工具进行多层印制板的设计, 在保证信号完整性的前提下, 最大程度地缩减了产品尺寸, 根据Altera公司的可编程逻辑开发软件实现了数据业务的高效相互转换, 缩短了开发周期, 同时大大提升了系统升级维护的便利性。与此同时, 随着可编程逻辑器件的进一步发展以及印制板生产工艺的提升, 该转换器还有进一步提升的开发空间。
参考文献
[1]王廷尧.以太网技术与应用[M].北京:人民邮电出版社, 2005:1-25.
[2]雷祖康.10Base-T以太网数据到G.703E1的转换[J].产品与市场, 2002 (3) :108-109.
[3]徐荣, 龚倩, 邓春胜.电信级以太网[M].北京:人民邮电出版社, 2009:1-26.
[4]周孟然.CPLD/FPGA的开发与应用[M].徐州:中国矿业大学出版社, 2007.
[5]MAXIM-IC.Application Note 324:T1/E1 Net-work interface Design[R].MAXIM-IC, 2004.
[6]Howard W.Johnson, Martin Graham.High-Speed Digital Design:A Handbook Of Black[J].Prentice-Hall Inc., 1993 (5) :42-50.
可编程接口 篇4
Freescale公司于2000年前后开始推出HC08系列微控制器,具有速度快、功能强、功耗小、价格低、型号多、Flash编程及内含编程调试接口等优点,在业界得到了广泛的应用[1,2]。目前,HC08有近20个系列一百多种型号的芯片可供用户根据不同的需求进行选择。进行HC08系列MCU的应用设计,要求配有相应的编程调试器及配套软件。国内用户使用的编程调试器及开发环境主要依赖进口,价格昂贵,且编程调试器编程速度慢。苏州大学飞思卡尔单片机实验室从2001年开始开发针对Freescale MCUs 的集成开发环境,经过6年多的努力,已陆续开发出多种针对不同系列芯片的集成开发环境。MT-IDE for HC08 是专门为HC08系列开发的集成开发环境,具有编辑、编译、USB下载和调试的功能。与其配套的编程调试器具有编程速度快、写入稳定和通用性强等特点。作者作为此项目组的主要成员,针对在使用Mon08实现编程调试器时通信速度慢的问题,经过分析研究,发现了Mon08与目标芯片通信速度慢的主要原因,提出了一种提高编程速度的新的通信方法,并成功地运用到实际的编程调试器中。本文将较详细地阐述有关技术。为了使读者对HC08编程调试器有整体了解,下面给出编程调试器的特点及硬件解决方案。
1编程调试器的硬件电路设计
在编程调试器的硬件电路设计方面,主要考虑通用、方便、稳定等因素。为了方便用户使用,编程调试器采用了USB接口与PC机连接;为了适用于不同芯片的频率需要,采用了可控频率芯片产生目标芯片进入监控所需要的频率;为了适应与不同目标芯片的连接,设计了一个10芯控制接口,控制目标MCU进入监控所需要的特定端口电平,从而使编程调试器可以适用于所有HC08系列芯片。根据这些设计思路,编程调试器的硬件电路设计见图1。
其主要由以下模块组成:
(1) 主控芯片及其支撑电路 采用含有USB模块的MC68HC908JB8[3]作为主控芯片。
(2) USB接口电路 提供PC机与编程调试器的通信接口,它们之间的通信符合USB1.1协议;同时,通过PC机的USB端口取得5V工作电压。
(3) 可变频率产生电路 采用一片可编程晶振产生芯片LTC6903,可以在PC端设定目标芯片所需的频率,从而可以解决不同芯片对晶振频率的需求。
(4) 9V高电压产生电路 目标芯片进入监控模式需要在其IRQ引脚加一高电压。本设计利用MAX232的电器特性产生这一电压[4]。
(5) 可控5V电压产生电路 可控地给目标芯片供电,以保持编程调试稳定、可靠。
(6) 和目标芯片连接的Mon08接口电路(10芯) 通过该接口可以连接所有HC08系列目标芯片,不同芯片进入监控状态的特定电平数据存放在PC机的数据库中。
2Mon08通信机理剖析
Mon08是Freescale公司HC08系列芯片的编程调试接口,是固化在芯片内部的一段监控程序[5]。Mon08可以通过单线接收外部命令,利用这些命令可以实现对目标芯片内存的读写及执行内存里的程序。目标芯片在复位后,编程调试器会使其进入监控模式,即芯片运行Mon08程序。在实现编程时,主要用到的监控命令是WRITE和IWRITE。WRITE和IWRITE都可以实现对内存的写入,不过WRITE每次都必须发送要写入的地址,而IWRITE只需要发送要写入的数据,它会接着上次写入的地址继续写入。
在写入之前,编程调试器首先通过Mon08把Flash写入子程序和要写入的一页数据发送到目标芯片的内存,然后执行Flash写入子程序,即可完成对一页数据的编程。如果还有数据要写入,只要替换掉原来的数据后,继续执行Flash写入程序即可。如此反复,便可以实现对整个Flash的编程。采用这种方法,可以实现编程调试器的功能,本编程调试器的第一版就是根据这种思想实现的。在实际的使用过程中,如果程序稍微大些,就会感觉速度很慢,一个10K左右的代码要写一分多钟。后来通过分析Mon08通信时的特点,找出了编程调试器速度慢的主要原因。图2给出了Mon08在执行IWRITE命令的时序图。
说明:1=等待回复延时,2位的延时时间2=取消命令延时,11位的延时时间3=发送下一个字节前的1位延时时间
1位延时的计算方法如下所述:
1位延时是指以某种数据传输率传输1位所需要的时间[2]。
假如用9600bps的速率进行数据传输,则1位延时=1/9600 秒。
如果总线频率2.4576MHz,则一个指令周期的时间是1/(2.4576×106) 秒。则1位延时需要的指令周期数是:
根据图2可以得出主机通过IWRITE命令向目标芯片的内存写一个字节数据(8个数据位+1个起始位+1个停止位)需要花费的位时间为:
1位时间(发送下一字节前的延时)+10位写命令时间+2位时间(等待回复延时)+10位写命令回复时间+1位时间+10位数据时间+2位时间+10位回复数据时间+11位时间(取消命令延时)+1位时间=58位时间
所以,Mon08的通信效率是很低的,尤其是在进行大批量数据写入时。在实现编程调试器时,需要连续地写目标芯片内存,在这种情况下,不宜使用Mon08所提供的通信算法,其原因如下:
(1) Mon08每收一个字节后,会返回一个回应字节,发送方可以据此判断通信是否正确。这种方式虽然可以保证通信的正确性,但并不能保证编程调试器写入数据的正确性。
(2) Mon08在每收到一个字节后,都要有一定的延时,而且在两次命令之间,也要有一段长时间的延时。
(3) 利用Mon08对一个内存块写入时,每次都要发送写命令字。
(4) Mon08使用固定的通信波特率,用户不能设定。
由以上的分析可以看出,当对一段连续的内存区域写入时,Mon08的效率很低。要想提高编程调试器的编程速度,就必须改进Mon08通信算法。
3通信算法改进及高速编程调试器的实现
由于Mon08采用单线串行方式通信,因此,可以在硬件不改动的条件下,编写一段模拟串行通信的程序,在进行数据写入时,使用这段自定义的通信子程序来和编程调试器通信,从而提高通信速度。由于这段代码的通信协议是自定义的,因此可以避免使用Mon08时存在的不足,减少数据传输过程中所消耗的不必要时间。
如图3所示,目标芯片进入监控后,会自动执行⑤区中的监控程序,进入等待监控命令的状态。利用监控命令WRITE和IWRITE,将自定义的通信子程序的S19代码发送到图3中的①区,再将Flash写入子程序的S19代码发送到图3中的②区;然后发送RUN命令[6],使目标芯片执行①中的程序。①中的程序首先等待接收要写入的页大小,然后开始接收要写入Flash中的第一页的数据、页首址和页标志字节,并放入③中,接收完成后,①中的程序会自动调用②中的Flash写入子程序将③中的数据写入到页首址所指向的Flash中。一页写入完毕后,自定义通信子程序会根据页标志判断刚写入的是否是最后一页,如果还有要写入的页,则继续处于接收数据状态;如果所有页均已写入完毕,则返回到⑤中的监控程序。
改进后的编程算法只有自定义的通信子程序和Flash写入子程序是通过监控命令写入的,由于这部分的代码比较小(150字节左右),因此这部分用的时间很少。
自定义的通信子程序不需要其他不必要的延时及命令字节,因此发送一个字节的时间为10个位时间。下面给出了部分主要子程序的实现代码。
串行接收一位的汇编程序如下:
为了保证通信及写入的正确性,在写入一页数据之后,计算该页的异或校验和,并发送到主机供校验使用。如果校验正确,不仅说明通信是正常,而且也确保了Flash写入成功。
4性能分析及测试
如果采用Mon08通信方式,对目标芯片MC68HC908GP32(以下简称GP32)进行写入操作,当写入10KB的代码量时,理论上所需要的最少时间(GP32的总线频率为2.4576MHz,通信波特率为9600bps)等于总的数据传输时间及总的Flash编程时间之和。
总的发送字节=Flash写入子程序(约80字节) +10KB的代码(80页)+160B的页首址=10480字节
总的数据传输时间=总的发送字节×58位时间=10480×58×1/9600≈63.3秒
总的Flash编程时间=总页数×写入一页Flash的执行时间=80×6.5us≈0.52秒
总时间=63.3+0.52≈64秒
在实际写入过程中,因为通信过程的连续性问题,数据传输时间要比理论传输时间长,写入10K的Flash时间约为80秒。
由于通信子程序是自定义的,所以通信波特率也不必局限于9600bps或7200bps。通信双方只要协调好,就可以提高通信的波特率,从而加快写入的速度。本编程调试器一般使用19200bps的波特率,并允许用户根据实际需要进行修改。
采用自定义的通信协议而不采用Mon08所提供的通信方式,在相同串行通信波特率的条件下,传送速度可提高5.8倍(58位时间/10位时间)。改进后,在9600bps的通信波特率下,对GP32写入10K的Flash时间约为13秒。如果采用19200bps的通信波特率,则仅需要9秒。
编程调试器在对目标芯片编程前,应先将Flash写入子程序和要写入的一页数据发送到目标芯片的内存,因此,如果目标芯片的RAM太小,那么每次写入的数据数就会受到限制,要分多次写入,这就增加了编程调试器和目标芯片以及编程调试器和PC机之间的通信次数,从而影响编程的速度。为了适应不同RAM大小的芯片,本编程调试器可以由用户设定每次写入的页大小,从而使具有不同大小RAM、Flash的芯片都能达到比较满意的写入速度。
GP32内存有512字节,是比较通用的一款MCU,写入时每次可以写入128字节;而QY4内存仅有128字节,相对较小,每次写入的数据为16字节。实验中选取了这两款比较典型的芯片,表1和表2分别给出了GP32和QY4采用不同通信程序时所需编程时间的实验数据。
综合表1、表2可以看出,使用自定义的通信算法可以明显地提高编程调试器的编程速度。对于机器码在2K左右的程序,若自定义通信波特率与Mon08使用的波特率一致(9600bps),则写入时间从20秒左右降到5秒左右。若把波特率提高到19200bps,则可降到2秒左右,方便了用户修改、调试程序。对于更大的程序,速度提高更明显。
5结束语
编程调试器的编程速度是衡量编程调试器好坏的重要指标之一。在项目开发过程中,需要不断地修改程序,调试程序,程序的下载就会频繁发生,写入的速度也就显得尤为重要。本文给出的编程调试器,在硬件和软件方面采用了多项技术措施,达到了通用、方便、稳定的目的。本文介绍的编程调试器,以及本文并未介绍的PC机集成开发环境,作为一个整体开发套件,已在国内众多高校及研发单位使用,其稳定的性能、快捷的编程调试,受到了用户的好评。文中重点给出的Mon08通信改进算法,可以供开发类似工具或嵌入式应用产品时借鉴。
参考文献
[1]王宜怀.MC68HC908GP32单片机编程器的设计与实现.计算机工程,2004.
[2]王宜怀,刘晓升.嵌入式应用技术基础教程.清华大学出版社,2005.
[3]MC68HC908JB8 Technical Data.Motorola Inc.2002.
[4]戴晓静,王宜怀.Motorola新型单片机MC68HC908JL3编程器的设计与实现.计算机工程与应用,2004.
[5]宫辉,邵贝贝.MC68HC908LJ12监控ROM中的子程序调用.单片机与嵌入式系统应用,2002.
可编程接口 篇5
在我院,《计算机接口编程技术》课程原名为《计算机组成原理与接口技术》,是嵌入式系统方向的一门专业基础课,即后续课程有8位的单片机、32的ARM等相关课程。学习该门课程,一方面是为后续课程奠定专业基础,同时掌握学习新的硬件知识的方法。我系教学团队在教学实施过程中根据高职高专院校的培养目标、学习者分析以及工作岗位需求分析情况对该门课程进行了改革。
1 改革教学内容
学生普遍反映《计算机接口编程技术》课程难度较大,理论知识信息量大且抽象,不易理解,比较枯燥,从而会降低学习兴趣。怎样提高学生学习的积极性与主动性是课程教学改革的任务之一,其中首先体现在教学内容方面。针对这种情况我们课程组对课程的教学内容进行了适当的选取与整合,使之适应专业培养目标的需求。
传统的《计算机组成原理与接口技术》课程以传授理论知识为主,且以汇编语言贯穿始终,实践课时和实践项目非常有限,从而使学习过程变得枯燥无味。我院购置了清华大学科教仪器厂的TPC-2003A+接口实验仪后,对教学内容以及组织形式加以了改进。在教学内容选取过程中,我们认真反思了原《计算机组成原理和接口技术》课程的教学内容和教学效果,借鉴了TPC—2003A+通用微机接口实验系统的随机参考资料,充分考虑了以下因素:课程应该提供相对比较完整的计算机体系结构体系信息,而不是仅仅让学生完成实践项目,讲授必要的理论知识,并引导学生通过网络学习拓展知识面,打牢基础;实践教学环节以TPC—2003A+通用微机接口实验系统提供的实践项目为主,力求覆盖实验系统提供的全部资源;在学生有一定基础知识后,以项目化教学方法进行各种接口电路的编程技能学习;适当增加归纳、总结的内容,引导学生改进学习方法。在语言工具方面我们选择使用C语言作为接口驱动程序开发的工具,这样一方面降低了学习难度,另一方面与企业对嵌入式人才要求接轨。
2 改革教学方法与手段
随着教学内容的重新选取与组织,在教学方法手段方面必然要求打破传统的单一的理论讲授法,而采用多种教学方法的综合应用。在教学改革过程中,主要采用了三种教学方法:
(1)理论课讲授。这种传统的教学方法在基础知识教学中是不可缺少的,在本课程教学中,结合理论教学安排了一些让学生利用网络进行学习和知识拓展的任务,目的是让学生自己带着问题查询资料。
(2)以案例演示分析为主要特征的课堂教学。根据项目、任务、案例的教学内容分解层次,以案例为课堂教学单元,过程包括:问题引入———案例功能、需求和目标分析———相关知识点说明———案例成果演示———案例开发过程示范(硬件接线和软件编程、调试)———学生模仿练习———教师归纳总结———教师布置学生课后任务,学生在进行分组情况下,课后进行适量的作业和任务实施工作。
(3)以学生课后任务完成情况展示为主要内容的课堂教学。在学生分组完成课后任务后,教师安排学生演示任务完成情况,过程包括:学生课后作业项目成果展示———教师和学生点评———教师补充说明相关知识点———总结和归纳———布置课后任务,在学生展示作品同时,锻炼学生表达能力。
总之,本课程教学中综合运用了项目教学法、案例教学法、理论实践一体化的教学等,在课程教学整体上采用项目教学法,在具体课程教学中采用案例教学法。通过理论实践一体化教学,让学生从模仿开始,逐步锻炼学生自主实施项目的能力。
此外充分使用现代教育技术手段促进教学活动开展,构建了立体化课程教学资源,开发了自主开发课程教学网站,激发学生学习兴趣。
3 改革考核方法
高职高专院校是培养综合素质和高技能人才的摇篮,因此对于一门实践性的课程来说,如果只通过课程的期末考试来评定学生对一门课的掌握情况显然是不客观也是不合理的。为全面考核学生掌握知识和技能的情况,我们采用了过程考核和考试方式并用的考核方式,学生课程成绩包括学习过程的项目成绩和考试成绩,加重过程考核的比例同时降低最后考试成绩所占的比例。这种考核方式在综合评价学生掌握知识技能的同时激励了学生平时学习的积极性和主动性。
4 结束语
《计算机接口编程技术》这门课程的教学改革涉及多方面的内容,我系教学团队都进行了深入的研究与探讨,经过近两年的实施情况看到教学改革效果非常好,使得这门课深受学生欢迎,从而得出只有不断的进行教学改革与创新才能提高教学质量,培养出优秀的高技能的人才。
参考文献
[1]王义.《微机原理与接口技术》课堂教学的创新实践[J].科技信息,2007,(36).
[2]李彩霞.如何教好《微机原理与接口技术》[J].中北大学学报,2008,(24).
可编程接口 篇6
关键词:零售行业,应用编程接口库,零售经营模式
1 引言
自IBM于2008年提出“智慧的地球” (Smarter Planet) 的概念后, 智慧城市、智慧生活的想法随之孕育而生, 以高科技打造未来生活已成为趋势。然而, 在众多智慧产业中, 零售产业的业态最多元、变化最快且竞争压力巨大。尤其随着物联网的兴起, 零售行业面临的环境发生了巨大的变化, 而“智慧消费者”的诞生使零售企业面临向“智慧零售”发展。同时, 我国零售业市场也出现多种业态并存的局面, 主要包括传统的百货店、超市、便利店, 以及新兴的宅经济、绿色概念商店等。伴随零售业创新业态的普及, 一些复合型商店、电视广播导购、网络零售、虚拟店铺、仓储商店、行动商店以及智慧商店等新兴通路也因此而诞生。新兴元素的融入使得整个零售市场更加多元化, 竞争形式更加多样化, 竞争压力也与日俱增。
零售行业信息化为零售巨头创造了行销奇迹, 然而小微零售商却因为没有实力信息化而日趋退往市场边缘。小微零售商的退败将会导致整个零售行业的严重失衡, 最终造成大量失业, 以及产业垄断等一系列社会、经济问题。
2 零售业的现状与趋势
就国内而言, 随着中国进入世界贸易组织WTO, 尤其是党的十六届三中全会之后, 我国形成了国有、集体、个人及私营、外资多种所有制结构, 大型百货商店、超市、专业店、专卖店、便利店等多种业态, 连锁代理等多种经营方式共同发展的新型商业流通格局。这一阶段的流通体制改革主要是围绕着提升农村流通网络和规范商品流通市场展开。随着社会主义市场经济发展中的地位持续增强, 零售市场由商品严重短缺的时代进入了绝大部分消费品供过于求的卖方市场, 城镇居民消费品已过渡到初步小康型的工业品消费。近年来, 中国零售业开始充满机遇与挑战, 国内外经济形势复杂多变, 零售企业经营压力增大。中国零售业发展报告 (2013) 指出, 零售行业发展呈现出一些新的特点:网络零售高速增长, 实体零售加增调整;渠道下沉, 企业扩张重点转向“三四线城市”;成本费用增加, 利润上升但利润率有所下降;专卖店、便利店保持良好发展, 百货店、超市竞争压力加大;传统盈利模式探索转型, 行业现代化程度进一步提升。
当人人拥抱“电子商务”、“网上购物”的时候, 实体商店受到严重的冲击, 经营成本 (租金、工资、货源等) 不断上涨, 迫使传统实体店进入汰旧换新的局面。如淘宝、Amazon、ebay等, 将一些传统实体店打入了冷宫, 或迫使它们深刻地反思与电子商务结盟, 创造新的经营模式。目前, 我国网络零售市场交易规模已经突破一万亿元, 占到社会消费品零售总额的6.3%。但这并不代表网上商店将全面取代实体店。实体店最大的优势及好处是获得商品时立刻享受的满足, 是无论多快的速递服务都无法比拟的, 另外, 一些贴身的产品, 亲身体验的感受也只有实体店可以满足消费者。由于近年来我国零售行业的市场规模已接近饱和, 如何通过信息化提升运营管理和营销模式的创新, 实现多元管道行销, 解决零售行业的内忧外患成为零售业未来发展的关键。
就国际趋势而言, 国际零售巨头开始加紧进军中国的步伐。目前世界主要零售巨头集中在美国、法国、日本等发达国家, 如着名的Wal-Mart、Costco、Metro、Carrefour等, 国际零售商通过购并及大型化迅速扩张着。国际间零售业的发展趋势可以归纳为: (1) 大型零售企业并购与扩张并存, 积极拓展新兴市场; (2) 宅经济等多元通路发展; (3) 零售行业的复合式及便利化发展; (4) 绿色环保意识的落地。
3 未来零售业面临的挑战
根据IBM一项调查显示, 未来十年零售业最希望透过信息化解决的问题是, 通过供应链集成、实现零供互动、提高物流效率、降低成本、减少缺货现象。其次是通过客户关系管理系统, 提供深层次的客户竞争手段, 维系老客户, 形成竞争力。技术创新方面, 零售企业希望推广的技术有物流管理技术、资料仓库技术、RFID技术、全球资料同步技术等。零售商必须利用更透明的信息系统提高效率, 才能提升促销成功率及客户满意度, 最大化利润, 并且提高效率。
诚然, 零售业ICT发展过程中会遇到诸多问题, 其中IT的维护既十分重要又十分棘手。激增的零售业营运据点带来了巨大的IT维护压力, 这需要大量人力物力的支持, 除非小微零售商有IT人员能保持高效的服务及回应速度, 否则将影响整个零售系统的正常运行。同时, 为了快速应对多样化的零售创新, 零售业正急需有效的信息分析与管理技术。而智慧零售的客户群分析方式可以利用海量资料技术来分析, 从而掌握和了解客户实际行动的根本原因及模式, 作为零售商战略的重要依据。
综上所述, 在信息化时代信息技术成为企业之间竞争的主要关键因素, 对大型企业来说, 只是一种投资, 属于成本的一部分。而对于中小型的零售业, 既没有足够的信息化能力, 也不具备条件与大型零售业竞争的市场。传统的小型门店是零售行业的根基, 如果小型门店在信息化潮流中失去了生存的空间, 将导致整个零售行业产生结构问题。
4 基于O2O零售模式的建构
零售业有传统的实体店, 得益于信息科技的快速发展, 打开了网络市场的网购新市场, 随着B2C、B2B及C2C商业模式的逐渐成熟, 近年发展出一种新型的消费模式O2O (Online to Off line) 已快速在市场上发展起来。O2O整合购物服务, 为线上商务业者开拓实体通路, 整合在地店家, 提升营业额。由于实体商务资金流容易取得信任, 客户可以实体触碰商品, 感受服务介绍与温暖, 其存在的价值不可替代。而电子商务容易追踪消费记录与习惯, 易进行客户联系维持及商品查询, 还可比较价格, 因此其扩张趋势不可抵挡。O2O既鼓励实体通路消费者上网互动, 又引导虚拟通路人潮进入实体通路消费, 透过网路平台整合往下二层客户, 穿越通路的阻隔。
现时采用O2O的零售商, 如超市、百货、购物中心等, 通常有两种经营方法, 一是和微信、支付 (淘宝之类的网购平台合作) 宝合作, 从支付、营销、会员管理入手改变实体门店;二是自建线上平台, 线上线下同时经营, 并相互相结合, 进行网订店取或网订店送。采用O2O模式发展较为成熟的大致可以分为三类, 第一类即时送达的零售服务, 如Instacart、社区001、爱鲜蜂、京东等;第二类熟食餐饮服务, 如Door Dash、Spring、Spoonrocket、趣活美食送、到家美食会等;第三类半成品生鲜电商, 如Blue Apron、Plated、Good Eggs、新味、青年菜君等。
本研究提出的模式是基于O2O, 有别于传统的针对必须线下体验的服务内容的O2O。本建议的模式覆盖现有的网购商品, 包括服装、个人用品或价值比较高的产品等。通过利用小型门店广泛地分布在生活圈中的特征, 把本来网购的产品也放在小型门店, 客户在网购下单后, 可以查看最近的门店所在, 产品早已留在了距离客户群的最后一里。最后, 对小型门店来说, 新型的O2O模式只是多了一些不同的商品销售, 而且客户到门店时还可以创造向上销售和交叉销售的机会, 增加门店的收入。
5 零售行业应用编程接口库建设
本研究针对中小型零售业, 采用软件即服务Saa S的云计算概念, 以REST、SOA等软件架构, 针对零售行业设计软件编程接口 (API) , 提供标准化的业务管理平台, 建立O2O的线上业务系统, 帮助中小型零售行业打开O2O市场的业务, 也可以与市场上现有的B2B、B2C环境对接。
零售业API有前台零售系统 (Point of Sales) 、仓储管理 (Stock Management System) 、供应链管理 (supply chain management system) , 以及后勤运作 (Backoffice Management system) 等基本功能化模式, 既简化业务系统的设计也提供了规范化的功能模组, 有利于系统之间的沟通, 增加系统的弹性与灵活性。标准化业务平台提供了通用、基本的业务管理所需的服务功能, 通过系统配置、调整满足企业的个性化需求, 也可适当插入客制化模块提高系统的适用性。对部分企业客户来讲, 可能偏向自建业务平台, 也可以通过零售业API与其他线上业务平台对接。最后, 通过商务智慧分析手段, 回馈市场数据予企业客户, 帮助企业掌握市场状况, 更有效地改善业务战略, 提高企业的竞争力。
6 “大数据”实现智慧零售业的附加价值
零售企业谈的“大数据”的最大价值, 是在零售策略上与“大数据”技术进行结合, 最大程度地编制前置性的零售策略, 确保销售计划的实现。“大数据”讲究四个“V”:一是数据体量大 (Volume) ;二是数据类型复杂 (Variety) , 多涉及各种结构性与非结构性的;三是价值密度低 (Value) , 这和体量大是相对应的;四是数据更新与处理速度快 (Velocity) 。
大数据时代的智慧零售业为消费者提供全面的消费信息, 全面掌握市场信息回馈用户及零售商。随着数据捕获、传输和存储技术的快速发展, 用户将更多地需要采用新技术来挖掘市场价值, 采用更为广阔的并行处理系统来创建新的商业增长点。数据挖掘技术将在未来的数据计算中扮演越来越重要的角色。针对完整的客户及货品数据流, 只要建立一个海量资料分析平台, 进行更深度的分析, 即时处理结构及非结构性数据, 在数据还没有落地之前, 就可以在第一时间分析掌握有价值的信息, 以抓到商业行为的契机, 为企业赢得更多的时间和市场策略调整空间。数据用到这一层面上, 才具有直接的业务价值。
此外, 针对增长、挽留、满足客户的战略行动, 企业可以善用海量数据的分析结果, 不但了解甚至预知客户的需求, 推出创新性的服务给特定客户, 才能掌握最好的客户的特点, 并让他们作为推荐人, 尤其在现今社群行销当道的市场上, 唯有掌握最佳客户, 才能把握向上销售和交叉销售的机会。
参考文献
[1]DM Review.Data Mining Lead Technologies Toward Ubiquitous Computing and Privacy Loss[Z].2002.http://www.dmreview.com/master.cfm?Nav ID=93&Ed ID=5096.
[2]曹静, 史子昂, 窦浩, 郭秋岑.我国网络零售O2O模式发展历程的分析与展望[J].China Business&Trade, 2014 (25) .
[3]蒋晓敏.基于O2O视角的银泰百货连锁经营商业模式的研究[D].浙江理工大学, 2014.
[4]荆林波, 苏会燕.流通体制的30年改革进程[J].2008.
[5]中国商业联合会.中国零售业白皮书[R].2002.
[6]林育如, 蔡琇颖, 洪璋翎, 张慧靖, 陈弘龙, 林昱丞.新消费形态崛起看台湾零售业之未来——大创日货之实证研究[J].2012.
可编程接口 篇7
在一个面向对象的系统中,系统的各种功能是由许许多多的不同对象协作完成的。每个对象的实现方式或同一个对象的实现方式都可能不一样,要使各个对象之间能相互协作通信及交互,则必须规范定义系统各对象,即从概念层次上进行系统分析设计,从领域专家的角度抽象出具体事物的外在共性的层次上进行接口设计,而不用关心具体的接口实现。
组件对象模型(Component Object Model)是组件对象之间相互接口的规范。所谓接口,其精确定义是“基于对象的一组语义上相关的功能”,实际上是一个纯虚类,真正实现接口的是接口对象[1]。文中就基于三层架构系统的网络教学平台中层与层之间的紧耦合的问题,将数据层对象抽象出接口,逻辑层通过调用接口方法访问数据层。数据层将数据实体和业务实体分离,当数据行为改变时并不影响数据实体类,而业务实体则独立于不同的数据库。这样在创建实例时,相关创建的对象有多种类别,而每种类别又有不同的实现。在以往的设计中,一般会通过抽象工厂模式创建对象实例,而文中考虑到数据库的可移植性,利用配置文件和反射功能来实现数据对象的创建,方便了逻辑层的调用。
1 面向接口编程的网络教学平台的设计
平台采取C#、ASP.NET在Windows、VS.NET、DreamWeaver MX 2004环境下进行开发,利用SQLServer2005和Oracle作为平台数据库,采用基于接口模式的B/S三层架构实现平台功能,整个平台在Windows Server 2003上运行。
1.1 平台功能分析
平台主要分有个人空间、课堂空间、资源发布、资源批量下载、智能答疑、专题研讨及视频点播等模块。整个平台经过层层分解,采用自顶向下扩展的方法,把一个复杂的系统分解为多个功能较单一的功能模块。一方面,各个模块既有相对独立性,可以分别加以设计实现,另一方面,模块之间可以通过信息或调用关系等互相关联,共同构成一个整体。如个人空间里所包含的所在课堂空间、个人资源发布管理、个人疑问管理等,都是通过调用其他模块的方法来实现相应的功能。
1.2 三层架构
在软件体系架构设计中,分层式结构是最常见,也是最重要的一种结构。微软推荐的分层式结构一般分为以下三层,如图1所示。
·数据访问层 也称为是持久层,其功能主要是负责数据库的访问,也就是实现对数据表的Select、Insert、Update和Delete的操作。如果要加入ORM的元素,那么就会包括对象和数据表之间的mapping,以及对象实体的持久化[2]。
·业务逻辑层 是整个系统的核心,它与这个系统的业务(领域)有关。如果涉及到数据库的访问,则调用数据访问层。
·表示层 是系统的UI部分,负责使用者与整个系统的交互。在这一层中,理想的状态是不应包括系统的业务逻辑。表示层中的逻辑代码,仅与界面元素有关。因为这是使用ASP.NET设计的系统,因此包含了许多Web控件和相关逻辑。
1.3 平台总体架构
平台采用图1所示的三层架构,每个层实现应用程序一个方面的逻辑功能,通过层与层之间的交互,形成应用程序体系架构,从而实现适应于企业级应用的,功能复杂的应用程序[3]。
平台共包含9个项目,其中一个Web站点项目,8个类库项目,如图2所示。
2 面向接口编程的网络教学平台的实现
2.1 面向接口编程设计
平台的抽象接口模式主要应用在数据层,系统将数据层对象抽象出接口,方便逻辑层直接调用,如图3所示。
在数据访问层(DAL)中,采用DAL Interface抽象出数据访问逻辑,Model模块包含了数据实体对象,并以DAL Factory作为数据访问层对象的工厂模块。抽象出来的IDAL模块,脱离了与具体数据库的依赖,从而使得整个数据访问层利于数据库迁移。DALFactory模块专门管理DAL对象的创建,便于业务逻辑层访问。SQLServerDAL和OracleDAL模块均实现IDAL模块的接口,其中包含的逻辑就是对数据库的Select、Insert、Update和Delete操作。此外,抽象出来的IDAL模块,除了解除了向下的依赖之外,对于其上的业务逻辑层,同样仅存在弱依赖关系,因为业务逻辑层只需实例化IDAL模块的接口类后,便可以通过接口方法操作数据库。因此只要不涉及到IDAL的接口定义修改,那么业务逻辑层和数据层之间的修改都互不影响,保证两层之间的松散耦合。
2.2 数据访问层实现接口
(1) 数据实体
数据实体主要用于表示数据存储中的持久对象,所有实体类都被放到Model模块中。数据实体可以模拟为一个或多个逻辑表,内容可能来自于一个或者多个数据库中的表中的字段。虽然这些类的属性分别映射了数据表的列,而每一个对象实例也恰恰对应于数据表的每一行,但这些实体类却并不具备对应的数据库访问能力。
(2) 数据业务对象
这里所指的数据业务对象是数据层基本的数据库操作,包括Select、Insert、Update和Delete。由于这些业务逻辑对象,仅具有行为而与数据无关,因此它们均被抽象为一个单独的接口模块IDAL,如图4 中的数据表Resource对应的接口IResourceInfo。
将数据实体与相关的数据库操作分离出来,符合面向对象的精神。首先,它体现了“职责分离”的原则。将数据实体与其行为分开,使得两者之间依赖减弱,当数据行为发生改变时,并不影响Model模块中的数据实体对象,避免了因一个类职责过多、过大,从而导致该类的引用者发生“灾难性”的影响[4]。其次,它体现了“抽象”的精神,或者说是“面向接口编程”的最佳体现。抽象的接口模块IDAL,与具体的数据库访问实现完全隔离。这种与实现无关的设计,保证了系统的可扩展性,同时也保证了数据库的可移植性。在平台中,可以支持SQL Server、Oracle或其他数据库,具体的实现代码分别放在数据层SQLServerDAL或OracleDAL两个不同的模块中即可。
(3) 数据对象创建管理
在平台中,一般针对一个数据表或一类数据表创建一个对象,如针对Resource表的ResourceInfo类创建一个对象。在前面的设计中,这些对象已经被抽象为对应的接口,而其实现则根据类的不同而有所不同。也就是说,创建的对象有多种类别,而每种类别又有不同的实现,这是典型的抽象工厂模式的应用场景。而上面所述的两个问题,也都可以通过抽象工厂模式来解决。考虑到数据库的可移植性,系统最后利用配置文件和反射功能来实现,即可以在项目的web.config文件中,配置好具体的Factory对象的完整的类名。然后利用配置文件和反射功能直接指向具体的数据库对象实现类,例如Platform.SQLServerDAL.IResourceInfo。
平台使用DataAccess类取代了前面创建的工厂类体系,它是一个sealed类,其中创建各种数据对象的方法,均为静态方法。之所以能用这个类达到抽象工厂的目的,是因为配置文件和反射的运用,如下的代码片断所示:
public sealed class DataAccess
{
private static readonly string path = ConfigurationManager.AppSettings[″DAL″];
public static IResourceInfo CreateResourceInfo()
{ //直接指向实现类,返回数据访问实例
return(Platform.IDAL.IResourceInfo)Assembly.
Load(path).CreateInstance(path+″.ResourceInfo ″);
}
}
2.3 业务逻辑层访问接口
业务逻辑层作为接口的访问控制部分,它处于数据访问层与表示层中间,起到了数据交换中承上启下的作用。在业务逻辑层中,有关数据访问层中数据对象的调用,均利用多态原理定义了抽象的接口类型对象,然后利用工厂对象的工厂方法创建具体的数据对象[5]。如 Platform.BLL.ResourceInfo类所示:
public class ResourceInfo
{ //创建具体的数据对象
private readonly IResourceInfo dal = DataAccess.CreateResourceInfo();
public int Add(Platform.Model.ResourceInfo model)
{
return dal.Add(model); //数据对象调用接口方法添加一条记录
}
}
2.4 表示层设计
在业务逻辑层与表示之间采用紧耦合,将核心业务逻辑都放到了一个模块BLL中,如图5所示。在业务逻辑的处理中,如果存在业务操作的多样化,或者是今后可能的变化,均可以利用抽象的原理,或者使用接口,或者使用抽象类,从而脱离对具体业务的依赖。
3 结束语
本文针对传统面向对象系统数据层及逻辑层耦合度高的问题,给出了一种实用的接口编程模式。该模式将系统数据层的接口和实现进一步分离。接口类只定义操作,将数据层访问方法抽象成一个IDAL接口模块,实现类定义属性和操作的具体实现,保证了系统的通用性和数据库的可移植性。这些设计思想及方案都有极强的通用性,可以给后来的设计人员带来启发和帮助。
参考文献
[1]赵明砚,姜秀萍,刘荣梅.一种应用接口编程思想的软件开发平台[J].计算机工程与应用,2001,21:159-161.
[2]陈冠军.ASP.NET2.0企业级项目开发[M].北京:人民邮电出版社,2007:182-186.
[3]Kevin Hoffman,Jeffrey san,Thiru Thangarathinam,et al.Professional.NETFramework[M].Wrox Press,2001.
[4]Kouresh Ardestani,evin Hoffman,Dnald Xie.高效掌握ADO.NET—C#编程篇[M].张哲峰,译.北京:清华大学出版社,2003.