ORACLE调用第三方接口二三事

这几天又在重看之前的代码发现有好多东西需要细致化。今天先说说接口。这里有几个问题需要回答:
何为接口?
接口工作流程是怎样的?
在调用接口前需要做些什么准备工作?
在调用接口时需要做那些事情?

下面我来一个个的回答。

接口是什么?

我们在编程的过程中经常会遇到一些二次开发和与第三方软件进行数据交互的情况。这里就会出现一个中间件------接口。其实这个接口的意思就是一个传递数据的通道,你只要将数据送入通道并可以被请求者获得就可以了。实质是经过封装的类。

常用接口分类

接⼝分为程序内部的接⼝和系统对外交流的传输接⼝。⼀般情况下,我们⼝头说的接⼝都是后者。
内部接口又包括:上层服务与下层服务接口、同级接口
按协议分:http、webservice、dubbo、socket等。

  • API:应用程序接口(API:Application Program Interface)

      应用程序接口是一组定义、程序及协议的集合,通过 API 接口实现计算机软件之间的相互通信。
      API 的一个主要功能是提供通用功能集。程序员通过调用 API 函数对应用程序进行开发,可以减轻编程任务。 
      API 同时也是一种中间件,为各种不同平台提供数据共享。
      就像 API ⽂档基本上就是使⽤说明书,API接⼝可以简单理解成“应⽤程序使⽤接⼝”。
      根据单个或分布式平台上不同软件应用程序间的数据共享性能,可以将 API 分为四种类型:
      远程过程调用(RPC):通过作用在共享数据缓存器上的过程(或任务)实现程序间的通信。
      标准查询语言(SQL):是标准的访问数据的查询语言,通过数据库实现应用程序间的数据共享。
      文件传输:文件传输通过发送格式化文件实现应用程序间数据共享。
      信息交付:指松耦合或紧耦合应用程序间的小型格式化信息,通过程序间的直接通信实现数据共享。
    
  • WebService是一种跨编程语言、跨操作系统平台的远程调用技术。主要基于:HTTP+ XML(WSDL)方式。

      远程调用技术:远程调用是指一台设备上的程序A可以调用另一台设备上的方法B。
      Webservice是系统对外的接⼝,你要从别的⽹站或服务器上获取资源或信息,别⼈肯定不会把数据库共享给你,他只能给你提供⼀个他们写好的⽅法来获取数据,你引⽤他提供的接⼝就能使⽤他写好的⽅法,从⽽达到数据共享的⽬的。
      比如,天气预报系统,淘宝网,校内网,百度等把自己的系统服务以WebService服务的形式暴露出来,让第三方网站和程序可以调用这些服务功能,这样扩展了自己系统的市场占有率。
      跨编程语言:是指服务端、客户端程序的编程语言可以不同。	
      跨操作系统平台:是指服务端、客户端可在不同的操作系统上运行。
      
      webservice接口和http(httpclient)接口区别:
      1、基于不同协议:HTTPService基于http协议,而WebService基于soap协议;
      2、处理数据效率不同:HTTPService效率较高,WebService能处理较复杂的数据类型。
      http协议支持客户/服务器模式,简单快速,客户向服务器请求服务时,只需传送请求方法和路径灵活,http允许传输任意类型的数据对象。无连接,即限制每次连接只处理一个请求,可以节省传输时间。
      3、跨域的处理:HttpService方式不能处理跨域,如果调用一个其它应用的服务就要用webService
      简单说httpservice通过post和get得到你想要的东西
      webservice就是使用soap协议得到你想要的东西,相比httpservice能处理些更加复杂的数据类型。
      当你要调用一个你本服务的内容的时候,不涉及到跨域的问题,你可以使用HttpService的方式。
      如果,你需要在后台调用一个其它应用的服务,这个时候,你必须要用webService的方式来调用。
    
  • HTTP接⼝:基于HTTP协议的开发接⼝.这个并不能排除没有使⽤其他的协议。

      Http协议是建立在TCP协议基础之上的,当浏览器需要从服务器获取网页数据的时候,会发出一次Http请求。
      Http会通过TCP建立起一个到服务器的连接通道,
      当本次请求需要的数据完毕后,Http会立即将TCP连接断开,这个过程是很短的。
      所以Http连接是一种短连接,是一种无状态的连接。
      
      HTTP协议的主要特点可概括如下:
      1.支持客户/服务器模式。
      2.简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
      3.灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
      4.无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
      5.无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。
    
  • RPC接⼝:Remote Procedure Calls 远程过程调⽤ (RPC)

      是⼀种协议,程序可使⽤这种协议向⽹络中的另⼀台计算机上的程序请求服务。
      由于使⽤ RPC 的程序不必了解⽀持通信的⽹络协议的情况,因此,RPC 提⾼了程序的互操作性。
      在 RPC 中,发出请求的程序是客户程序,⽽提供服务的程序是服务器。
      RPC(远程过程调⽤)是⼀项⼴泛⽤于⽀持分布式应⽤程序(不同组件分布在不同计算机上的应⽤程序)的技术。
      RPC的主要⽬的是为组件提供⼀种相互通信的⽅式,使这些组件之间能够相互发出请求并传递这些请求的结果,没有语⾔限制。
      consumer端无需关注provider端如何实现,只需在注册中心订阅即可到相应服务器请求服务,这样就实现了高性能和透明化。说到底,Dubbo接口就是一个分布式服务框架。
      如:Dubbo 接口是阿里巴巴开源的致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案,dubbo框架告别了传统的web service的服务模式,进而改用provider和consumer模式进行服务。
      Dubbo是一款高性能、轻量级的开源Java RPC框架,分为三层模型:business业务逻辑层(由我们自己来提供和实现一些接口配置信息)、RPC调用的核心层(负责封装和实现整个RPC的调用过程、负载均衡、集群容错、代理等核心功能)、Remoting (对网络传输协议和数据转化的一个封装)细分有10层模型来构成。
      它提供了六大核心能力:面向接口的远程方法(RPC)调用,智能容错和负载均衡,以及服务自动注册和发现、高度可扩展能力、运行期流量调度、可视化的服务治理和运维。
      可以在某个服务器集群中提供单一专注的服务,这样不与其他服务混杂,同时dubbo接口有SOA调度通过监控每台服务器而实现负载均衡。(五种负载均衡的策略:加权随机----通过区间的随机算法去获取一个目标服务器,可针对某一个服务器去增加权重从而去获得更大的一个调用可能性;最小活跃数----每个服务提供者对一个活跃数的active初始情况下所有服务者的活跃数都为0,每次收到请求活跃数+1,完成请求后再-1,在服务运行一段时间后性能好的服务提供者的处理请求的速度更快,因此活跃数下降的也越块,这时服务提供者就能优先获得新的请求;一致性HASH----根据同一个客户端请求通过一致性HASH算法会落到一个目标服务器上,只要请求的信息没有变化的情况下,它的请求永远会落到同一台目标服务器;加权轮询---按照目标服务器123123这种方式去轮询,加权是指可以针对目标服务器的某些性能好的节点去增加权重,从而使得这样一个服务器能够获得更多的调用;最短响应时间的权利随机----它会计算目标服务的请求响应时间,根据响应时间最短的服务去配置更高的权重,然后进行区间随机算法,从而得到一个目标服务器节点进行访问)
      
      
      
      Dubbo  与SpringCloud有什么区别?
      1、关注点
      Dubbo是SOA时代的产物,主要关注点在于服务的远程调用、流量分发、服务治理、流量控制等。
      SpringCloud是微服务架构时代,关注于微服务的整个生态的解决方案,依托于Spring和SpringBoot的生态两个框架的目标是不一致的。定位于服务治理,SpringCloud是微服务解决生态。
      2、底层基础
      底层使用Netty的NIO框架,是基于TCP协议进行传输,通过Hession等序列化的方式完成RPC的通信,
      SpringCloud是基于HTTP协议+REST风格的接口实现远程通信,HTTP请求会有更大的报文,占用的带宽会更多,效率比会更差些,但REST相比RPC会更加灵活,服务提供方和服务调用方只需要根据HTTP协议的一个契约完成通信。
      
      Dubbo 接口 与http 接口有什么区别?
      1、协议层区别
      HTTP ,HTTPS 使用的是 应用层协议 应用层协议:定义了用于在网络中进行通信和传输数据的接口
      DUBBO接口使用的是 TCP/IP是传输层协议 传输层协议:管理着网络中的端到端的数据传输;因此要比 HTTP协议快
      2、socket 层区别
      dubbo默认使用socket长连接,即首次访问建立连接以后,后续网络请求使用相同的网络通道
      http1.1协议默认使用短连接,每次请求均需要进行三次握手,而http2.0协议开始将默认socket连接改为了长连接
    
  • RMI:RMI(Remote Method Invocation,远程⽅法调⽤)RMI是针对于java语⾔的, RMI允许您使⽤Java编写分布式对象

  • RESTful : 简称 REST,是描述了⼀个架构样式的⽹络系统,其核⼼是⾯向资源,REST专门针对⽹络应⽤设计和开发⽅式,以降低开发的复杂性,提⾼系统的可伸缩性。

      REST提出设计概念和准则为:
      1.⽹络上的所有事物都可以被抽象为资源(resource)
      2.每⼀个资源都有唯⼀的资源标识(resource identifier),对资源的操作不会改变这些标识
      3.所有的操作都是⽆状态的
    

