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:1466519819@qq.com

头衔: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

Atitit 图像处理之编程之类库调用的接口api cli gui ws rest  attilax大总结.docx的更多相关文章

  1. python调用ansible接口API执行命令

    python版本:Python 2.6.6 ansible版本:ansible 2.3.1.0      下载地址:https://releases.ansible.com/ansible/ 调用脚本 ...

  2. Atitit 图像处理类库大总结attilax qc20

    Atitit 图像处理类库大总结attilax qc20 1.1. 选择与组合不同的图像处理类库1 1.2. Halcon 貌似商业工具,功能强大.1 1.3. Openvc  Openvc功能也是比 ...

  3. Atitit 图像处理 halcon类库的使用  范例边缘检测 attilax总结

    Atitit 图像处理 halcon类库的使用  范例边缘检测 attilax总结 1.1. 安装halcon11 ..体积大概1g压缩模式1 1.2. Halcon的科技树1 1.3. 启动 &qu ...

  4. Atitit 图像处理 调用opencv 通过java  api   attilax总结

    Atitit 图像处理 调用opencv 通过java  api   attilax总结 1.1. Opencv java api的支持 opencv2.4.2 就有了对java api的支持1 1. ...

  5. Atitit 图像处理 常用8大滤镜效果 Jhlabs 图像处理类库 java常用图像处理类库

    Atitit 图像处理 常用8大滤镜效果 Jhlabs 图像处理类库 java常用图像处理类库1.1. 5种常用的Photoshop滤镜,分别针对照片的曝光.风格色调.黑白照片处理.锐利度.降噪这五大 ...

  6. Atitit 图像处理类库安装与安装模式的前世今生与未来大趋势attilax总结.docx

    Atitit 图像处理类库安装与安装模式的前世今生与未来大趋势attilax总结.docx 1. 安装的原理,主要是解压,复制,设置三大步1 2. 目前我们常见的三大种安装模式,二进制模式与源码安装模 ...

  7. Atitit 图像处理类库 halcon11  安装与环境搭建attilax总结

    Atitit 图像处理类库 halcon11  安装与环境搭建attilax总结 正常安装软件,安装前请先退出其它一切正在运行的程序. 先安装halcon-10.0-windows.exe.安装完成后 ...

  8. Atitit 图像处理的心得与疑惑 attilax总结

    Atitit 图像处理的心得与疑惑 attilax总结 1.1. 使用类库好不好??还是自己实现算法1 1.2. 但是,如果遇到类库体积太大,后者没有合适的算法,那就只能自己开发算法了1 1.3. 如 ...

  9. Atitit.编程语言新特性 通过类库框架模式增强 提升草案 v3 q27

    Atitit.编程语言新特性 通过类库框架模式增强 提升草案 v3 q27 1. 修改历史2 2. 适用语言::几乎所有编程语言.语言提升的三个渠道::语法,类库,框架,ide2 2.1. 单根继承  ...

随机推荐

  1. cocos2d-js Shader系列3:多重纹理 multiple textures multiple samplers

    上一篇,我们学习了怎么便捷的控制sprite的颜色,而这个都是默认一个texture的,如果要实现类似mask的效果,或者更个性化的多纹理效果,怎么实现呢? 这就是这一节需要介绍的内容. 例如上图的效 ...

  2. 〖Android〗Android源代码所有目录生成的Target(编译生成文件反查)

    => build/tools/zipalign: out/host/linux-x86/bin/zipalign (host) => build/tools/atree: out/host ...

  3. 〖Android〗ant build android project, setting android.jar precedence

    最近公司的一个项目中,新增了classes.jar包,与android.jar有冲突,必须得在加载android.jar前行加载classes.jar: 在持续集成环境中须使用ant编译,classe ...

  4. 【shell】创建长目录,目录存在则忽略,缺失则创建

    有时候,我们需要创建一个空目录树,如果给定路径包含目录,那么还必须检查这些目录是否存在: mkdir –p /qinys/oliver/tmp/ 执行上述命令即可创建长目录,并且有则忽略,无则创建原则 ...

  5. Npoi导出excel整理(附源码)

    前些日子做了一个简单的winform程序,需要导出的功能,刚开始省事直接使用微软的组件,但是导出之后发现效率极其低下,绝对像web那样使用npoi组件,因此简单的进行了整理,包括直接根据DataTab ...

  6. Xamarin.Android之SQLite.NET ORM

    一.前言 通过<Xamarin.Android之SQLiteOpenHelper>和<Xamarin.Android之ContentProvider>的学习,我们已经掌握了如何 ...

  7. Axure 万年历(日期选择下拉文本框)

    百度网盘:http://pan.baidu.com/s/1c1ZjUPq 点击“图1”可呈现出“图2”的效果.(已实现模板化功能,不用去研究去为什么,直接使用即可)

  8. IF函数

    语法:IF(logical_test,value_if_true,value_if_false) logical_test:表示计算结果为 TRUE 或 FALSE 的任意值或表达式 value_if ...

  9. Oracle Tuxedo工作站客户端与服务端的样例程序

    服务端代码: #include <stdio.h> #include <stdlib.h> #include <string.h> #include <cty ...

  10. java struts2入门学习实例--用户注册和用户登录整合

    需求: 1.用户注册(user_register.jsp)-->注册成功(UserRegister.action)-->显示注册信息(register_success.jsp)2.用户登录 ...