api跟spi,oracle的jdbc驱动为什么不开源
api和spi,oracle的jdbc驱动为什么不开源今天下班后在看jdbc的规范,一不小心又走神,胡思乱想起来我想到一个
api和spi,oracle的jdbc驱动为什么不开源
今天下班后在看jdbc的规范,一不小心又走神,胡思乱想起来
我想到一个规范,其实既是API,也是SPI,只是看从哪个角度来看而已
API是Application Program Interface,应用编程接口
SPI是Service Provide Interface,服务提供接口
API是针对规范使用者来说的,调用
TCP端口默认是1521,这个是公开的。但是具体客户端和server通讯的协议格式是什么,这个是保密的。用户也不用关心,Oracle已经将连接的方法封装好了,提供给用户,比如针对java平台,就提供了ojdbc.jar(同时,也实现了jdbc的规范)
如果ojdbc.jar是开源的,那只要读一下源码,不就知道oracle开放接口的协议细节了吗。这是不必要的,而且也是不安全的
而MySQL当然也是类似的道理,但是MySQL自身都是开源的,所以驱动也没有道理不开源吧
从这个模式我想到,对于C/S架构的应用,其实server-api也就是这么回事:把怎么连接server、提供什么服务封装好,提供给客户端开发者
一般server-api都有2个部分:
1、公开的部分,规范一点的还配有详细的文档,让客户端开发者来调用
2、私有的部分,是用来处理底层细节的,如建立连接,处理协议等等,这部分不是提供给客户端开发者调用的,但是又必须包含在server-api里