近期,有客户提及:你们有没有对接技术相关的介绍,不同系统之间的对接技术,现在企业内部系统比较多,有自主开发的,有外部采购的,所以我们想了解一下对接技术相关的信息。
小知马不停蹄的做了下功课, 整理了相关信息,详情如下!
一般情况下,常见的不同系统之间的对接方式有两种,一种是消息集成,另外一种是 API 调用,两者各有利弊。
消息,是一个数据通道,可以对数据进行加密或对数据通道进行加密,安全性高,但是在进行大量数据传输时,可能会存在延迟。
API,是调用 http 接口,知行 EDI 系统可以封装好接口,开放 API 供其它系统调用,不过这种方式就是安全性没那么高,但是具有实时性。
总的来说,消息传输具有高安全,高延迟的特点,而 API 则相反,具有低安全,低延迟的特点。如果是组织内部系统的对接,对数据的实时性要求较高,建议采用 API 调用方式,如果是组织内部和外部进行系统对接,对数据的安全性要求较高,建议采用消息的方式。
小知带大家一起了解下常用系统对接技术,本文主要提及 EDI,Web 和 WebService,REST和JDBC。这五种对接方式,较于 EDI,大家应该更熟悉后面四种技术。其中,EDI 是 属于消息集成方式; Web 是 EDI 的一种临时替代方案; WebService,REST 和 JDBC 均属于 API 调用集成方式。
用于和外部交易伙伴做核心业务数据传输(解决的是企业间的问题)属于消息集成方式。
EDI 自 20 世纪 60 年代以来就被广泛使用,但如今它正在被应用于更多新的用途,使供应链自动化、数字转换成为可能,甚至成为工作流和业务流程自动化的一个关键部分。点击下方链接,对 EDI 进行全面的解读,帮您短时间内快速掌握 EDI 基础知识。
扩展阅读: EDI 是什么?
如您想了解更多关于 EDI 知识,可联系 EDI 通信专家小知,很乐意为您答疑解惑。
这里的 Web 是指一个 Web 页面,类似于 Portal 网站,通过提供指定用户及密码的方式,授权用户登录 Web 网页登录,去查看相关业务数据,并填写表单数据,提交给后台。 Web 方式是 EDI 的一种替代方案,主要提供给不具备 EDI 能力的合作伙伴使用,以此实现业务数据传输。
基于小知过往的实施经验,了解到提供 Web 方式的,汽车行业主机厂居多,比如 Tesla/特斯拉,上汽大众等。
WebService的特征:
WebService核心组件:
WebService 之间的调用是跨语言的调用,发送 Http 请求,使用的数据格式是 XML 格式。
假设一个 Web Service A 提供允许其他应用程序通过 URL 获取用户信息的功能:[GET] http://www.abc.com/{id}。id是用户的唯一标识符,请求此 URL 将获得用户信息。现在假设浏览器、手机、桌面应用程序的用户都要获取服务 A 提供的用户信息,这三者只需要请求服务 A 提供的 URL 地址,并输入用户 id 信息即可。至于这三个不同客户端的实现方式(编程语言)是什么与服务 A 没有任何关系,只要能够解析出服务 A 返回的 XML 文档即可。这样,应用程序之间交换数据就可以不用依赖于具体的语言和环境。这就好比不同国家不同语言的人,只要能够知晓对方语言的语法结构,两个人就可以进行交流。
目前,WebService 主要有两大流派:
WebService 属于 API 调用集成方式。
REST 是一种设计 API 的模式。最常用的数据格式是 JSON。由于 JSON 能直接被 JavaScript 读取,所以,以 JSON 格式编写的 REST 风格的 API 具有简单、易读、易用的特点。
REST 是Representational State Transfer(表现层状态转移)的缩写,它是由罗伊·菲尔丁(Roy Fielding)提出的,是用来描述创建 HTTP API 的标准方法的,他发现这四种常用的行为(查看(view),创建(create),编辑(edit)和删除(delete))都可以直接映射到 HTTP 中已实现的 GET,POST,PUT 和 DELETE 方法。
REST 是面向资源的,这个概念非常重要,而资源是通过 URI 进行暴露。URI 的设计只要负责把资源通过合理方式暴露出来就可以了。对资源的操作与它无关,操作是通过 HTTP 动词来体现,所以 REST 通过 URI 暴露资源时,会强调不要在 URI 中出现动词。比如:左边是错误的设计,而右边是正确的。
GET /rest/api/getDogs --> GET /rest/api/dogs 获取所有小狗狗
GET /rest/api/addDogs --> POST /rest/api/dogs 添加一个小狗狗
GET /rest/api/editDogs/:dog_id --> PUT /rest/api/dogs/:dog_id 修改一个小狗狗
GET /rest/api/deleteDogs/:dog_id --> DELETE /rest/api/dogs/:dog_id 删除一个小狗狗
左边的这种设计,很明显不符合 REST 风格,上面已经说了,URI 只负责准确无误的暴露资源,而 getDogs/addDogs…已经包含了对资源的操作,这是不对的。相反右边却满足了,它的操作是使用标准的 HTTP 动词来体现。
REST 很好地利用了 HTTP 本身就有的一些特征,如 HTTP 动词、HTTP 状态码、HTTP 报头等等,REST API 是基于 HTTP 的,所以你的 API 应该去使用 HTTP 的一些标准。这样所有的 HTTP 客户端(如浏览器)才能够直接理解你的 API(当然还有其他好处,如利于缓存等等)。REST 实际上也非常强调应该利用好 HTTP 本来就有的特征,而不是只把 HTTP 当成一个传输层这么简单了。
HTTP 动词
实际上,这四个动词实际上就对应着增删改查四个操作,这就利用了 HTTP 动词来表示对资源的操作。
通俗的讲 REST 就是:
更简洁的来说,就是用 URL 定位资源,用 HTTP 描述操作。
REST 是属于 API 调用集成方式。
JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行 SQL 语句的 Java API,可以为多种关系数据库提供统一访问,它由一组用 Java 语言编写的类和接口组成。JDBC 提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序。
JDBC 是对数据库操作的接口抽象,而不同数据库厂商的数据库驱动程序则对应 JDBC 接口实现,通过抽象出 JDBC 接口,应用程序和实际的数据库驱动,即JDBC实现解耦。
常用的 JDBC 接口包括:Driver 接口、Connection 接口、Statement 接口、ResultSet 接口。
JDBC API 允许用户访问任何形式的表格数据,尤其是存储在关系数据库中的数据。
执行流程:
JDBC是属于 API 调用集成方式。
以上的资料集锦,希望对阅读本文的有缘人提供一定的帮助。如有描述不妥或有争议的地方,欢迎一起探讨。