[本文由John Wetherill撰写。]
在最近的微服务博客中,我讨论了创建和管理访问库的做法,建议“微服务提供者应负责构建和管理用于访问服务的客户端库”。
在上周的Get Some REST文章中,我深入盘点了Cloud Foundry REST API。
在这里,我将把使用Cloud Foundry“cf”CLI端的虽然不是数据库本身但却是策划Cloud Foundry API的完美例证的两者联系在一起,并且也是一种直接应用于微服务API的技术。
“ 获取某些REST”文章显示了使用Cloud Foundry REST API将应用程序推送到Cloud Foundry所需的精确调用。该API的使用灵活,功能强大且相对直接,但正如我所提到的,它需要做出错误处理,解析响应,获取各种实体的GUID,压缩应用程序目录和其他低级工作。API方法虽然简单,但其实并不像看起来那么容易。当你真的想要部署你的应用程序时,你需要花费很多时间在管道上工作。
比起前述种种,我们来看看这个如何:
cf push
这个简单的命令调用了“cf”端,它负责处理上面的所有细节。它处理错误,处理身份验证令牌,解析和解释响应,创建zip文件,向PaaS查询所需的信息,如域指引。以及更多功能。
全部只需用一个命令。
而这正是重点。“cf”命令是“调整”或“掌管”API的完美例子。虽然Cloud Foundry API功能强大且方便,但它们使用起来相当复杂,而在没有“cf”命令的情况下,任何想要使用此API的人都必须设置自己的访问实用程序或库。并保持它。并教育其他开发人员。随着基础API的发展,随着时间的推移而变化。
“cf”端提供了执行基本Cloud Foundry操作(例如推送应用程序)所需的各种API调用的标准包装。
对于大多数用途,最好使用cf工具与Cloud Foundry进行交互,而不是直接调用API。Cloud Foundry验收测试(或CAT社区)就是这样做的。这些测试可以确保Cloud Foundry自身的行为,而不是像调用低级别的REST调用那样直接包装cf命令。
这种使用大使设计模式的管理方法。
一个大使要做什么?在现实生活中,大使是一个国家或国家的官方特使或代表,作为该国与外国政府的联络人。大使了解当地法律,语言,习俗,解决交流沟通问题,以及如何应对可能发生的事件和情况。如果游客需要帮助,那么通过大使而不是自己处理复杂问题要高效得多。
与此类似,cf命令充当Cloud Foundry(特别是其REST API)的特使,因为它了解如何与其通信,响应特殊情况,解释响应以及遵循Cloud Foundry特性(又名协议)。
这个比喻可能会让事情变得有些松懈,但重要的是,图书馆或者工具能够处理所有的细节,减轻开发者的担忧。
“cf”命令不是Cloud Foundry可用的唯一访问库/实用程序。看看Java的cf端,通过Java允许相同的功能。
例如,下面是几行Java代码,它们调用(提供)cf Java客户端来输出每个空间的名称以及它所包含的组织:
for(CloudSpace space:client.getSpaces()){
System.out.printf(“%s \ t(%s)%n”,space.getName(),
。space.getOrganization()的getName());
}
请注意,Java客户端比cf cli稍低一点,因为它不提供单个调用来推送应用程序。也许更高级别的api被要求包装整个推送操作,但另一方面,也许不是:它足够简单地直接从Java调用“cf”cli客户端,并且如上所述,这是首选方法。
另一个值得关注的访问库是ActiveState的云代工客户端 JavaScript客户端。如果您想从浏览器中运行的应用程序管理Cloud Foundry,这个方法非常方便。像Java客户端一样,它还不具备直接推送应用程序的能力(Pull Requests welcome!),但它确实可以直接从JavaScript访问大多数Cloud Foundry功能。
所有这些:“cf”命令行客户端,Java客户端库和JavaScript客户端都是API管理的好例子,提供了一个高层次的低级操作包装,大多数开发人员不必担心。
我建议,如果可能的话,你开源你的访问库或实用程序。除了通常的开放源代码提供的许多好处之外,这允许API的消费者直接在源代码级看到API调用是如何进行的。
这有助于澄清规范的意图,在规范可能含糊或模糊的情况下。实际上,您正在为您的消费者提供参考实施,帮助了解规范,并避免分散和曲解。
管理API具有一些强大的优势,而不这样做就会有一些缺点。
单纯地要求您的服务的消费者/客户建立他们自己的访问库无疑增加了使用服务过程的负担,不过这是个只需通过构建您自己的访问库或实用程序即可轻松化解的入门障碍。
此外,如果您不管理您的API,则可以强制消费者编写自己的访问库。如果这样做的话,他们可能会误解你的规范,如果他们的访问库得到普及,其他消费者最终会依靠这种曲解,并出现存储残片。
无论如何,最好避免在社区中流传多种访问库和工具。
微服务并不是什么新东西,但微服务的使用和意识最近已经膨胀到爆炸了。自然而然地,随着所有这些消息的曝光,许多微服务相关的模式和实践正在迅速发展。调整/掌管API是cf命令(以及stackato CLI也)精确体现的一个例子。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有