应用程序接口概论
2020-06-22任亚飞罗桂林张勇
任亚飞 罗桂林 张勇
摘要:在实际生产生活中,用户使用两个或多个软件共同协作以满足业务需求,而不同软件数据结构、数据交互方式等不尽相同。应用程序接口是实现不同软件之间数据交流共享的桥梁。目前,应用程序接口技术日趋成熟,迫切需要对接口技术进行全面系统的总结。因此,本文主要从定义、设计原则、实现方式三个方面对应用程序接口进行概述,有助于初学者快速了解应用程序接口技术。
关键词:软件;接口;数据交流共享
中图分类号:TP311.11 文献标识码:A 文章编号:1007-9416(2020)04-0000-00
0 引言
现今,软件的应用已经渗透到了社会的各行各业,开发商更是加强开发力度,研发出各种软件来提高市场竞争力。但是,不同开发商都是基于自身的情况开发软件,导致不同软件之间的数据结构差异较大,大大提高了软件间交互的难度。接口技术应运而生,通过接口可以实现不同软件之间数据的交流共享,接口成为了不同软件沟通的桥梁,在整个软件系统中起着极为重要的作用。
1 应用程序接口概述
应用程序接口是软件系统不同功能模块之间衔接的约定,是不同软件之间数据交流共享的关键[1],在整个系统中占据着至关重要的位置。一个高质量的接口软件,不仅仅要满足不同结构的数据之间的交流共享,更要注重用户的体验流畅度与满意度。因此,接口软件应具备可靠性高、灵活性高、安全性高、耦合性低等诸多特性,以实现软件综合应用的目标。一个高质量的接口软件离不开科学的设计方案和复杂详细的实现方法。
2 应用程序接口设计原则
接口成为了软件市场不可或缺的重要组成部分,接口软件质量的好坏直接影响到其他软件的运行成效。因此,为保障开发出高质量的接口软件,接口要遵循一定的设计原则,包括面向对象原则、可扩展性原则、高健壮性和高容错性原则、满足不同用户的需求原则、遵守行业规范原则[1]等。
2.1 面向对象原则
应用程序接口设计首先要保证科学、有章可循。接口作为软件间通信的桥梁,面向对象的设计原则,使得接口设计功能明确、思路清晰、针对性强,极大地提高了开发效率,并且,复杂详细的接口程序能够降低软件间的耦合性。
2.2 可扩展性原则
接口的服务对象是实际使用中的软件,要满足软件的实际需要。用户在使用软件的过程中,会不断提出新的需求,软件系统会根据用户的需求进行升级,故而,接口也应该进行相应的升级才可满足软件的要求。由于接口是双方通信的桥梁,接口的升级直接影响到双方系统的正常运行,升级过程中会遇到一些不可預知的风险。可扩展性原则,能够很好地解决这类问题,该原则使得接口在设计过程中就考虑到将来可能出现的升级情况,具备一定的扩展性,完成接口一定时期的自主升级,降低了使用过程中升级的风险,减少开发成本。
2.3 高健壮性和高容错性原则
接口软件应用在生产生活中的各个领域,实际的生产生活环境复杂多变,接口运行环境不单一。高健壮性原则,使得接口软件能够适应复杂多变的环境,当实际环境发生突变时,接口软件能够迅速做出反应,不影响正常的系统运行。例如,接口运行环境出现突发的卡死、断电、断网等情况,当环境恢复后,接口软件能够自我恢复运行,保证系统的正常运作。除此之外,应用程序接口主要是对数据的接收与处理,海量的数据不能保证只有正确的、真实的数据,可能会掺杂错误的数据,这时,接口软件应该具备处理这些错误数据的能力,即高容错性。所以,高健壮性和高容错性原则是接口设计中最为重要的原则,它不仅使得接口软件在高效处理正确、真实数据的同时,也能准确判别出错误数据并做出相应处理,更使得接口软件具备一定抵抗未知风险的能力。
2.4 满足不同用户的需求原则
接口软件作为服务提供方,其存在的价值就是满足用户的需求,为用户提供其所需要的信息交互服务。因此,满足不同用户的需求原则,要求接口软件在设计过程中从实际出发,根据不同的用户,设计出相应的接口程序。例如,对于机场安检系统而言,需要设计出与离港系统、信息管理系统、行李处理系统等多个外部系统用户接口,完成旅客信息、行李信息、行李安检信息[2]等数据的交互,以此来满足机场用户的需求。
2.5 遵守行业规范原则
软件开发商一般都会基于自身的情况选用编程语言、开发平台等进行开发,进而规定自己的接口标准,从而导致不同的厂商使用不同的接口标准,使得软件之间数据交流共享更加困难,增加开发成本,降低用户体验流畅度和满意度。因此,应用程序接口开发必须考虑标准因素,基于自身实际情况,按照国家提出的统一接口标准进行开发[3],既可以净化市场上杂乱无章的接口标准,又可以提高开发效率,降低开发成本,增强用户体验流畅度和满意度。
3 应用程序接口实现方式
应用程序接口实现方式多种多样,每一种都有其优点及缺点。本节介绍几种常见的接口方式,并对其各自的优劣势进行分析。
3.1 Socket方式
Socket是最为常见的接口实现方式之一,实现快速的端到端通信。通信双方分别为客户端与服务端,建立连接后进行端到端的通信,实现数据的交互共享。Socket通信又包括基于TCP协议和UDP协议两种模式。基于TCP协议是面向连接的Socket方式,双方确认建立连接后再进行通信,数据传输安全可靠;基于UDP协议是无连接的Socket方式,双方无需确认连接状态,尽最大努力传输数据,传输速率快。Socket方式模型如图4.1所示。
3.2 API方式
使用API来实现软件数据的共享是目前在软件领域较为常见的接口实现方式。API使用简单、便利,但由于API是实现固定数据操作的功能,且调用者不可更改其操作功能,故而限制了其灵活性。软件市场上使用最广泛地API包括传统API、Web Service和RESTful。API方式模型如图4.2所示。
传统API模式,开发商预先对数据所需操作进行函数封装,且不向他人透漏具体操作过程。使用者引用开发商提供的DLL,调用相关方法即可。
Web Service模式,Web Service是一个可以通过Web调用的API,是一个面向服务编程的架构,它对编程语言、开发平台没有任何限制,可以实现不同编程语言之间通过Internet进行基于http协议的网络应用的数据交互,故而,交互双方无需借助任何第三方工具,使得数据共享更加便利、高效。
RESTful模式,REST是一种架构风格,相对于Web Service的面向服务,REST的核心是面向资源。REST模式有三条设计准则:
(1)网络上所有事务都可以抽象为资源;
(2)每一个资源都有唯一的资源标识,对资源的操作不会改变这些标识;
(3)所有的操作都是无状态的[4]。
由此可见,REST可以实现简化开发。对资源的操作只需要进行简单的创建、获取、更新和删除即可,无需进行任何的事务处理。操作的无状态说明REST不需要考虑上下文的约束,提高了系统的伸缩性。
3.3文件交互方式
文件交互方式,是软件开发双方协定好数据文件格式,利用固定的数据结构和数据文件[5],达到数据共享的目的,数据的结构可以是多种多样的。如常见的JSON格式、XML格式、TXT格式等等。数据的共享方式也不是唯一的,日前,软件市场应用最多的方式包括共享文件夹方式、FTP方式、SFTP方式等。文件交互方式模型如图4.3所示。
共享文件夹方式,双方协定,将某一个特定的文件夹设置为共享文件夹,双方都可访问该文件夹,即可以对该文件夹进行新建、删除、修改等一系列操作,然后将需要交互的协定好数据格式的数据文件放置该文件夹中,双方从中获取想要的特定文件即可,以达到数据共享的目的。
FTP(File Transfer Protocol)方式,双方协定,由某一方提供FTP服务,另一方通过使用该FTP服务,访问提供FTP服务的文件夹,同样可以对该文件夹进行创建、删除、修改等一系列操作,以达到数据的交互共享的目的。
SFTP(Secret File Transfer Protocol)方式是安全的FTP方式,在FTP的基础上对数据的传输进行加密,使得双方在向指定文件夹传输数据时更加安全。但是,由于SFTP采用了加密/解密的技术,故而,相对FTP的传输效率要有所降低。软件厂商多种多样,要求也不尽相同,SFTP不一定适合所有厂商的要求,因此,也可以在使用FTP方式的同时,运用第三方软件来辅助提高数据传输的安全性。
文件交互模式使得软件开发双方无需考虑编程语言的种类、运行平台的限制等因素,能够设计开发出更高质量的软件。
3.4 中间件方式
中间件方式,需要采用第三方软件作为中间件来完成双方的数据交互共享,以到达松耦合的目的。但是,由于依赖于第三方软件,所以,在使用过程会遇到一些不可控因素导致的故障等,不便于开发人员维护。中间件方式模型如图4.4所示。
中间数据库模式是一种重要的中间件模式。软件开发商协定,由任意一方提供可以访问的公用的数据库,双方商议可以访问的数据库中的数据规则权限等。这种模式下,双方都直接对数据库进行操作,开发比较灵活简单,有利于开发过程中对数据的操作。中间数据库就类似数据的中转站,双方通过它实现了数据的共享。但是,该模式具有局限性,只能对数据库中的数据进行操作,若双方需要交互共享数据库以外的数据,就比较困难[6]。故而,中间数据库模式不被广泛应用在软件开发中。
消息队列模式也是一种常见的中间件模式,该模式能够很好地解决耦合性问题。一方作为生产方,只需按照规则将需要交互的数据放置消息队列中即可,另一方作为消费方,按照规则前往消息队列中获取自己想要的数据即可,以达到双方数据共享的目的。期间,双方没有直接接触,对编程语言、运行平台没有任何限制,使得开发更加灵活便利。但是,也可能会因为消息队列自身的因素,导致双方无法正常的进行数据交互,给开发人员带来不可预知的困难。目前应用最为广泛的消息队列为IBM MQ,也有一些开源的消息队列,如RocketMQ、RabbitMQ、Kafka等,可供用户选择。
4 总结
本文较为详细介绍了应用程序接口的含义、设计原则及实现方式。应用程序接口是不同数据结构软件间沟通的桥梁,能够高效的将软件结合起来,促进软件系统的大规模使用。读者可参照本文介绍的接口设计原则及实现方式,依据各自行业软件的实际应用场景、针对实际操作需求、數据特点等编制科学的接口[1]设计方案,选取合理的实现方式,提高接口的可靠性、灵活性、安全性等特性,提高行业市场竞争力。应用程序接口的应用对软件行业发展具有深远意义。
参考文献
[1]冯艳丽.论计算机软件的数据接口[J].黑龙江科技信息,2013(21):140-140.
[2]罗桂林,李伟,张勇.基于MEF的机场安检系统外部接口平台的设计与实现[J].数字技术与应用,2017(10):138-140+142.
[3]杨霞.基于计算机软件数据接口的几种实现思路和应用分析[J].数字技术与应用,2015(10):68-69.
[4]张志,胡志勇.RESTful架构在Web Service中的应用[J].自动化技术与应用,2018,37(10):33-37.
[5]李玉荣.计算机软件数据接口的应用策略研究[J].科技展望,2015(19):9-9.
[6]王俊海.计算机软件数据接口的应用研究[J].通讯世界,2018(7):24-25.
收稿日期:2020-03-17
作者簡介:任亚飞(1991—),男,北京人,硕士,助理工程师,研究方向:安全检查系统设计。
Introduction of Application Programming Interface
REN Ya-fei, LUO Gui-lin, ZHANG Yong
(The First Research Institute of the Ministry of Public Security, Beijing 102200)
Abstract: In actual production and real life, users use two or more software to work together to meet business needs, data structures and data interaction methods are different between software. The application program interface is a bridge for data exchange and sharing between different software. At present, the application program interface technology is becoming more and more mature, and a comprehensive and systematic summary of the interface technology is urgently needed. Therefore, this paper mainly summarizes the application program interface from the three aspects of definition, design principles, and implementation methods, which helps beginners quickly understand the application program interface technology.
Key words: software;interface;data exchange and sharing