中图分类号:F253.9 文献标识码:A 文章编号:1002-3100(2011)07-0026-03 1 概述 我国现代物流整体规模扩大,发展速度加快,运行效率提高,对经济发展的支撑和促进作用更加明显[1]。同时,据统计,国际航运业承担着国际货物贸易90%以上的运输量[2],随着经济全球化的快速发展,航运在全球化的贸易运输中的地位就显得尤为突出,航运物流信息的管理更显重要[3]。 信息技术和信息系统蓬勃发展,给物流企业业务流程、管理模式、组织机构的重组乃至整体的发展带来新的机会,促使传统的经营方式和思想观念发生深刻的变革,也对物流企业的经营理念和管理模式提出了挑战。我国的航运物流企业如果要实现适应未来日益激烈的市场竞争,最有效的方法就是通过开发管理信息系统来加强企业各个部门之间的相互协作,以提高企业的整体运作水平[4]。由此可见,航运物流企业构建管理信息平台已是大势所趋。 现有航运物流管理信息系统的开发模式下,IT组织很难对不同的功能和系统进行集成,很难对变化的商务需求和竞争需求及时做出反应。只要不是由单独的一个开发商来提供所有的功能,就一定存在着不严格的应用程序。本文提出了一种经改进后适应于.NET平台的J2EE平台的成熟、稳定、易维护的五层架构开发模式,同时考虑到系统将来的重用和扩展问题,将面向接口编程思想运用于此架构对系统进行开发和实现。这些接口在开发之初就已经考虑到重用问题,提供了标准的接口,可以被各种应用和其它服务所调用。 2 面向接口编程 定义:在系统分析和架构中,分清层次和依赖关系,每个层次不是直接向其上层提供服务(即不是直接实例化在上层中),而是通过定义一组接口,仅向上层暴露其接口功能,上层对于下层仅仅是接口依赖,而不依赖具体类。 (1)接口编程和面向对象编程是什么关系 面向接口编程和面向对象编程并不是平级的,它并不是比面向对象编程更先进的一种独立的编程思想,而是附属面向对象思想体系,属于其一部分。 (2)面向接口编程优势 这样做的好处是显而易见的,首先对系统灵活性大有好处。当下层需要改变时,只要接口及接口功能不变,则上层不用做任何修改。使用接口的另一个好处就是不同部件或层次的开发人员可以并行开工,就像造硬盘的不用等造CPU的,也不用等造显示器的,只要接口一致,设计合理,完全可以并行进行开发,从而提高效率。 3 基于.NET平台面向接口的分层架构 在.NET平台上,比较经典的分层架构是三层架构,从下到上依次是:数据访问层、业务逻辑层、表示层。各层职责如下: 数据访问层:负责与数据源交互,完成数据访问等一系列操作。 业务逻辑层:完成与系统业务有关的逻辑操作。 表示层:负责与用户交互、呈现数据等一起与系统表示有关的操作。 在这个架构中,每一层都不是一个类,而是一个类族。所以,在本文中,为数据访问层和业务逻辑层分别定义一族接口,业务逻辑层不依赖具体的数据访问层,而是仅依赖数据访问层的接口族,表示层也一样,依赖业务逻辑层的接口族。如此一来,当要更换数据库时,就不必改写整个业务逻辑层,因为业务逻辑层里根本没有任何数据访问层中的具体类,而全是通过接口实现的。 3.1 职责划分 目前,在典型的三层架构中,对层次各自的职责划分并没有一个统一的规范,综合现有的成功实践和.NET平台的特殊性,在本文中将三层架构的职责划分如下: 数据访问层——负责与数据源的交互,即数据的插入、删除、修改以及从数据库中读出数据等操作。 业务逻辑层——负责系统领域业务的处理,负责逻辑性数据的生成、处理及转换。 表示层——负责接收用户的输入、将输出呈现给用户以及访问安全性验证。 4 系统设计 面向接口编程的多层架构开发模式下的航运物流管理信息系统模块见图1,在宏观上将整个系统分为以下几个模块:
图1 航运物流管理信息系统模块图 实体类模块(POJO)——一组实体类的集合,负责整个系统中数据的封装及传递。 数据访问层接口族(IDAO)——一组接口的集合,表示数据访问层的接口。 业务逻辑层接口族(IApp,IServer)——一组接口的集合,表示业务逻辑层的接口。 数据访问层模块(持久层)——一组类的集合,完成数据访问层的具体功能,实现数据访问层接口族。 业务逻辑层模块(App层,Server层)——一组类的集合,完成业务逻辑层的具体功能,实现业务逻辑层接口族。 表示层模块(UI层)——程序及可视元素的集合,负责完成表示层的具体功能。 IOC容器模块(类工厂)——负责依赖注入的实现。 辅助类模块(Common层)——完成全局辅助性功能。 依照上面各模块间交互关系此航运物流管理信息系统框架图如图2。