Atitit 图像处理之编程之类库调用的接口api cli gui ws rest attilax大总结.docx
1. 为什么需要接口调用??1
1.1. 为了方便集成复用模块类库1
1.2. 嫁接不同的语言与类库,以及嵌入dsl1
1.3. 方便跨机器,跨开发板,跨硬件,跨运行环境的代码复用2
2. 接口api的历史2
2.1. 发展历程2
2.2. API 这个类库默认提供的接口,要求同语言调用一般2
2.3. Cli接口 命令行接口。单机跨语言接口(推荐比较常用)3
2.4. 图形用户接口(GUI),用来调用没有开放其他接口的软件与类库。。比如photoshop等。3
2.5. Ws接口(不推荐)webserive3
2.6. Rest接口(推荐,跨机器接口)3
3. 如何制作接口 使用adapter设计模式3
3.1. 制作wrap包装接口3
3.2. 使用包装接口技术,制作api2cli接口。。Cli2rest接口3
4. 其他接口4
5. 接口通讯方式:4
6. 接口的数据交换4
6.1. 参考资料5
1. 为什么需要接口调用??
1.1. 为了方便集成复用模块类库
比如。我用的xx语言,我要调用其他语言编写的类库怎么办???
1.2. 嫁接不同的语言与类库,以及嵌入dsl
比如图像处理中,我们知道有名的类库opencv halcon matlab等。还有个jhlabs 等类库
编程语言的发展,从机器汇编语言,到native编译语言(c c++) 到 vm编译语言 ( c# java) 到script脚本语言(js python php等) 再到 dsl语言。。
接口使得我们可以分别自由的组合连接各种语言与类库,因为性能因素,类库往往使用性能高的语言编写。调用的时候,使用高层语言又方便快捷。。
方便嵌入dsl,编程语言的趋势dsl。。图像处理是个很专业的领域,适合dsl。。类似的还有界面ui语言h5 ,数据处理sql,图像处理dsl目前halcon matlab用的脚本等。。
1.3. 方便跨机器,跨开发板,跨硬件,跨运行环境的代码复用
2. 接口api的历史
2.1. 发展历程
早在上个世纪的70年代,Digital Research公司的Gary Kildall为微型计算机首创了世界上第一个实用的软件API。这个初生的API大致上有20多个对操作系统的简单函数调用组成,这个操作系统就是CP/M――那时可是相当的简单和粗糙,而同样简单的API却让整个计算机世界发生了重大变化。
随后由比尔·盖茨等开发的MS-DOS操作系统全盘拷贝了CP/M及其API,并在这些API的基础之上又增加了一些简单特性,务实的比尔·盖茨将Kildall的发明变成了巨大的商业应用并立刻让MS-DOS的API在软件开发中占据了主导地位。
在为微软的势力之外,Unix世界也发明了自己的API,这就是TCP/IP,有了它,网络之间就可以自由地通信了。TCP/IP首先在大学里获得了普遍的欢迎
2.2. API 这个类库默认提供的接口,要求同语言调用一般
如需跨语言调用,需要提供跨语言的类库wrap包装。。
比如opencv,默认c++接口,还提供了java python的api转接口,就可以默认使用这些语言搞开发。如果js要调用,就不可以直接调用此api了。
2.3. Cli接口 命令行接口。单机跨语言接口(推荐比较常用)
Cli接口是个单机跨语言接口,几乎所有语言都支持它。。
2.4. 图形用户接口(GUI),用来调用没有开放其他接口的软件与类库。。比如photoshop等。
2.5. Ws接口(不推荐)webserive
2.6. Rest接口(推荐,跨机器接口)
3. 如何制作接口 使用adapter设计模式
3.1. 制作wrap包装接口
比如常见的opencv只有c++ java python接口。如果要用js调用怎么办??可以使用python包装制作一个cli接口即可。。
3.2. 使用包装接口技术,制作api2cli接口。。Cli2rest接口
就可以实现跨语言,跨机器,跨开发板的,跨运行环境的调用。。
4. 其他接口
Corba接口
Socket 通讯
Ejb(不推荐)
Rim remote
消息队列(Message Queue)
5. 接口通讯方式:
接口基本采用了同步请求/应答方式、异步请求/应答方式、会话方式、广播通知方式、事件订阅方式、可靠消息传输方式、文件传输等通讯方式:
1、同步请求/应答方式:客户端向服务器端发送服务请求,客户端阻塞等待服务器端返回处理结果;
2、异步请求/应答方式:客户端向服务器端发送服务请求,与同步方式不同的是,在此方式下,服务器端处理请求时,客户端继续运行;当服务器端处理结束时返回处理结果;
3、会话方式:客户端与服务器端建立连接后,可以多次发送或接收数据,同时存储信息的上下文关系;
4、广播通知方式:由服务器端主动向客户端以单个或批量方式发出未经客户端请求的广播或通知消息,客户端可在适当的时候检查是否收到消息并定义收到消息后所采取的动作;
5、事件订阅方式:客户端可事先向服务器端订阅自定义的事件,当这些事件发生时,服务器端通知客户端事件发生,客户端可采取相应处理。事件订阅方式使客户端拥有了个性化的事件触发功能,极大方便了客户端及时响应所订阅的事件;
6、文件传输:客户端和服务器端通过文件的方式来传输消息,并采取相应处理;
7、可靠消息传输:在接口通讯中,基于消息的传输处理方式,除了可采用以上几种通讯方式外,还可采用可靠消息传输方式,即通过存储队列方式,客户端和服务器端来传输消息,采取相应处理。
6. 接口的数据交换
一般通过cli的标准io流即可。。
或者json交换。
或者文件交换。。
或者通过数据库交互。
通过消息网关也可。
6.1. 参考资料
系统接口规范以及常见的接口技术概述和比较 - Dake - 博客频道 - CSDN.NET
作者:: 绰号:老哇的爪子claw of Eagle 偶像破坏者Iconoclast image-smasher
捕鸟王"Bird Catcher kok 虔诚者Pious 宗教信仰捍卫者 Defender Of the Faith. 卡拉卡拉红斗篷 Caracalla red cloak 万兽之王
简称:: Emir Attilax Akbar 埃米尔 阿提拉克斯 阿克巴
全名::Emir Attilax Akbar bin Mahmud bin attila bin Solomon bin adam Al Rapanui 埃米尔 阿提拉克斯 阿克巴 本 马哈茂德 本 阿提拉 本 所罗门 本亚当 阿尔 拉帕努伊
常用名:艾提拉(艾龙), EMAIL:[email protected]
头衔:uke总部o2o负责人,全球网格化项目创始人,
uke宗教与文化融合事务部部长, uke宗教改革委员会副主席
Emir Uke部落首席大酋长,
uke制度与重大会议委员会委员长,uke保安部首席大队长,uke制度检查委员会副会长,
uke 首席cto 奶牛科技首席cto , 软件部门总监 技术部副总监 研发部门总监主管 产品部副经理 项目部副经理
uke波利尼西亚区大区连锁负责人 汤加王国区域负责人 uke克尔格伦群岛区连锁负责人,莱恩群岛区连锁负责人,uke布维岛和南乔治亚和南桑威奇群岛大区连锁负责人
Uke软件标准化协会理事长理事长 Uke 数据库与存储标准化协会副会长
uke终身教育学校副校长 Uke医院 与医学院方面的创始人
Uke 户外运动协会理事长 度假村首席大村长 uke交友协会会长
uke出版社编辑总编
转载请注明来源:attilax的专栏 ?http://www.cnblogs.com/attilax/
--Atiend v4