Provider Policy与Consumer Policy在bnd中的区别
首先需要了解的是bnd的相关知识:
1. API(也就是接口),
2. API Provider(接口的实现)
3. API Consumer( 接口的使用者)
OSGi中的一个版本有4个部分:
major 1
minor 1.1
micro 1.1.1
qualifier 1.1.1.qualifier
主版本 1
次版本 1.1
微版本 1.1.1
限定符 1.1.1.qualifier
主版本 破坏前后兼容性变化
次版本 向后兼容性变化
微版本 bug的修复(非API变化)
限定符 新的构建
Provider Policy其实就是接口实现的版本控制策略,API Provider需要导入API所在的包,那么它的版本变化是随着API所在包的次版本而变化的,例如如果API中添加一个新的方法(次版本发生变化),那么API Provider必须实现这个方法,要不然以后新的客户端调用这个方法时候,就没有实现。
Consumer Policy就是接口调用者的版本控制策略, Consumer Policy也需要导入API所在的包,它的版本变化是随着API所在包的主版本而变化的,因为即使API中添加了一个新方法,它也用不上,编译中也不会出现错误。但是如果API中删除一个方法(主版本发生变化),它就要发生变化了,因为它原来调用的方法可能已经被删除了,编译也就不能通过了。
以上,终于把这个以前困扰自己的问题解决了。
附上官方文档链接:http://bnd.bndtools.org/chapters/170-versioning.html
Provider Policy与Consumer Policy在bnd中的区别的更多相关文章
- 关闭provider进程或者consumer进程后,会发生什么?
下图是 provider,consumer 和注册中心之间的拓扑图: provider,consumer 以及管理控制台都是 zookeeper 的客户端,所以都和 zk 建立了tcp连接. 以接口 ...
- js中== 和===中的区别
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...
- continue语句在for语句和while语句中的区别
while语句的形式: while( expression ) statement for语句的形式: for( expression1; expression2;expression3 ) // ...
- Objective-C声明在头文件和实现文件中的区别
Objective-C声明在头文件和实现文件中的区别 转自codecloud(有整理) 调试程序的时候,突然想到这个问题,百度一下发现有不少这方面的问答,粗略总结一下: 属性写在.h文件中和在.m文件 ...
- 在oracle中where 子句和having子句中的区别
在oracle中where 子句和having子句中的区别 1.where 不能放在GROUP BY 后面 2.HAVING 是跟GROUP BY 连在一起用的,放在GROUP BY 后面,此时的作用 ...
- import,reload,__import__在python中的区别
import,reload,__import__在python中的区别 http://blog.csdn.net/five3/article/details/7762870 import作用:导入/引 ...
- 代码演示C#中string和StingBuilder内存中的区别
关于 string和StringBuilder的区别参考MSDN.本文用程序演示它们在内存中的区别,及其因此其行为不同. //Demo string memory model namespace C ...
- Lib作为“静态库”与“动态库”中的区别
Lib作为“静态库”与“动态库”中的区别 0. 前言: 什么是静态连接库: 静态库在链接阶段,会将汇编生成的目标文件.o与引用到的库一起链接打包到可执行文件中.因此对应的链接方式称为静态链接. 为什么 ...
- vue.js引用出错-script代码块放在head和body中的区别
这篇随笔是为了记录vue.js引用出错的原因,看到最后原来是vue.js代码放在head中不能正常使用,要最后发现要将其放在body中才行... 原来是js代码放在head和body中的区别问题,占个 ...
随机推荐
- Ionic 选择图片上传
1.添加插件 1.1 安装ngcordova 1.2 安装选择图片插件 1.3 安装上传插件 1.4查看安装插件集合 2.html 代码 <div class="item item-i ...
- 你真的了解ES6的promise吗?
promise是一个构造函数,是用来解决ajax回调地狱的问题.axios就是用promise封装的.用于解决ajax请求时出现的回调地狱的问题.异步伴随回调. const p1 = new Prom ...
- Asp.Net 应用程序在IIS发布后无法连接oracle数据库问题的解决方法
asp.net程序编写完成后,发布到IIS,经常出现的一个问题是连接不上Oracle数据库,具体表现为Oracle的本地NET服务配置成功:用 pl/sql 等工具也可以连接上数据库,但是通过浏览器中 ...
- 【BZOJ4161】Shlw loves matrixI
题目描述 给定数列 {hn}前k项,其后每一项满足 hn = a1h(n-1) + a2h(n-2) + ... + ak*h(n-k) 其中 a1,a2...ak 为给定数列.请计算 h(n),并将 ...
- 原生 js 实现摇一摇功能
参考此大牛的博客:https://blog.csdn.net/chclvzxx/article/details/46325053
- day65-test
目录 一.点击事件控制标签颜色 二.实现点击次数,变换页面标签的颜色 三.周期性实现颜色的旋转变色 练习题 一.点击事件控制标签颜色 1.有 红.黄.蓝 三个按钮,以及一个200x200矩形框box, ...
- Hadoop集群中有哪些节点类型
- mybatis框架学习:
一.什么是框架 它是我们软件开发中的一套解决方案,不同的框架解决的是不同的问题 使用框架的好处: 框架封装了很多的细节,使开发者可以使用极简的方式实现功能 大大提高开发效率 二.三层框架 表现层: 用 ...
- Layui 获取表单提交数据
HTML<div class="layui-card-header layuiadmin-card-header-auto"> <form class=" ...
- SSH免密登录设置
******配置主机之间的免密ssh登陆 假如 A 要登陆 B 在A上操作: (1)首先生成密钥对 ssh-keygen (提示时,直接回车即可) (2)再将A自己的公钥拷贝并追加到B的授权列 ...