我常用的有Webservice、Httpservice和API.

接口工作流程是怎样的?

那是怎么工作的呢?接下来就是我要说的内容:

  • WebService
    • 工作原理

        WSDL:
        服务器首先用一套标准的方法向外界描述它所提供的服务的内容。它使用XML文档描述Web服务的标准,是Web服务的的接口定义语言,描述如何访问具体的接口。WSDL的全称是web service Description Language,是一种基于XML格式的关于web服务的描述语言。其主要目的在于web service的提供者将自己的web服务的所有相关内容,如所提供的服务的传输方式,服务方法接口,接口参数,服务路径等,生成相应的完全文档,发布给使用者。使用者可以通过这个WSDL文档,创建相应的SOAP请求消息,通过HTTP传递给webservice提供者;web服务在完成服务请求后,将SOAP返回消息传回请求者,服务请求者再根据WSDL文档将SOAP返回消息解析成自己能够理解的内容。包含3个基本属性:
         a. 如何访问服务:和服务交互的数据格式以及必要的协议。
         b. 服务在哪里: 协议相关的地址,比如url信息等
         c. 服务具有哪些功能: 服务提供的具体操作方法,=》就是你webservice中提供了哪些可调用的方法
         
         命名空间其主要目的通过加一个命名属性,使名称保持唯一性。WSDL有大量的使用命名空间的地方。本质上WSDL是一个XML文件,作为一个XML文件,为了区别同名的元素,就需要采用命名空间的概念。
         
         SOAP:
          客户端需要以一种标准的协议来调用此服务.。它是一种标准化的传输消息的XML消息格式形式提供简单、轻量、用于在分散或分布式环境中交换结构化和类型信息的机制。SOAP消息的基本结构通过HTTP协议传递XML数据。简单的说就是一个基于XML的协议。SOAP为simple object access protocoll的缩写,简单对象访问协议.。
         UDDI:
         服务提供者将服务内容放在一个公共的网址让大家查询。将web service进行UDDI注册发布,UDDI是一种创建注册表服务的规范,以便大家将自己的web service进行注册发布供使用者查找.然而当服务提供者想将自己的web service向全世界公布,以便外部找到其服务时,那么服务提供者可以将自己的web service注册到相应的UDDI商用注册网站,目前全球有IBM等4家UDDI商用注册网站。因为WSDL文件中已经给定了web service的地址URI,外部可以直接通过WSDL提供的URI进行相应的web service调用。所以UDDI并不是一个必需的web service组件,服务方完全可以不进行UDDI的注册。原理详细描述:
         无论使用什么工具、语言编写 WebService,都可以使用 SOAP 协议通过 HTTP 调用,其工作原理相同。创建 WebService 后,将其暴露给Web客户,任何语言、平台的客户都可以阅读其  WSDL 文档,以调用 WebService 。客户可以根据 WSDL 描述文档生成一个 SOAP 请求信息。 WebService 部署在Web服务器( 如IIS )上,客户生成的 SOAP 请求会被嵌入在一个 HTTP 请求中并发送到Web服务器,Web服务器(IIS)再将请求转发给 WebService 请求处理器。
         对于.Net而言,WebService请求处理器则是一个 .NET Framework 自带的 ISAPI Extension。Web请求处理器用于解析收到的SOAP请求,调用 WebService,然后生成相应的SOAP应答。Web服务器得到SOAP应答后,在通过HTTP应答的方式将其返回给客户端。     
      
    • 工作流程

        阅读WSDL文档发送请求,然后调用Web服务器最后返回给客户端,这和普通的http请求一样,请求->处理->响应,与普通的请求不一样的就是webservice请求中有一个WSDL文档和SOAP协议,以及.NET Framework自带的Web Service请求处理器 ISAPI Extension。
      
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Python中,我们可以使用第三方库cx_Oracle来读取Oracle数据库。首先,需要安装cx_Oracle库,并确保已经设置好了Oracle客户端。接下来,可以按照以下步骤读取Oracle数据库: 1. 首先,导入必要的库: ```python import cx_Oracle ``` 2. 使用cx_Oracle.connect()函数连接到Oracle数据库,需要提供数据库的用户名、密码和连接字符串: ```python connection = cx_Oracle.connect('username', 'password', 'connection_string') ``` 请将'username'替换为您的Oracle数据库用户名,'password'替换为您的密码,'connection_string'替换为正确的连接字符串。 3. 创建一个游标对象,用于执行SQL查询: ```python cursor = connection.cursor() ``` 4. 使用cursor.execute()方法执行您的SQL查询。例如,如果您要查询名为"employees"的表中的所有记录,可以执行以下代码: ```python cursor.execute('SELECT * FROM employees') ``` 5. 使用cursor.fetchall()方法获取查询结果。例如,如果您想将查询结果存储在一个变量中: ```python results = cursor.fetchall() ``` 现在,您可以使用results变量来处理查询结果。 6. 最后,不要忘记关闭游标和数据库连接: ```python cursor.close() connection.close() ``` 这样就完成了从Oracle数据库中读取数据的过程。请确保您已经按照上述步骤正确安装和配置了cx_Oracle库,并提供了正确的数据库连接信息。<span class="em">1</span><span class="em">2</span> #### 引用[.reference_title] - *1* [Python从Oracle数据库中获取数据——fetchall(),fetchone(),fetchmany()函数功能分析](https://blog.csdn.net/qq_28268527/article/details/128629153)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [使用Python代码调用命令行来执行MySQL数据库备份和恢复操作](https://download.csdn.net/download/weixin_44609920/88222336)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值